auto import from //depot/cupcake/@135843
diff --git a/src/org/apache/commons/codec/BinaryDecoder.java b/src/org/apache/commons/codec/BinaryDecoder.java
deleted file mode 100644
index 7aebabf..0000000
--- a/src/org/apache/commons/codec/BinaryDecoder.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec;
-
-/**
- * Defines common decoding methods for byte array decoders.
- *
- * @author Apache Software Foundation
- * @version $Id: BinaryDecoder.java,v 1.10 2004/06/15 18:14:15 ggregory Exp $
- */
-public interface BinaryDecoder extends Decoder {
-
-    /**
-     * Decodes a byte array and returns the results as a byte array. 
-     *
-     * @param pArray A byte array which has been encoded with the
-     *      appropriate encoder
-     * 
-     * @return a byte array that contains decoded content
-     * 
-     * @throws DecoderException A decoder exception is thrown
-     *          if a Decoder encounters a failure condition during
-     *          the decode process.
-     */
-    byte[] decode(byte[] pArray) throws DecoderException;
-}  
-
diff --git a/src/org/apache/commons/codec/BinaryEncoder.java b/src/org/apache/commons/codec/BinaryEncoder.java
deleted file mode 100644
index 52859ed..0000000
--- a/src/org/apache/commons/codec/BinaryEncoder.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec;
-
-/**
- * Defines common encoding methods for byte array encoders.
- * 
- * @author Apache Software Foundation
- * @version $Id: BinaryEncoder.java,v 1.10 2004/02/29 04:08:31 tobrien Exp $
- */
-public interface BinaryEncoder extends Encoder {
-    
-    /**
-     * Encodes a byte array and return the encoded data
-     * as a byte array.
-     * 
-     * @param pArray Data to be encoded
-     *
-     * @return A byte array containing the encoded data
-     * 
-     * @throws EncoderException thrown if the Encoder
-     *      encounters a failure condition during the
-     *      encoding process.
-     */
-    byte[] encode(byte[] pArray) throws EncoderException;
-}  
-
diff --git a/src/org/apache/commons/codec/Decoder.java b/src/org/apache/commons/codec/Decoder.java
deleted file mode 100644
index 184920c..0000000
--- a/src/org/apache/commons/codec/Decoder.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec;
-
-/**
- * <p>Provides the highest level of abstraction for Decoders.
- * This is the sister interface of {@link Encoder}.  All
- * Decoders implement this common generic interface.</p>
- * 
- * <p>Allows a user to pass a generic Object to any Decoder 
- * implementation in the codec package.</p>
- * 
- * <p>One of the two interfaces at the center of the codec package.</p>
- * 
- * @author Apache Software Foundation
- * @version $Id: Decoder.java,v 1.9 2004/02/29 04:08:31 tobrien Exp $
- */
-public interface Decoder {
-
-    /**
-     * Decodes an "encoded" Object and returns a "decoded"
-     * Object.  Note that the implementation of this
-     * interface will try to cast the Object parameter
-     * to the specific type expected by a particular Decoder
-     * implementation.  If a {@link java.lang.ClassCastException} occurs
-     * this decode method will throw a DecoderException.
-     * 
-     * @param pObject an object to "decode"
-     * 
-     * @return a 'decoded" object
-     * 
-     * @throws DecoderException a decoder exception can
-     * be thrown for any number of reasons.  Some good
-     * candidates are that the parameter passed to this
-     * method is null, a param cannot be cast to the
-     * appropriate type for a specific encoder.
-     */
-    Object decode(Object pObject) throws DecoderException;
-}  
-
diff --git a/src/org/apache/commons/codec/DecoderException.java b/src/org/apache/commons/codec/DecoderException.java
deleted file mode 100644
index f35c016..0000000
--- a/src/org/apache/commons/codec/DecoderException.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec;
-
-/**
- * Thrown when a Decoder has encountered a failure condition during a decode. 
- * 
- * @author Apache Software Foundation
- * @version $Id: DecoderException.java,v 1.9 2004/02/29 04:08:31 tobrien Exp $
- */
-public class DecoderException extends Exception {
-
-    /**
-     * Creates a DecoderException
-     * 
-     * @param pMessage A message with meaning to a human
-     */
-    public DecoderException(String pMessage) {
-        super(pMessage);
-    }
-
-}  
-
diff --git a/src/org/apache/commons/codec/Encoder.java b/src/org/apache/commons/codec/Encoder.java
deleted file mode 100644
index fa339ee..0000000
--- a/src/org/apache/commons/codec/Encoder.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec;
-
-/**
- * <p>Provides the highest level of abstraction for Encoders.
- * This is the sister interface of {@link Decoder}.  Every implementation of
- * Encoder provides this common generic interface whic allows a user to pass a 
- * generic Object to any Encoder implementation in the codec package.</p>
- *
- * @author Apache Software Foundation
- * @version $Id: Encoder.java,v 1.10 2004/02/29 04:08:31 tobrien Exp $
- */
-public interface Encoder {
-    
-    /**
-     * Encodes an "Object" and returns the encoded content 
-     * as an Object.  The Objects here may just be <code>byte[]</code>
-     * or <code>String</code>s depending on the implementation used.
-     *   
-     * @param pObject An object ot encode
-     * 
-     * @return An "encoded" Object
-     * 
-     * @throws EncoderException an encoder exception is
-     *  thrown if the encoder experiences a failure
-     *  condition during the encoding process.
-     */
-    Object encode(Object pObject) throws EncoderException;
-}  
-
diff --git a/src/org/apache/commons/codec/EncoderException.java b/src/org/apache/commons/codec/EncoderException.java
deleted file mode 100644
index 0e202c1..0000000
--- a/src/org/apache/commons/codec/EncoderException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec;
-
-/**
- * Thrown when there is a failure condition during the encoding process.  This
- * exception is thrown when an Encoder encounters a encoding specific exception
- * such as invalid data, inability to calculate a checksum, characters outside of the 
- * expected range.
- * 
- * @author Apache Software Foundation
- * @version $Id: EncoderException.java,v 1.10 2004/02/29 04:08:31 tobrien Exp $
- */
-public class EncoderException extends Exception {
-
-    /**
-     * Creates a new instance of this exception with an useful message.
-     * 
-     * @param pMessage a useful message relating to the encoder specific error.
-     */
-    public EncoderException(String pMessage) {
-        super(pMessage);
-    }
-}  
-
diff --git a/src/org/apache/commons/codec/StringDecoder.java b/src/org/apache/commons/codec/StringDecoder.java
deleted file mode 100644
index 9b1a0cd..0000000
--- a/src/org/apache/commons/codec/StringDecoder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec;
-
-/**
- * Decodes a String into a String. 
- *
- * @author Apache Software Foundation
- * @version $Id: StringDecoder.java,v 1.9 2004/02/29 04:08:31 tobrien Exp $
- */
-public interface StringDecoder extends Decoder {
-    
-    /**
-     * Decodes a String and returns a String.
-     * 
-     * @param pString a String to encode
-     * 
-     * @return the encoded String
-     * 
-     * @throws DecoderException thrown if there is
-     *  an error conidition during the Encoding process.
-     */
-    String decode(String pString) throws DecoderException;
-}  
-
diff --git a/src/org/apache/commons/codec/StringEncoder.java b/src/org/apache/commons/codec/StringEncoder.java
deleted file mode 100644
index 46f5404..0000000
--- a/src/org/apache/commons/codec/StringEncoder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec;
-
-/**
- * Encodes a String into a String. 
- *
- * @author Apache Software Foundation
- * @version $Id: StringEncoder.java,v 1.9 2004/02/29 04:08:31 tobrien Exp $
- */
-public interface StringEncoder extends Encoder {
-    
-    /**
-     * Encodes a String and returns a String.
-     * 
-     * @param pString a String to encode
-     * 
-     * @return the encoded String
-     * 
-     * @throws EncoderException thrown if there is
-     *  an error conidition during the Encoding process.
-     */
-    String encode(String pString) throws EncoderException;
-}  
-
diff --git a/src/org/apache/commons/codec/StringEncoderComparator.java b/src/org/apache/commons/codec/StringEncoderComparator.java
deleted file mode 100644
index 6d29af2..0000000
--- a/src/org/apache/commons/codec/StringEncoderComparator.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec;
-
-import java.util.Comparator;
-
-/**
- * Strings are comparable, and this comparator allows 
- * you to configure it with an instance of a class
- * which implements StringEncoder.  This comparator
- * is used to sort Strings by an encoding scheme such
- * as Soundex, Metaphone, etc.  This class can come in
- * handy if one need to sort Strings by an encoded
- * form of a name such as Soundex.
- *
- * @author Apache Software Foundation
- * @version $Id: StringEncoderComparator.java,v 1.14 2004/06/21 23:24:17 ggregory Exp $
- */
-public class StringEncoderComparator implements Comparator {
-
-    /**
-     * Internal encoder instance.
-     */
-    private StringEncoder stringEncoder;
-
-    /**
-     * Constructs a new instance.
-     */
-    public StringEncoderComparator() {
-        // no init.
-    }
-
-    /**
-     * Constructs a new instance with the given algorithm.
-     * @param stringEncoder the StringEncoder used for comparisons.
-     */
-    public StringEncoderComparator(StringEncoder stringEncoder) {
-        this.stringEncoder = stringEncoder;
-    }
-
-    /**
-     * Compares two strings based not on the strings 
-     * themselves, but on an encoding of the two 
-     * strings using the StringEncoder this Comparator
-     * was created with.
-     * 
-     * If an {@link EncoderException} is encountered, return <code>0</code>.
-     * 
-     * @param o1 the object to compare
-     * @param o2 the object to compare to
-     * @return the Comparable.compareTo() return code or 0 if an encoding error was caught.
-     * @see Comparable
-     */
-    public int compare(Object o1, Object o2) {
-
-        int compareCode = 0;
-
-        try {
-            Comparable s1 = (Comparable) ((Encoder) this.stringEncoder).encode(o1);
-            Comparable s2 = (Comparable) ((Encoder) this.stringEncoder).encode(o2);
-            compareCode = s1.compareTo(s2);
-        } 
-        catch (EncoderException ee) {
-            compareCode = 0;
-        }
-        return compareCode;
-    }
-
-}
diff --git a/src/org/apache/commons/codec/binary/Base64.java b/src/org/apache/commons/codec/binary/Base64.java
deleted file mode 100644
index ea479e9..0000000
--- a/src/org/apache/commons/codec/binary/Base64.java
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.binary;
-
-import org.apache.commons.codec.BinaryDecoder;
-import org.apache.commons.codec.BinaryEncoder;
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.EncoderException;
-
-/**
- * Provides Base64 encoding and decoding as defined by RFC 2045.
- * 
- * <p>This class implements section <cite>6.8. Base64 Content-Transfer-Encoding</cite> 
- * from RFC 2045 <cite>Multipurpose Internet Mail Extensions (MIME) Part One: 
- * Format of Internet Message Bodies</cite> by Freed and Borenstein.</p> 
- *
- * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
- * @author Apache Software Foundation
- * @since 1.0-dev
- * @version $Id: Base64.java,v 1.20 2004/05/24 00:21:24 ggregory Exp $
- */
-public class Base64 implements BinaryEncoder, BinaryDecoder {
-
-    /**
-     * Chunk size per RFC 2045 section 6.8.
-     * 
-     * <p>The {@value} character limit does not count the trailing CRLF, but counts 
-     * all other characters, including any equal signs.</p>
-     * 
-     * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045 section 6.8</a>
-     */
-    static final int CHUNK_SIZE = 76;
-
-    /**
-     * Chunk separator per RFC 2045 section 2.1.
-     * 
-     * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045 section 2.1</a>
-     */
-    static final byte[] CHUNK_SEPARATOR = "\r\n".getBytes();
-
-    /**
-     * The base length.
-     */
-    static final int BASELENGTH = 255;
-
-    /**
-     * Lookup length.
-     */
-    static final int LOOKUPLENGTH = 64;
-
-    /**
-     * Used to calculate the number of bits in a byte.
-     */
-    static final int EIGHTBIT = 8;
-
-    /**
-     * Used when encoding something which has fewer than 24 bits.
-     */
-    static final int SIXTEENBIT = 16;
-
-    /**
-     * Used to determine how many bits data contains.
-     */
-    static final int TWENTYFOURBITGROUP = 24;
-
-    /**
-     * Used to get the number of Quadruples.
-     */
-    static final int FOURBYTE = 4;
-
-    /**
-     * Used to test the sign of a byte.
-     */
-    static final int SIGN = -128;
-    
-    /**
-     * Byte used to pad output.
-     */
-    static final byte PAD = (byte) '=';
-
-    // Create arrays to hold the base64 characters and a 
-    // lookup for base64 chars
-    private static byte[] base64Alphabet = new byte[BASELENGTH];
-    private static byte[] lookUpBase64Alphabet = new byte[LOOKUPLENGTH];
-
-    // Populating the lookup and character arrays
-    static {
-        for (int i = 0; i < BASELENGTH; i++) {
-            base64Alphabet[i] = (byte) -1;
-        }
-        for (int i = 'Z'; i >= 'A'; i--) {
-            base64Alphabet[i] = (byte) (i - 'A');
-        }
-        for (int i = 'z'; i >= 'a'; i--) {
-            base64Alphabet[i] = (byte) (i - 'a' + 26);
-        }
-        for (int i = '9'; i >= '0'; i--) {
-            base64Alphabet[i] = (byte) (i - '0' + 52);
-        }
-
-        base64Alphabet['+'] = 62;
-        base64Alphabet['/'] = 63;
-
-        for (int i = 0; i <= 25; i++) {
-            lookUpBase64Alphabet[i] = (byte) ('A' + i);
-        }
-
-        for (int i = 26, j = 0; i <= 51; i++, j++) {
-            lookUpBase64Alphabet[i] = (byte) ('a' + j);
-        }
-
-        for (int i = 52, j = 0; i <= 61; i++, j++) {
-            lookUpBase64Alphabet[i] = (byte) ('0' + j);
-        }
-
-        lookUpBase64Alphabet[62] = (byte) '+';
-        lookUpBase64Alphabet[63] = (byte) '/';
-    }
-
-    private static boolean isBase64(byte octect) {
-        if (octect == PAD) {
-            return true;
-        } else if (base64Alphabet[octect] == -1) {
-            return false;
-        } else {
-            return true;
-        }
-    }
-
-    /**
-     * Tests a given byte array to see if it contains
-     * only valid characters within the Base64 alphabet.
-     *
-     * @param arrayOctect byte array to test
-     * @return true if all bytes are valid characters in the Base64
-     *         alphabet or if the byte array is empty; false, otherwise
-     */
-    public static boolean isArrayByteBase64(byte[] arrayOctect) {
-
-        arrayOctect = discardWhitespace(arrayOctect);
-
-        int length = arrayOctect.length;
-        if (length == 0) {
-            // shouldn't a 0 length array be valid base64 data?
-            // return false;
-            return true;
-        }
-        for (int i = 0; i < length; i++) {
-            if (!isBase64(arrayOctect[i])) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Encodes binary data using the base64 algorithm but
-     * does not chunk the output.
-     *
-     * @param binaryData binary data to encode
-     * @return Base64 characters
-     */
-    public static byte[] encodeBase64(byte[] binaryData) {
-        return encodeBase64(binaryData, false);
-    }
-
-    /**
-     * Encodes binary data using the base64 algorithm and chunks
-     * the encoded output into 76 character blocks
-     *
-     * @param binaryData binary data to encode
-     * @return Base64 characters chunked in 76 character blocks
-     */
-    public static byte[] encodeBase64Chunked(byte[] binaryData) {
-        return encodeBase64(binaryData, true);
-    }
-
-
-    /**
-     * Decodes an Object using the base64 algorithm.  This method
-     * is provided in order to satisfy the requirements of the
-     * Decoder interface, and will throw a DecoderException if the
-     * supplied object is not of type byte[].
-     *
-     * @param pObject Object to decode
-     * @return An object (of type byte[]) containing the 
-     *         binary data which corresponds to the byte[] supplied.
-     * @throws DecoderException if the parameter supplied is not
-     *                          of type byte[]
-     */
-    public Object decode(Object pObject) throws DecoderException {
-        if (!(pObject instanceof byte[])) {
-            throw new DecoderException("Parameter supplied to Base64 decode is not a byte[]");
-        }
-        return decode((byte[]) pObject);
-    }
-
-    /**
-     * Decodes a byte[] containing containing
-     * characters in the Base64 alphabet.
-     *
-     * @param pArray A byte array containing Base64 character data
-     * @return a byte array containing binary data
-     */
-    public byte[] decode(byte[] pArray) {
-        return decodeBase64(pArray);
-    }
-
-    /**
-     * Encodes binary data using the base64 algorithm, optionally
-     * chunking the output into 76 character blocks.
-     *
-     * @param binaryData Array containing binary data to encode.
-     * @param isChunked if isChunked is true this encoder will chunk
-     *                  the base64 output into 76 character blocks
-     * @return Base64-encoded data.
-     */
-    public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) {
-        int lengthDataBits = binaryData.length * EIGHTBIT;
-        int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP;
-        int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP;
-        byte encodedData[] = null;
-        int encodedDataLength = 0;
-        int nbrChunks = 0;
-
-        if (fewerThan24bits != 0) {
-            //data not divisible by 24 bit
-            encodedDataLength = (numberTriplets + 1) * 4;
-        } else {
-            // 16 or 8 bit
-            encodedDataLength = numberTriplets * 4;
-        }
-
-        // If the output is to be "chunked" into 76 character sections, 
-        // for compliance with RFC 2045 MIME, then it is important to 
-        // allow for extra length to account for the separator(s)
-        if (isChunked) {
-
-            nbrChunks =
-                (CHUNK_SEPARATOR.length == 0 ? 0 : (int) Math.ceil((float) encodedDataLength / CHUNK_SIZE));
-            encodedDataLength += nbrChunks * CHUNK_SEPARATOR.length;
-        }
-
-        encodedData = new byte[encodedDataLength];
-
-        byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0;
-
-        int encodedIndex = 0;
-        int dataIndex = 0;
-        int i = 0;
-        int nextSeparatorIndex = CHUNK_SIZE;
-        int chunksSoFar = 0;
-
-        //log.debug("number of triplets = " + numberTriplets);
-        for (i = 0; i < numberTriplets; i++) {
-            dataIndex = i * 3;
-            b1 = binaryData[dataIndex];
-            b2 = binaryData[dataIndex + 1];
-            b3 = binaryData[dataIndex + 2];
-
-            //log.debug("b1= " + b1 +", b2= " + b2 + ", b3= " + b3);
-
-            l = (byte) (b2 & 0x0f);
-            k = (byte) (b1 & 0x03);
-
-            byte val1 =
-                ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
-            byte val2 =
-                ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
-            byte val3 =
-                ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc);
-
-            encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
-            //log.debug( "val2 = " + val2 );
-            //log.debug( "k4   = " + (k<<4) );
-            //log.debug(  "vak  = " + (val2 | (k<<4)) );
-            encodedData[encodedIndex + 1] =
-                lookUpBase64Alphabet[val2 | (k << 4)];
-            encodedData[encodedIndex + 2] =
-                lookUpBase64Alphabet[(l << 2) | val3];
-            encodedData[encodedIndex + 3] = lookUpBase64Alphabet[b3 & 0x3f];
-
-            encodedIndex += 4;
-
-            // If we are chunking, let's put a chunk separator down.
-            if (isChunked) {
-                // this assumes that CHUNK_SIZE % 4 == 0
-                if (encodedIndex == nextSeparatorIndex) {
-                    System.arraycopy(
-                        CHUNK_SEPARATOR,
-                        0,
-                        encodedData,
-                        encodedIndex,
-                        CHUNK_SEPARATOR.length);
-                    chunksSoFar++;
-                    nextSeparatorIndex =
-                        (CHUNK_SIZE * (chunksSoFar + 1)) + 
-                        (chunksSoFar * CHUNK_SEPARATOR.length);
-                    encodedIndex += CHUNK_SEPARATOR.length;
-                }
-            }
-        }
-
-        // form integral number of 6-bit groups
-        dataIndex = i * 3;
-
-        if (fewerThan24bits == EIGHTBIT) {
-            b1 = binaryData[dataIndex];
-            k = (byte) (b1 & 0x03);
-            //log.debug("b1=" + b1);
-            //log.debug("b1<<2 = " + (b1>>2) );
-            byte val1 =
-                ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
-            encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
-            encodedData[encodedIndex + 1] = lookUpBase64Alphabet[k << 4];
-            encodedData[encodedIndex + 2] = PAD;
-            encodedData[encodedIndex + 3] = PAD;
-        } else if (fewerThan24bits == SIXTEENBIT) {
-
-            b1 = binaryData[dataIndex];
-            b2 = binaryData[dataIndex + 1];
-            l = (byte) (b2 & 0x0f);
-            k = (byte) (b1 & 0x03);
-
-            byte val1 =
-                ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
-            byte val2 =
-                ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
-
-            encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
-            encodedData[encodedIndex + 1] =
-                lookUpBase64Alphabet[val2 | (k << 4)];
-            encodedData[encodedIndex + 2] = lookUpBase64Alphabet[l << 2];
-            encodedData[encodedIndex + 3] = PAD;
-        }
-
-        if (isChunked) {
-            // we also add a separator to the end of the final chunk.
-            if (chunksSoFar < nbrChunks) {
-                System.arraycopy(
-                    CHUNK_SEPARATOR,
-                    0,
-                    encodedData,
-                    encodedDataLength - CHUNK_SEPARATOR.length,
-                    CHUNK_SEPARATOR.length);
-            }
-        }
-
-        return encodedData;
-    }
-
-    /**
-     * Decodes Base64 data into octects
-     *
-     * @param base64Data Byte array containing Base64 data
-     * @return Array containing decoded data.
-     */
-    public static byte[] decodeBase64(byte[] base64Data) {
-        // RFC 2045 requires that we discard ALL non-Base64 characters
-        base64Data = discardNonBase64(base64Data);
-
-        // handle the edge case, so we don't have to worry about it later
-        if (base64Data.length == 0) {
-            return new byte[0];
-        }
-
-        int numberQuadruple = base64Data.length / FOURBYTE;
-        byte decodedData[] = null;
-        byte b1 = 0, b2 = 0, b3 = 0, b4 = 0, marker0 = 0, marker1 = 0;
-
-        // Throw away anything not in base64Data
-
-        int encodedIndex = 0;
-        int dataIndex = 0;
-        {
-            // this sizes the output array properly - rlw
-            int lastData = base64Data.length;
-            // ignore the '=' padding
-            while (base64Data[lastData - 1] == PAD) {
-                if (--lastData == 0) {
-                    return new byte[0];
-                }
-            }
-            decodedData = new byte[lastData - numberQuadruple];
-        }
-        
-        for (int i = 0; i < numberQuadruple; i++) {
-            dataIndex = i * 4;
-            marker0 = base64Data[dataIndex + 2];
-            marker1 = base64Data[dataIndex + 3];
-            
-            b1 = base64Alphabet[base64Data[dataIndex]];
-            b2 = base64Alphabet[base64Data[dataIndex + 1]];
-            
-            if (marker0 != PAD && marker1 != PAD) {
-                //No PAD e.g 3cQl
-                b3 = base64Alphabet[marker0];
-                b4 = base64Alphabet[marker1];
-                
-                decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
-                decodedData[encodedIndex + 1] =
-                    (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
-                decodedData[encodedIndex + 2] = (byte) (b3 << 6 | b4);
-            } else if (marker0 == PAD) {
-                //Two PAD e.g. 3c[Pad][Pad]
-                decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
-            } else if (marker1 == PAD) {
-                //One PAD e.g. 3cQ[Pad]
-                b3 = base64Alphabet[marker0];
-                
-                decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
-                decodedData[encodedIndex + 1] =
-                    (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
-            }
-            encodedIndex += 3;
-        }
-        return decodedData;
-    }
-    
-    /**
-     * Discards any whitespace from a base-64 encoded block.
-     *
-     * @param data The base-64 encoded data to discard the whitespace
-     * from.
-     * @return The data, less whitespace (see RFC 2045).
-     */
-    static byte[] discardWhitespace(byte[] data) {
-        byte groomedData[] = new byte[data.length];
-        int bytesCopied = 0;
-        
-        for (int i = 0; i < data.length; i++) {
-            switch (data[i]) {
-            case (byte) ' ' :
-            case (byte) '\n' :
-            case (byte) '\r' :
-            case (byte) '\t' :
-                    break;
-            default:
-                    groomedData[bytesCopied++] = data[i];
-            }
-        }
-
-        byte packedData[] = new byte[bytesCopied];
-
-        System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
-
-        return packedData;
-    }
-
-    /**
-     * Discards any characters outside of the base64 alphabet, per
-     * the requirements on page 25 of RFC 2045 - "Any characters
-     * outside of the base64 alphabet are to be ignored in base64
-     * encoded data."
-     *
-     * @param data The base-64 encoded data to groom
-     * @return The data, less non-base64 characters (see RFC 2045).
-     */
-    static byte[] discardNonBase64(byte[] data) {
-        byte groomedData[] = new byte[data.length];
-        int bytesCopied = 0;
-
-        for (int i = 0; i < data.length; i++) {
-            if (isBase64(data[i])) {
-                groomedData[bytesCopied++] = data[i];
-            }
-        }
-
-        byte packedData[] = new byte[bytesCopied];
-
-        System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
-
-        return packedData;
-    }
-
-
-    // Implementation of the Encoder Interface
-
-    /**
-     * Encodes an Object using the base64 algorithm.  This method
-     * is provided in order to satisfy the requirements of the
-     * Encoder interface, and will throw an EncoderException if the
-     * supplied object is not of type byte[].
-     *
-     * @param pObject Object to encode
-     * @return An object (of type byte[]) containing the 
-     *         base64 encoded data which corresponds to the byte[] supplied.
-     * @throws EncoderException if the parameter supplied is not
-     *                          of type byte[]
-     */
-    public Object encode(Object pObject) throws EncoderException {
-        if (!(pObject instanceof byte[])) {
-            throw new EncoderException(
-                "Parameter supplied to Base64 encode is not a byte[]");
-        }
-        return encode((byte[]) pObject);
-    }
-
-    /**
-     * Encodes a byte[] containing binary data, into a byte[] containing
-     * characters in the Base64 alphabet.
-     *
-     * @param pArray a byte array containing binary data
-     * @return A byte array containing only Base64 character data
-     */
-    public byte[] encode(byte[] pArray) {
-        return encodeBase64(pArray, false);
-    }
-
-}
diff --git a/src/org/apache/commons/codec/binary/BinaryCodec.java b/src/org/apache/commons/codec/binary/BinaryCodec.java
deleted file mode 100644
index 98c6409..0000000
--- a/src/org/apache/commons/codec/binary/BinaryCodec.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.binary;
-
-import org.apache.commons.codec.BinaryDecoder;
-import org.apache.commons.codec.BinaryEncoder;
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.EncoderException;
-
-/**
- * Translates between byte arrays and strings of "0"s and "1"s.
- * 
- * <b>TODO:</b> may want to add more bit vector functions like and/or/xor/nand.
- * <B>TODO:</b> also might be good to generate boolean[]
- * from byte[] et. cetera.
- * 
- * @author Apache Software Foundation
- * @since 1.3
- * @version $Id $
- */
-public class BinaryCodec implements BinaryDecoder, BinaryEncoder {
-    /*
-     * tried to avoid using ArrayUtils to minimize dependencies while using these empty arrays - dep is just not worth
-     * it.
-     */
-    /** Empty char array. */
-    private static final char[] EMPTY_CHAR_ARRAY = new char[0];
-
-    /** Empty byte array. */
-    private static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
-
-    /** Mask for bit 0 of a byte. */
-    private static final int BIT_0 = 1;
-
-    /** Mask for bit 1 of a byte. */
-    private static final int BIT_1 = 0x02;
-
-    /** Mask for bit 2 of a byte. */
-    private static final int BIT_2 = 0x04;
-
-    /** Mask for bit 3 of a byte. */
-    private static final int BIT_3 = 0x08;
-
-    /** Mask for bit 4 of a byte. */
-    private static final int BIT_4 = 0x10;
-
-    /** Mask for bit 5 of a byte. */
-    private static final int BIT_5 = 0x20;
-
-    /** Mask for bit 6 of a byte. */
-    private static final int BIT_6 = 0x40;
-
-    /** Mask for bit 7 of a byte. */
-    private static final int BIT_7 = 0x80;
-
-    private static final int[] BITS = {BIT_0, BIT_1, BIT_2, BIT_3, BIT_4, BIT_5, BIT_6, BIT_7};
-
-    /**
-     * Converts an array of raw binary data into an array of ascii 0 and 1 characters.
-     * 
-     * @param raw
-     *                  the raw binary data to convert
-     * @return 0 and 1 ascii character bytes one for each bit of the argument
-     * @see org.apache.commons.codec.BinaryEncoder#encode(byte[])
-     */
-    public byte[] encode(byte[] raw) {
-        return toAsciiBytes(raw);
-    }
-
-    /**
-     * Converts an array of raw binary data into an array of ascii 0 and 1 chars.
-     * 
-     * @param raw
-     *                  the raw binary data to convert
-     * @return 0 and 1 ascii character chars one for each bit of the argument
-     * @throws EncoderException
-     *                  if the argument is not a byte[]
-     * @see org.apache.commons.codec.Encoder#encode(java.lang.Object)
-     */
-    public Object encode(Object raw) throws EncoderException {
-        if (!(raw instanceof byte[])) {
-            throw new EncoderException("argument not a byte array");
-        }
-        return toAsciiChars((byte[]) raw);
-    }
-
-    /**
-     * Decodes a byte array where each byte represents an ascii '0' or '1'.
-     * 
-     * @param ascii
-     *                  each byte represents an ascii '0' or '1'
-     * @return the raw encoded binary where each bit corresponds to a byte in the byte array argument
-     * @throws DecoderException
-     *                  if argument is not a byte[], char[] or String
-     * @see org.apache.commons.codec.Decoder#decode(java.lang.Object)
-     */
-    public Object decode(Object ascii) throws DecoderException {
-        if (ascii == null) {
-            return EMPTY_BYTE_ARRAY;
-        }
-        if (ascii instanceof byte[]) {
-            return fromAscii((byte[]) ascii);
-        }
-        if (ascii instanceof char[]) {
-            return fromAscii((char[]) ascii);
-        }
-        if (ascii instanceof String) {
-            return fromAscii(((String) ascii).toCharArray());
-        }
-        throw new DecoderException("argument not a byte array");
-    }
-
-    /**
-     * Decodes a byte array where each byte represents an ascii '0' or '1'.
-     * 
-     * @param ascii
-     *                  each byte represents an ascii '0' or '1'
-     * @return the raw encoded binary where each bit corresponds to a byte in the byte array argument
-     * @see org.apache.commons.codec.Decoder#decode(Object)
-     */
-    public byte[] decode(byte[] ascii) {
-        return fromAscii(ascii);
-    }
-
-    /**
-     * Decodes a String where each char of the String represents an ascii '0' or '1'.
-     * 
-     * @param ascii
-     *                  String of '0' and '1' characters
-     * @return the raw encoded binary where each bit corresponds to a byte in the byte array argument
-     * @see org.apache.commons.codec.Decoder#decode(Object)
-     */
-    public byte[] toByteArray(String ascii) {
-        if (ascii == null) {
-            return EMPTY_BYTE_ARRAY;
-        }
-        return fromAscii(ascii.toCharArray());
-    }
-
-    // ------------------------------------------------------------------------
-    //
-    // static codec operations
-    //
-    // ------------------------------------------------------------------------
-    /**
-     * Decodes a byte array where each char represents an ascii '0' or '1'.
-     * 
-     * @param ascii
-     *                  each char represents an ascii '0' or '1'
-     * @return the raw encoded binary where each bit corresponds to a char in the char array argument
-     */
-    public static byte[] fromAscii(char[] ascii) {
-        if (ascii == null || ascii.length == 0) {
-            return EMPTY_BYTE_ARRAY;
-        }
-        // get length/8 times bytes with 3 bit shifts to the right of the length
-        byte[] l_raw = new byte[ascii.length >> 3];
-        /*
-         * We decr index jj by 8 as we go along to not recompute indices using multiplication every time inside the
-         * loop.
-         */
-        for (int ii = 0, jj = ascii.length - 1; ii < l_raw.length; ii++, jj -= 8) {
-            for (int bits = 0; bits < BITS.length; ++bits) {
-                if (ascii[jj - bits] == '1') {
-                    l_raw[ii] |= BITS[bits];
-                }
-            }
-        }
-        return l_raw;
-    }
-
-    /**
-     * Decodes a byte array where each byte represents an ascii '0' or '1'.
-     * 
-     * @param ascii
-     *                  each byte represents an ascii '0' or '1'
-     * @return the raw encoded binary where each bit corresponds to a byte in the byte array argument
-     */
-    public static byte[] fromAscii(byte[] ascii) {
-        if (ascii == null || ascii.length == 0) {
-            return EMPTY_BYTE_ARRAY;
-        }
-        // get length/8 times bytes with 3 bit shifts to the right of the length
-        byte[] l_raw = new byte[ascii.length >> 3];
-        /*
-         * We decr index jj by 8 as we go along to not recompute indices using multiplication every time inside the
-         * loop.
-         */
-        for (int ii = 0, jj = ascii.length - 1; ii < l_raw.length; ii++, jj -= 8) {
-            for (int bits = 0; bits < BITS.length; ++bits) {
-                if (ascii[jj - bits] == '1') {
-                    l_raw[ii] |= BITS[bits];
-                }
-            }
-        }
-        return l_raw;
-    }
-
-    /**
-     * Converts an array of raw binary data into an array of ascii 0 and 1 character bytes - each byte is a truncated
-     * char.
-     * 
-     * @param raw
-     *                  the raw binary data to convert
-     * @return an array of 0 and 1 character bytes for each bit of the argument
-     * @see org.apache.commons.codec.BinaryEncoder#encode(byte[])
-     */
-    public static byte[] toAsciiBytes(byte[] raw) {
-        if (raw == null || raw.length == 0) {
-            return EMPTY_BYTE_ARRAY;
-        }
-        // get 8 times the bytes with 3 bit shifts to the left of the length
-        byte[] l_ascii = new byte[raw.length << 3];
-        /*
-         * We decr index jj by 8 as we go along to not recompute indices using multiplication every time inside the
-         * loop.
-         */
-        for (int ii = 0, jj = l_ascii.length - 1; ii < raw.length; ii++, jj -= 8) {
-            for (int bits = 0; bits < BITS.length; ++bits) {
-                if ((raw[ii] & BITS[bits]) == 0) {
-                    l_ascii[jj - bits] = '0';
-                } else {
-                    l_ascii[jj - bits] = '1';
-                }
-            }
-        }
-        return l_ascii;
-    }
-
-    /**
-     * Converts an array of raw binary data into an array of ascii 0 and 1 characters.
-     * 
-     * @param raw
-     *                  the raw binary data to convert
-     * @return an array of 0 and 1 characters for each bit of the argument
-     * @see org.apache.commons.codec.BinaryEncoder#encode(byte[])
-     */
-    public static char[] toAsciiChars(byte[] raw) {
-        if (raw == null || raw.length == 0) {
-            return EMPTY_CHAR_ARRAY;
-        }
-        // get 8 times the bytes with 3 bit shifts to the left of the length
-        char[] l_ascii = new char[raw.length << 3];
-        /*
-         * We decr index jj by 8 as we go along to not recompute indices using multiplication every time inside the
-         * loop.
-         */
-        for (int ii = 0, jj = l_ascii.length - 1; ii < raw.length; ii++, jj -= 8) {
-            for (int bits = 0; bits < BITS.length; ++bits) {
-                if ((raw[ii] & BITS[bits]) == 0) {
-                    l_ascii[jj - bits] = '0';
-                } else {
-                    l_ascii[jj - bits] = '1';
-                }
-            }
-        }
-        return l_ascii;
-    }
-
-    /**
-     * Converts an array of raw binary data into a String of ascii 0 and 1 characters.
-     * 
-     * @param raw
-     *                  the raw binary data to convert
-     * @return a String of 0 and 1 characters representing the binary data
-     * @see org.apache.commons.codec.BinaryEncoder#encode(byte[])
-     */
-    public static String toAsciiString(byte[] raw) {
-        return new String(toAsciiChars(raw));
-    }
-}
diff --git a/src/org/apache/commons/codec/binary/Hex.java b/src/org/apache/commons/codec/binary/Hex.java
deleted file mode 100644
index 78f5510..0000000
--- a/src/org/apache/commons/codec/binary/Hex.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.binary;
-
-import org.apache.commons.codec.BinaryDecoder;
-import org.apache.commons.codec.BinaryEncoder;
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.EncoderException;
-
-/**
- * Hex encoder and decoder.
- * 
- * @since 1.1
- * @author Apache Software Foundation
- * @version $Id: Hex.java,v 1.13 2004/04/18 18:22:33 ggregory Exp $
- */
-public class Hex implements BinaryEncoder, BinaryDecoder {
-
-    /** 
-     * Used building output as Hex 
-     */
-    private static final char[] DIGITS = {
-        '0', '1', '2', '3', '4', '5', '6', '7',
-           '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
-    };
-
-    /**
-     * Converts an array of characters representing hexidecimal values into an
-     * array of bytes of those same values. The returned array will be half the
-     * length of the passed array, as it takes two characters to represent any
-     * given byte. An exception is thrown if the passed char array has an odd
-     * number of elements.
-     * 
-     * @param data An array of characters containing hexidecimal digits
-     * @return A byte array containing binary data decoded from
-     *         the supplied char array.
-     * @throws DecoderException Thrown if an odd number or illegal of characters 
-     *         is supplied
-     */
-    public static byte[] decodeHex(char[] data) throws DecoderException {
-
-        int len = data.length;
-
-        if ((len & 0x01) != 0) {
-            throw new DecoderException("Odd number of characters.");
-        }
-
-        byte[] out = new byte[len >> 1];
-
-        // two characters form the hex value.
-        for (int i = 0, j = 0; j < len; i++) {
-            int f = toDigit(data[j], j) << 4;
-            j++;
-            f = f | toDigit(data[j], j);
-            j++;
-            out[i] = (byte) (f & 0xFF);
-        }
-
-        return out;
-    }
-
-    /**
-     * Converts a hexadecimal character to an integer.
-     *  
-     * @param ch A character to convert to an integer digit
-     * @param index The index of the character in the source
-     * @return An integer
-     * @throws DecoderException Thrown if ch is an illegal hex character
-     */
-    protected static int toDigit(char ch, int index) throws DecoderException {
-        int digit = Character.digit(ch, 16);
-        if (digit == -1) {
-            throw new DecoderException("Illegal hexadecimal charcter " + ch + " at index " + index);
-        }
-        return digit;
-    }
-
-    /**
-     * Converts an array of bytes into an array of characters representing the hexidecimal values of each byte in order.
-     * The returned array will be double the length of the passed array, as it takes two characters to represent any
-     * given byte.
-     * 
-     * @param data
-     *                  a byte[] to convert to Hex characters
-     * @return A char[] containing hexidecimal characters
-     */
-    public static char[] encodeHex(byte[] data) {
-
-        int l = data.length;
-
-           char[] out = new char[l << 1];
-
-           // two characters form the hex value.
-           for (int i = 0, j = 0; i < l; i++) {
-               out[j++] = DIGITS[(0xF0 & data[i]) >>> 4 ];
-               out[j++] = DIGITS[ 0x0F & data[i] ];
-           }
-
-           return out;
-    }
-    
-    /**
-     * Converts an array of character bytes representing hexidecimal values into an
-     * array of bytes of those same values. The returned array will be half the
-     * length of the passed array, as it takes two characters to represent any
-     * given byte. An exception is thrown if the passed char array has an odd
-     * number of elements.
-     * 
-     * @param array An array of character bytes containing hexidecimal digits
-     * @return A byte array containing binary data decoded from
-     *         the supplied byte array (representing characters).
-     * @throws DecoderException Thrown if an odd number of characters is supplied
-     *                   to this function
-     * @see #decodeHex(char[])
-     */
-    public byte[] decode(byte[] array) throws DecoderException {
-        return decodeHex(new String(array).toCharArray());
-    }
-    
-    /**
-     * Converts a String or an array of character bytes representing hexidecimal values into an
-     * array of bytes of those same values. The returned array will be half the
-     * length of the passed String or array, as it takes two characters to represent any
-     * given byte. An exception is thrown if the passed char array has an odd
-     * number of elements.
-     * 
-     * @param object A String or, an array of character bytes containing hexidecimal digits
-     * @return A byte array containing binary data decoded from
-     *         the supplied byte array (representing characters).
-     * @throws DecoderException Thrown if an odd number of characters is supplied
-     *                   to this function or the object is not a String or char[]
-     * @see #decodeHex(char[])
-     */
-    public Object decode(Object object) throws DecoderException {
-        try {
-            char[] charArray = object instanceof String ? ((String) object).toCharArray() : (char[]) object;
-            return decodeHex(charArray);
-        } catch (ClassCastException e) {
-            throw new DecoderException(e.getMessage());
-        }
-    }
-    
-    /**
-     * Converts an array of bytes into an array of bytes for the characters representing the
-     * hexidecimal values of each byte in order. The returned array will be
-     * double the length of the passed array, as it takes two characters to
-     * represent any given byte.
-     *
-     * @param array a byte[] to convert to Hex characters
-     * @return A byte[] containing the bytes of the hexidecimal characters
-     * @see #encodeHex(byte[])
-     */
-    public byte[] encode(byte[] array) {
-        return new String(encodeHex(array)).getBytes();
-    }
-
-    /**
-     * Converts a String or an array of bytes into an array of characters representing the
-     * hexidecimal values of each byte in order. The returned array will be
-     * double the length of the passed String or array, as it takes two characters to
-     * represent any given byte.
-     *
-     * @param object a String, or byte[] to convert to Hex characters
-     * @return A char[] containing hexidecimal characters
-     * @throws EncoderException Thrown if the given object is not a String or byte[]
-     * @see #encodeHex(byte[])
-     */
-    public Object encode(Object object) throws EncoderException {    
-        try {
-            byte[] byteArray = object instanceof String ? ((String) object).getBytes() : (byte[]) object;
-            return encodeHex(byteArray);
-        } catch (ClassCastException e) {
-            throw new EncoderException(e.getMessage());
-        }
-    }
-
-}
-
diff --git a/src/org/apache/commons/codec/binary/package.html b/src/org/apache/commons/codec/binary/package.html
deleted file mode 100644
index 844d918..0000000
--- a/src/org/apache/commons/codec/binary/package.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!--
-Copyright 2003-2004 The Apache Software Foundation.
- 
-Licensed 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.
--->
-<html>
- <body>
-  Base64, Binary, and Hexadecimal String encoding and decoding.
- </body>
-</html>
diff --git a/src/org/apache/commons/codec/language/DoubleMetaphone.java b/src/org/apache/commons/codec/language/DoubleMetaphone.java
deleted file mode 100644
index 1cad991..0000000
--- a/src/org/apache/commons/codec/language/DoubleMetaphone.java
+++ /dev/null
@@ -1,1103 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.language;
-
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.StringEncoder;
-
-/**
- * Encodes a string into a double metaphone value.
- * This Implementation is based on the algorithm by <CITE>Lawrence Philips</CITE>.
- * <ul>
- * <li>Original Article: <a 
- * href="http://www.cuj.com/documents/s=8038/cuj0006philips/">
- * http://www.cuj.com/documents/s=8038/cuj0006philips/</a></li>
- * <li>Original Source Code: <a href="ftp://ftp.cuj.com/pub/2000/1806/philips.zip">
- * ftp://ftp.cuj.com/pub/2000/1806/philips.zip</a></li>
- * </ul>
- * 
- * @author Apache Software Foundation
- * @version $Id: DoubleMetaphone.java,v 1.24 2004/06/05 18:32:04 ggregory Exp $
- */
-public class DoubleMetaphone implements StringEncoder {
-
-    /**
-     * "Vowels" to test for
-     */
-    private static final String VOWELS = "AEIOUY";
-
-    /**
-     * Prefixes when present which are not pronounced
-     */
-    private static final String[] SILENT_START = 
-    { "GN", "KN", "PN", "WR", "PS" };
-    private static final String[] L_R_N_M_B_H_F_V_W_SPACE = 
-    { "L", "R", "N", "M", "B", "H", "F", "V", "W", " " };
-    private static final String[] ES_EP_EB_EL_EY_IB_IL_IN_IE_EI_ER = 
-    { "ES", "EP", "EB", "EL", "EY", "IB", "IL", "IN", "IE", "EI", "ER" };
-    private static final String[] L_T_K_S_N_M_B_Z = 
-    { "L", "T", "K", "S", "N", "M", "B", "Z" };
-
-    /**
-     * Maximum length of an encoding, default is 4
-     */
-    protected int maxCodeLen = 4;
-
-    /**
-     * Creates an instance of this DoubleMetaphone encoder
-     */
-    public DoubleMetaphone() {
-        super();
-    }
-    
-    /**
-     * Encode a value with Double Metaphone
-     *
-     * @param value String to encode
-     * @return an encoded string
-     */
-    public String doubleMetaphone(String value) {
-        return doubleMetaphone(value, false);
-    }
-    
-    /**
-     * Encode a value with Double Metaphone, optionally using the alternate
-     * encoding.
-     *
-     * @param value String to encode
-     * @param alternate use alternate encode
-     * @return an encoded string
-     */
-    public String doubleMetaphone(String value, boolean alternate) {
-        value = cleanInput(value);
-        if (value == null) {
-            return null;
-        }
-        
-        boolean slavoGermanic = isSlavoGermanic(value);
-        int index = isSilentStart(value) ? 1 : 0;
-        
-        DoubleMetaphoneResult result = new DoubleMetaphoneResult(this.getMaxCodeLen());
-        
-        while (!result.isComplete() && index <= value.length() - 1) {
-            switch (value.charAt(index)) {
-            case 'A':
-            case 'E':
-            case 'I':
-            case 'O':
-            case 'U':
-            case 'Y':
-                index = handleAEIOUY(value, result, index);
-                break;
-            case 'B':
-                result.append('P');
-                index = charAt(value, index + 1) == 'B' ? index + 2 : index + 1;
-                break;
-            case '\u00C7':
-                // A C with a Cedilla
-                result.append('S');
-                index++;
-                break; 
-            case 'C':
-                index = handleC(value, result, index);
-                break;
-            case 'D':
-                index = handleD(value, result, index);
-                break;
-            case 'F':
-                result.append('F');
-                index = charAt(value, index + 1) == 'F' ? index + 2 : index + 1;
-                break;
-            case 'G':
-                index = handleG(value, result, index, slavoGermanic);
-                break;
-            case 'H':
-                index = handleH(value, result, index);
-                break;
-            case 'J':
-                index = handleJ(value, result, index, slavoGermanic);
-                break;
-            case 'K':
-                result.append('K');
-                index = charAt(value, index + 1) == 'K' ? index + 2 : index + 1;
-                break;
-            case 'L':
-                index = handleL(value, result, index);
-                break;
-            case 'M':
-                result.append('M');
-                index = conditionM0(value, index) ? index + 2 : index + 1;
-                break;
-            case 'N':
-                result.append('N');
-                index = charAt(value, index + 1) == 'N' ? index + 2 : index + 1;
-                break;
-            case '\u00D1':
-                // N with a tilde (spanish ene)
-                result.append('N');
-                index++;
-                break;
-            case 'P':
-                index = handleP(value, result, index);
-                break;
-            case 'Q':
-                result.append('K');
-                index = charAt(value, index + 1) == 'Q' ? index + 2 : index + 1;
-                break;
-            case 'R':
-                index = handleR(value, result, index, slavoGermanic);
-                break;
-            case 'S':
-                index = handleS(value, result, index, slavoGermanic);
-                break;
-            case 'T':
-                index = handleT(value, result, index);
-                break;
-            case 'V':
-                result.append('F');
-                index = charAt(value, index + 1) == 'V' ? index + 2 : index + 1;
-                break;
-            case 'W':
-                index = handleW(value, result, index);
-                break;
-            case 'X':
-                index = handleX(value, result, index);
-                break;
-            case 'Z':
-                index = handleZ(value, result, index, slavoGermanic);
-                break;
-            default:
-                index++;
-                break;
-            }
-        }
-
-        return alternate ? result.getAlternate() : result.getPrimary();
-    }
-    
-    /**
-     * Encode the value using DoubleMetaphone.  It will only work if 
-     * <code>obj</code> is a <code>String</code> (like <code>Metaphone</code>).
-     *
-     * @param obj Object to encode (should be of type String)
-     * @return An encoded Object (will be of type String)
-     * @throws EncoderException encode parameter is not of type String
-     */
-    public Object encode(Object obj) throws EncoderException {
-        if (!(obj instanceof String)) {
-            throw new EncoderException("DoubleMetaphone encode parameter is not of type String"); 
-        } 
-        return doubleMetaphone((String) obj);
-    }
-
-    /**
-     * Encode the value using DoubleMetaphone.
-     *
-     * @param value String to encode
-     * @return An encoded String
-     */
-    public String encode(String value) {
-        return doubleMetaphone(value);   
-    }
-
-    /**
-     * Check if the Double Metaphone values of two <code>String</code> values
-     * are equal.
-     * 
-     * @param value1 The left-hand side of the encoded {@link String#equals(Object)}.
-     * @param value2 The right-hand side of the encoded {@link String#equals(Object)}.
-     * @return <code>true</code> if the encoded <code>String</code>s are equal;
-     *          <code>false</code> otherwise.
-     * @see #isDoubleMetaphoneEqual(String,String,boolean)
-     */
-    public boolean isDoubleMetaphoneEqual(String value1, String value2) {
-        return isDoubleMetaphoneEqual(value1, value2, false);
-    }
-    
-    /**
-     * Check if the Double Metaphone values of two <code>String</code> values
-     * are equal, optionally using the alternate value.
-     * 
-     * @param value1 The left-hand side of the encoded {@link String#equals(Object)}.
-     * @param value2 The right-hand side of the encoded {@link String#equals(Object)}.
-     * @param alternate use the alternate value if <code>true</code>.
-     * @return <code>true</code> if the encoded <code>String</code>s are equal;
-     *          <code>false</code> otherwise.
-     */
-    public boolean isDoubleMetaphoneEqual(String value1, 
-                                          String value2, 
-                                          boolean alternate) {
-        return doubleMetaphone(value1, alternate).equals(doubleMetaphone
-                                                         (value2, alternate));
-    }
-    
-    /**
-     * Returns the maxCodeLen.
-     * @return int
-     */
-    public int getMaxCodeLen() {
-        return this.maxCodeLen;
-    }
-
-    /**
-     * Sets the maxCodeLen.
-     * @param maxCodeLen The maxCodeLen to set
-     */
-    public void setMaxCodeLen(int maxCodeLen) {
-        this.maxCodeLen = maxCodeLen;
-    }
-
-    //-- BEGIN HANDLERS --//
-
-    /**
-     * Handles 'A', 'E', 'I', 'O', 'U', and 'Y' cases
-     */
-    private int handleAEIOUY(String value, DoubleMetaphoneResult result, int 
-                             index) {
-        if (index == 0) {
-            result.append('A');
-        }
-        return index + 1;
-    }
-    
-    /**
-     * Handles 'C' cases
-     */
-    private int handleC(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index) {
-        if (conditionC0(value, index)) {  // very confusing, moved out
-            result.append('K');
-            index += 2;
-        } else if (index == 0 && contains(value, index, 6, "CAESAR")) {
-            result.append('S');
-            index += 2;
-        } else if (contains(value, index, 2, "CH")) {
-            index = handleCH(value, result, index);
-        } else if (contains(value, index, 2, "CZ") && 
-                   !contains(value, index - 2, 4, "WICZ")) {
-            //-- "Czerny" --//
-            result.append('S', 'X');
-            index += 2;
-        } else if (contains(value, index + 1, 3, "CIA")) {
-            //-- "focaccia" --//
-            result.append('X');
-            index += 3;
-        } else if (contains(value, index, 2, "CC") && 
-                   !(index == 1 && charAt(value, 0) == 'M')) {
-            //-- double "cc" but not "McClelland" --//
-            return handleCC(value, result, index);
-        } else if (contains(value, index, 2, "CK", "CG", "CQ")) {
-            result.append('K');
-            index += 2;
-        } else if (contains(value, index, 2, "CI", "CE", "CY")) {
-            //-- Italian vs. English --//
-            if (contains(value, index, 3, "CIO", "CIE", "CIA")) {
-                result.append('S', 'X');
-            } else {
-                result.append('S');
-            }
-            index += 2;
-        } else {
-            result.append('K');
-            if (contains(value, index + 1, 2, " C", " Q", " G")) { 
-                //-- Mac Caffrey, Mac Gregor --//
-                index += 3;
-            } else if (contains(value, index + 1, 1, "C", "K", "Q") && 
-                       !contains(value, index + 1, 2, "CE", "CI")) {
-                index += 2;
-            } else {
-                index++;
-            }
-        }
-        
-        return index;
-    }
-
-    /**
-     * Handles 'CC' cases
-     */
-    private int handleCC(String value, 
-                         DoubleMetaphoneResult result, 
-                         int index) {
-        if (contains(value, index + 2, 1, "I", "E", "H") && 
-            !contains(value, index + 2, 2, "HU")) {
-            //-- "bellocchio" but not "bacchus" --//
-            if ((index == 1 && charAt(value, index - 1) == 'A') || 
-                contains(value, index - 1, 5, "UCCEE", "UCCES")) {
-                //-- "accident", "accede", "succeed" --//
-                result.append("KS");
-            } else {
-                //-- "bacci", "bertucci", other Italian --//
-                result.append('X');
-            }
-            index += 3;
-        } else {    // Pierce's rule
-            result.append('K');
-            index += 2;
-        }
-        
-        return index;
-    }
-    
-    /**
-     * Handles 'CH' cases
-     */
-    private int handleCH(String value, 
-                         DoubleMetaphoneResult result, 
-                         int index) {
-        if (index > 0 && contains(value, index, 4, "CHAE")) {   // Michael
-            result.append('K', 'X');
-            return index + 2;
-        } else if (conditionCH0(value, index)) {
-            //-- Greek roots ("chemistry", "chorus", etc.) --//
-            result.append('K');
-            return index + 2;
-        } else if (conditionCH1(value, index)) {
-            //-- Germanic, Greek, or otherwise 'ch' for 'kh' sound --//
-            result.append('K');
-            return index + 2;
-        } else {
-            if (index > 0) {
-                if (contains(value, 0, 2, "MC")) {
-                    result.append('K');
-                } else {
-                    result.append('X', 'K');
-                }
-            } else {
-                result.append('X');
-            }
-            return index + 2;
-        }
-    }
-
-    /**
-     * Handles 'D' cases
-     */
-    private int handleD(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index) {
-        if (contains(value, index, 2, "DG")) {
-            //-- "Edge" --//
-            if (contains(value, index + 2, 1, "I", "E", "Y")) {
-                result.append('J');
-                index += 3;
-                //-- "Edgar" --//
-            } else {
-                result.append("TK");
-                index += 2;
-            }
-        } else if (contains(value, index, 2, "DT", "DD")) {
-            result.append('T');
-            index += 2;
-        } else {
-            result.append('T');
-            index++;
-        }
-        return index;
-    }
-
-    /**
-     * Handles 'G' cases
-     */
-    private int handleG(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index, 
-                        boolean slavoGermanic) {
-        if (charAt(value, index + 1) == 'H') {
-            index = handleGH(value, result, index);
-        } else if (charAt(value, index + 1) == 'N') {
-            if (index == 1 && isVowel(charAt(value, 0)) && !slavoGermanic) {
-                result.append("KN", "N");
-            } else if (!contains(value, index + 2, 2, "EY") && 
-                       charAt(value, index + 1) != 'Y' && !slavoGermanic) {
-                result.append("N", "KN");
-            } else {
-                result.append("KN");
-            }
-            index = index + 2;
-        } else if (contains(value, index + 1, 2, "LI") && !slavoGermanic) {
-            result.append("KL", "L");
-            index += 2;
-        } else if (index == 0 && (charAt(value, index + 1) == 'Y' || contains(value, index + 1, 2, ES_EP_EB_EL_EY_IB_IL_IN_IE_EI_ER))) {
-            //-- -ges-, -gep-, -gel-, -gie- at beginning --//
-            result.append('K', 'J');
-            index += 2;
-        } else if ((contains(value, index + 1, 2, "ER") || 
-                    charAt(value, index + 1) == 'Y') &&
-                   !contains(value, 0, 6, "DANGER", "RANGER", "MANGER") &&
-                   !contains(value, index - 1, 1, "E", "I") && 
-                   !contains(value, index - 1, 3, "RGY", "OGY")) {
-            //-- -ger-, -gy- --//
-            result.append('K', 'J');
-            index += 2;
-        } else if (contains(value, index + 1, 1, "E", "I", "Y") || 
-                   contains(value, index - 1, 4, "AGGI", "OGGI")) {
-            //-- Italian "biaggi" --//
-            if ((contains(value, 0 ,4, "VAN ", "VON ") || contains(value, 0, 3, "SCH")) || contains(value, index + 1, 2, "ET")) {
-                //-- obvious germanic --//
-                result.append('K');
-            } else if (contains(value, index + 1, 4, "IER")) {
-                result.append('J');
-            } else {
-                result.append('J', 'K');
-            }
-            index += 2;
-        } else if (charAt(value, index + 1) == 'G') {
-            index += 2;
-            result.append('K');
-        } else {
-            index++;
-            result.append('K');
-        }
-        return index;
-    }
-    
-    /**
-     * Handles 'GH' cases
-     */
-    private int handleGH(String value, 
-                         DoubleMetaphoneResult result, 
-                         int index) {
-        if (index > 0 && !isVowel(charAt(value, index - 1))) {
-            result.append('K');
-            index += 2;
-        } else if (index == 0) {
-            if (charAt(value, index + 2) == 'I') {
-                result.append('J');
-            } else {
-                result.append('K');
-            }
-            index += 2;
-        } else if ((index > 1 && contains(value, index - 2, 1, "B", "H", "D")) ||
-                   (index > 2 && contains(value, index - 3, 1, "B", "H", "D")) ||
-                   (index > 3 && contains(value, index - 4, 1, "B", "H"))) {
-            //-- Parker's rule (with some further refinements) - "hugh"
-            index += 2;
-        } else {
-            if (index > 2 && charAt(value, index - 1) == 'U' && 
-                contains(value, index - 3, 1, "C", "G", "L", "R", "T")) {
-                //-- "laugh", "McLaughlin", "cough", "gough", "rough", "tough"
-                result.append('F');
-            } else if (index > 0 && charAt(value, index - 1) != 'I') {
-                result.append('K');
-            }
-            index += 2;
-        }
-        return index;
-    }
-
-    /**
-     * Handles 'H' cases
-     */
-    private int handleH(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index) {
-        //-- only keep if first & before vowel or between 2 vowels --//
-        if ((index == 0 || isVowel(charAt(value, index - 1))) && 
-            isVowel(charAt(value, index + 1))) {
-            result.append('H');
-            index += 2;
-            //-- also takes car of "HH" --//
-        } else {
-            index++;
-        }
-        return index;
-    }
-    
-    /**
-     * Handles 'J' cases
-     */
-    private int handleJ(String value, DoubleMetaphoneResult result, int index, 
-                        boolean slavoGermanic) {
-        if (contains(value, index, 4, "JOSE") || contains(value, 0, 4, "SAN ")) {
-                //-- obvious Spanish, "Jose", "San Jacinto" --//
-                if ((index == 0 && (charAt(value, index + 4) == ' ') || 
-                     value.length() == 4) || contains(value, 0, 4, "SAN ")) {
-                    result.append('H');
-                } else {
-                    result.append('J', 'H');
-                }
-                index++;
-            } else {
-                if (index == 0 && !contains(value, index, 4, "JOSE")) {
-                    result.append('J', 'A');
-                } else if (isVowel(charAt(value, index - 1)) && !slavoGermanic && 
-                              (charAt(value, index + 1) == 'A' || charAt(value, index + 1) == 'O')) {
-                    result.append('J', 'H');
-                } else if (index == value.length() - 1) {
-                    result.append('J', ' ');
-                } else if (!contains(value, index + 1, 1, L_T_K_S_N_M_B_Z) && !contains(value, index - 1, 1, "S", "K", "L")) {
-                    result.append('J');
-                }
-
-                if (charAt(value, index + 1) == 'J') {
-                    index += 2;
-                } else {
-                    index++;
-                }
-            }
-        return index;
-    }
-    
-    /**
-     * Handles 'L' cases
-     */
-    private int handleL(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index) {
-        result.append('L');
-        if (charAt(value, index + 1) == 'L') {
-            if (conditionL0(value, index)) {
-                result.appendAlternate(' ');
-            }
-            index += 2;
-        } else {
-            index++;
-        }
-        return index;
-    }
-
-    /**
-     * Handles 'P' cases
-     */
-    private int handleP(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index) {
-        if (charAt(value, index + 1) == 'H') {
-            result.append('F');
-            index += 2;
-        } else {
-            result.append('P');
-            index = contains(value, index + 1, 1, "P", "B") ? index + 2 : index + 1;
-        }
-        return index;
-    }
-
-    /**
-     * Handles 'R' cases
-     */
-    private int handleR(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index, 
-                        boolean slavoGermanic) {
-        if (index == value.length() - 1 && !slavoGermanic && 
-            contains(value, index - 2, 2, "IE") && 
-            !contains(value, index - 4, 2, "ME", "MA")) {
-            result.appendAlternate('R');
-        } else {
-            result.append('R');
-        }
-        return charAt(value, index + 1) == 'R' ? index + 2 : index + 1;
-    }
-
-    /**
-     * Handles 'S' cases
-     */
-    private int handleS(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index, 
-                        boolean slavoGermanic) {
-        if (contains(value, index - 1, 3, "ISL", "YSL")) {
-            //-- special cases "island", "isle", "carlisle", "carlysle" --//
-            index++;
-        } else if (index == 0 && contains(value, index, 5, "SUGAR")) {
-            //-- special case "sugar-" --//
-            result.append('X', 'S');
-            index++;
-        } else if (contains(value, index, 2, "SH")) {
-            if (contains(value, index + 1, 4, 
-                         "HEIM", "HOEK", "HOLM", "HOLZ")) {
-                //-- germanic --//
-                result.append('S');
-            } else {
-                result.append('X');
-            }
-            index += 2;
-        } else if (contains(value, index, 3, "SIO", "SIA") || contains(value, index, 4, "SIAN")) {
-            //-- Italian and Armenian --//
-            if (slavoGermanic) {
-                result.append('S');
-            } else {
-                result.append('S', 'X');
-            }
-            index += 3;
-        } else if ((index == 0 && contains(value, index + 1, 1, "M", "N", "L", "W")) || contains(value, index + 1, 1, "Z")) {
-            //-- german & anglicisations, e.g. "smith" match "schmidt" //
-            // "snider" match "schneider" --//
-            //-- also, -sz- in slavic language altho in hungarian it //
-            //   is pronounced "s" --//
-            result.append('S', 'X');
-            index = contains(value, index + 1, 1, "Z") ? index + 2 : index + 1;
-        } else if (contains(value, index, 2, "SC")) {
-            index = handleSC(value, result, index);
-        } else {
-            if (index == value.length() - 1 && contains(value, index - 2, 
-                                                        2, "AI", "OI")){
-                //-- french e.g. "resnais", "artois" --//
-                result.appendAlternate('S');
-            } else {
-                result.append('S');
-            }
-            index = contains(value, index + 1, 1, "S", "Z") ? index + 2 : index + 1;
-        }
-        return index;
-    }
-
-    /**
-     * Handles 'SC' cases
-     */
-    private int handleSC(String value, 
-                         DoubleMetaphoneResult result, 
-                         int index) {
-        if (charAt(value, index + 2) == 'H') {
-            //-- Schlesinger's rule --//
-            if (contains(value, index + 3, 
-                         2, "OO", "ER", "EN", "UY", "ED", "EM")) {
-                //-- Dutch origin, e.g. "school", "schooner" --//
-                if (contains(value, index + 3, 2, "ER", "EN")) {
-                    //-- "schermerhorn", "schenker" --//
-                    result.append("X", "SK");
-                } else {
-                    result.append("SK");
-                }
-            } else {
-                if (index == 0 && !isVowel(charAt(value, 3)) && charAt(value, 3) != 'W') {
-                    result.append('X', 'S');
-                } else {
-                    result.append('X');
-                }
-            }
-        } else if (contains(value, index + 2, 1, "I", "E", "Y")) {
-            result.append('S');
-        } else {
-            result.append("SK");
-        }
-        return index + 3;
-    }
-
-    /**
-     * Handles 'T' cases
-     */
-    private int handleT(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index) {
-        if (contains(value, index, 4, "TION")) {
-            result.append('X');
-            index += 3;
-        } else if (contains(value, index, 3, "TIA", "TCH")) {
-            result.append('X');
-            index += 3;
-        } else if (contains(value, index, 2, "TH") || contains(value, index, 
-                                                               3, "TTH")) {
-            if (contains(value, index + 2, 2, "OM", "AM") || 
-                //-- special case "thomas", "thames" or germanic --//
-                contains(value, 0, 4, "VAN ", "VON ") || 
-                contains(value, 0, 3, "SCH")) {
-                result.append('T');
-            } else {
-                result.append('0', 'T');
-            }
-            index += 2;
-        } else {
-            result.append('T');
-            index = contains(value, index + 1, 1, "T", "D") ? index + 2 : index + 1;
-        }
-        return index;
-    }
-
-    /**
-     * Handles 'W' cases
-     */
-    private int handleW(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index) {
-        if (contains(value, index, 2, "WR")) {
-            //-- can also be in middle of word --//
-            result.append('R');
-            index += 2;
-        } else {
-            if (index == 0 && (isVowel(charAt(value, index + 1)) || 
-                               contains(value, index, 2, "WH"))) {
-                if (isVowel(charAt(value, index + 1))) {
-                    //-- Wasserman should match Vasserman --//
-                    result.append('A', 'F');
-                } else {
-                    //-- need Uomo to match Womo --//
-                    result.append('A');
-                }
-                index++;
-            } else if ((index == value.length() - 1 && isVowel(charAt(value, index - 1))) ||
-                       contains(value, index - 1, 
-                                5, "EWSKI", "EWSKY", "OWSKI", "OWSKY") ||
-                       contains(value, 0, 3, "SCH")) {
-                //-- Arnow should match Arnoff --//
-                result.appendAlternate('F');
-                index++;
-            } else if (contains(value, index, 4, "WICZ", "WITZ")) {
-                //-- Polish e.g. "filipowicz" --//
-                result.append("TS", "FX");
-                index += 4;
-            } else {
-                index++;
-            }
-        }
-        return index;
-    }
-    
-    /**
-     * Handles 'X' cases
-     */
-    private int handleX(String value, 
-                        DoubleMetaphoneResult result, 
-                        int index) {
-        if (index == 0) {
-            result.append('S');
-            index++;
-        } else {
-            if (!((index == value.length() - 1) && 
-                  (contains(value, index - 3, 3, "IAU", "EAU") || 
-                   contains(value, index - 2, 2, "AU", "OU")))) {
-                //-- French e.g. breaux --//
-                result.append("KS");
-            }
-            index = contains(value, index + 1, 1, "C", "X") ? index + 2 : index + 1;
-        }
-        return index;
-    }
-
-    /**
-     * Handles 'Z' cases
-     */
-    private int handleZ(String value, DoubleMetaphoneResult result, int index, 
-                        boolean slavoGermanic) {
-        if (charAt(value, index + 1) == 'H') {
-            //-- Chinese pinyin e.g. "zhao" or Angelina "Zhang" --//
-            result.append('J');
-            index += 2;
-        } else {
-            if (contains(value, index + 1, 2, "ZO", "ZI", "ZA") || (slavoGermanic && (index > 0 && charAt(value, index - 1) != 'T'))) {
-                result.append("S", "TS");
-            } else {
-                result.append('S');
-            }
-            index = charAt(value, index + 1) == 'Z' ? index + 2 : index + 1;
-        }
-        return index;
-    }
-
-    //-- BEGIN CONDITIONS --//
-
-    /**
-     * Complex condition 0 for 'C'
-     */
-    private boolean conditionC0(String value, int index) {
-        if (contains(value, index, 4, "CHIA")) {
-            return true;
-        } else if (index <= 1) {
-            return false;
-        } else if (isVowel(charAt(value, index - 2))) {
-            return false;
-        } else if (!contains(value, index - 1, 3, "ACH")) {
-            return false;
-        } else {
-            char c = charAt(value, index + 2);
-            return (c != 'I' && c != 'E')
-                    || contains(value, index - 2, 6, "BACHER", "MACHER");
-        }
-    }
-    
-    /**
-     * Complex condition 0 for 'CH'
-     */
-    private boolean conditionCH0(String value, int index) {
-        if (index != 0) {
-            return false;
-        } else if (!contains(value, index + 1, 5, "HARAC", "HARIS") && 
-                   !contains(value, index + 1, 3, "HOR", "HYM", "HIA", "HEM")) {
-            return false;
-        } else if (contains(value, 0, 5, "CHORE")) {
-            return false;
-        } else {
-            return true;
-        }
-    }
-    
-    /**
-     * Complex condition 1 for 'CH'
-     */
-    private boolean conditionCH1(String value, int index) {
-        return ((contains(value, 0, 4, "VAN ", "VON ") || contains(value, 0, 
-                                                                   3, "SCH")) ||
-                contains(value, index - 2, 6, "ORCHES", "ARCHIT", "ORCHID") ||
-                contains(value, index + 2, 1, "T", "S") ||
-                ((contains(value, index - 1, 1, "A", "O", "U", "E") || index == 0) &&
-                 (contains(value, index + 2, 1, L_R_N_M_B_H_F_V_W_SPACE) || index + 1 == value.length() - 1)));
-    }
-    
-    /**
-     * Complex condition 0 for 'L'
-     */
-    private boolean conditionL0(String value, int index) {
-        if (index == value.length() - 3 && 
-            contains(value, index - 1, 4, "ILLO", "ILLA", "ALLE")) {
-            return true;
-        } else if ((contains(value, index - 1, 2, "AS", "OS") || 
-                    contains(value, value.length() - 1, 1, "A", "O")) &&
-                   contains(value, index - 1, 4, "ALLE")) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-    
-    /**
-     * Complex condition 0 for 'M'
-     */
-    private boolean conditionM0(String value, int index) {
-        if (charAt(value, index + 1) == 'M') {
-            return true;
-        }
-        return contains(value, index - 1, 3, "UMB")
-                && ((index + 1) == value.length() - 1 || contains(value,
-                        index + 2, 2, "ER"));
-    }
-    
-    //-- BEGIN HELPER FUNCTIONS --//
-
-    /**
-     * Determines whether or not a value is of slavo-germanic orgin. A value is
-     * of slavo-germanic origin if it contians any of 'W', 'K', 'CZ', or 'WITZ'.
-     */
-    private boolean isSlavoGermanic(String value) {
-        return value.indexOf('W') > -1 || value.indexOf('K') > -1 || 
-            value.indexOf("CZ") > -1 || value.indexOf("WITZ") > -1;
-    }
-
-    /**
-     * Determines whether or not a character is a vowel or not
-     */
-    private boolean isVowel(char ch) {
-        return VOWELS.indexOf(ch) != -1;
-    }
-
-    /**
-     * Determines whether or not the value starts with a silent letter.  It will
-     * return <code>true</code> if the value starts with any of 'GN', 'KN',
-     * 'PN', 'WR' or 'PS'.
-     */    
-    private boolean isSilentStart(String value) {
-        boolean result = false;
-        for (int i = 0; i < SILENT_START.length; i++) {
-            if (value.startsWith(SILENT_START[i])) {
-                result = true;
-                break;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Cleans the input
-     */    
-    private String cleanInput(String input) {
-        if (input == null) {
-            return null;
-        }
-        input = input.trim();
-        if (input.length() == 0) {
-            return null;
-        }
-        return input.toUpperCase();
-    }
-
-    /**
-     * Gets the character at index <code>index</code> if available, otherwise
-     * it returns <code>Character.MIN_VALUE</code> so that there is some sort
-     * of a default
-     */    
-    protected char charAt(String value, int index) {
-        if (index < 0 || index >= value.length()) {
-            return Character.MIN_VALUE;
-        } 
-        return value.charAt(index);
-    }
-
-    /**
-     * Shortcut method with 1 criteria
-     */    
-    private static boolean contains(String value, int start, int length, 
-                                    String criteria) {
-        return contains(value, start, length, 
-                        new String[] { criteria });
-    }
-
-    /**
-     * Shortcut method with 2 criteria
-     */    
-    private static boolean contains(String value, int start, int length, 
-                                    String criteria1, String criteria2) {
-        return contains(value, start, length, 
-                        new String[] { criteria1, criteria2 });
-    }
-
-    /**
-     * Shortcut method with 3 criteria
-     */    
-    private static boolean contains(String value, int start, int length, 
-                                    String criteria1, String criteria2, 
-                                    String criteria3) {
-        return contains(value, start, length, 
-                        new String[] { criteria1, criteria2, criteria3 });
-    }
-
-    /**
-     * Shortcut method with 4 criteria
-     */    
-    private static boolean contains(String value, int start, int length, 
-                                    String criteria1, String criteria2, 
-                                    String criteria3, String criteria4) {
-        return contains(value, start, length, 
-                        new String[] { criteria1, criteria2, criteria3, 
-                                       criteria4 });
-    }
-
-    /**
-     * Shortcut method with 5 criteria
-     */    
-    private static boolean contains(String value, int start, int length, 
-                                    String criteria1, String criteria2, 
-                                    String criteria3, String criteria4, 
-                                    String criteria5) {
-        return contains(value, start, length, 
-                        new String[] { criteria1, criteria2, criteria3, 
-                                       criteria4, criteria5 });
-    }
-
-    /**
-     * Shortcut method with 6 criteria
-     */    
-    private static boolean contains(String value, int start, int length, 
-                                    String criteria1, String criteria2, 
-                                    String criteria3, String criteria4, 
-                                    String criteria5, String criteria6) {
-        return contains(value, start, length, 
-                        new String[] { criteria1, criteria2, criteria3, 
-                                       criteria4, criteria5, criteria6 });
-    }
-    
-    /**
-     * Determines whether <code>value</code> contains any of the criteria 
-     starting
-     * at index <code>start</code> and matching up to length <code>length</code>
-     */    
-    protected static boolean contains(String value, int start, int length, 
-                                      String[] criteria) {
-        boolean result = false;
-        if (start >= 0 && start + length <= value.length()) {
-            String target = value.substring(start, start + length);
-
-            for (int i = 0; i < criteria.length; i++) {
-                if (target.equals(criteria[i])) {
-                    result = true;
-                    break;
-                }
-            }
-        }
-        return result;
-    }
-    
-    //-- BEGIN INNER CLASSES --//
-    
-    /**
-     * Inner class for storing results, since there is the optional alternate
-     * encoding.
-     */
-    public class DoubleMetaphoneResult {
-
-        private StringBuffer primary = new StringBuffer(getMaxCodeLen());
-        private StringBuffer alternate = new StringBuffer(getMaxCodeLen());
-        private int maxLength;
-
-        public DoubleMetaphoneResult(int maxLength) {
-            this.maxLength = maxLength;
-        }
-
-        public void append(char value) {
-            appendPrimary(value);
-            appendAlternate(value);
-        }
-
-        public void append(char primary, char alternate) {
-            appendPrimary(primary);
-            appendAlternate(alternate);
-        }
-
-        public void appendPrimary(char value) {
-            if (this.primary.length() < this.maxLength) {
-                this.primary.append(value);
-            }
-        }
-
-        public void appendAlternate(char value) {
-            if (this.alternate.length() < this.maxLength) {
-                this.alternate.append(value);
-            }
-        }
-
-        public void append(String value) {
-            appendPrimary(value);
-            appendAlternate(value);
-        }
-
-        public void append(String primary, String alternate) {
-            appendPrimary(primary);
-            appendAlternate(alternate);
-        }
-
-        public void appendPrimary(String value) {
-            int addChars = this.maxLength - this.primary.length();
-            if (value.length() <= addChars) {
-                this.primary.append(value);
-            } else {
-                this.primary.append(value.substring(0, addChars));
-            }
-        }
-
-        public void appendAlternate(String value) {
-            int addChars = this.maxLength - this.alternate.length();
-            if (value.length() <= addChars) {
-                this.alternate.append(value);
-            } else {
-                this.alternate.append(value.substring(0, addChars));
-            }
-        }
-
-        public String getPrimary() {
-            return this.primary.toString();
-        }
-
-        public String getAlternate() {
-            return this.alternate.toString();
-        }
-
-        public boolean isComplete() {
-            return this.primary.length() >= this.maxLength && 
-                this.alternate.length() >= this.maxLength;
-        }
-    }
-}
diff --git a/src/org/apache/commons/codec/language/Metaphone.java b/src/org/apache/commons/codec/language/Metaphone.java
deleted file mode 100644
index dce2c72..0000000
--- a/src/org/apache/commons/codec/language/Metaphone.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.language;
-
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.StringEncoder;
-
-/**
- * Encodes a string into a metaphone value. 
- * <p>
- * Initial Java implementation by <CITE>William B. Brogden. December, 1997</CITE>. 
- * Permission given by <CITE>wbrogden</CITE> for code to be used anywhere.
- * </p>
- * <p>
- * <CITE>Hanging on the Metaphone</CITE> by <CITE>Lawrence Philips</CITE> in <CITE>Computer Language of Dec. 1990, p
- * 39.</CITE>
- * </p>
- * 
- * @author Apache Software Foundation
- * @version $Id: Metaphone.java,v 1.20 2004/06/05 18:32:04 ggregory Exp $
- */
-public class Metaphone implements StringEncoder {
-
-    /**
-     * Five values in the English language 
-     */
-    private String vowels = "AEIOU" ;
-
-    /**
-     * Variable used in Metaphone algorithm
-     */
-    private String frontv = "EIY"   ;
-
-    /**
-     * Variable used in Metaphone algorithm
-     */
-    private String varson = "CSPTG" ;
-
-    /**
-     * The max code length for metaphone is 4
-     */
-    private int maxCodeLen = 4 ;
-
-    /**
-     * Creates an instance of the Metaphone encoder
-     */
-    public Metaphone() {
-        super();
-    }
-
-    /**
-     * Find the metaphone value of a String. This is similar to the
-     * soundex algorithm, but better at finding similar sounding words.
-     * All input is converted to upper case.
-     * Limitations: Input format is expected to be a single ASCII word
-     * with only characters in the A - Z range, no punctuation or numbers.
-     *
-     * @param txt String to find the metaphone code for
-     * @return A metaphone code corresponding to the String supplied
-     */
-    public String metaphone(String txt) {
-        boolean hard = false ;
-        if ((txt == null) || (txt.length() == 0)) {
-            return "" ;
-        }
-        // single character is itself
-        if (txt.length() == 1) {
-            return txt.toUpperCase() ;
-        }
-      
-        char[] inwd = txt.toUpperCase().toCharArray() ;
-      
-        StringBuffer local = new StringBuffer(40); // manipulate
-        StringBuffer code = new StringBuffer(10) ; //   output
-        // handle initial 2 characters exceptions
-        switch(inwd[0]) {
-        case 'K' : 
-        case 'G' : 
-        case 'P' : /* looking for KN, etc*/
-            if (inwd[1] == 'N') {
-                local.append(inwd, 1, inwd.length - 1);
-            } else {
-                local.append(inwd);
-            }
-            break;
-        case 'A': /* looking for AE */
-            if (inwd[1] == 'E') {
-                local.append(inwd, 1, inwd.length - 1);
-            } else {
-                local.append(inwd);
-            }
-            break;
-        case 'W' : /* looking for WR or WH */
-            if (inwd[1] == 'R') {   // WR -> R
-                local.append(inwd, 1, inwd.length - 1); 
-                break ;
-            }
-            if (inwd[1] == 'H') {
-                local.append(inwd, 1, inwd.length - 1);
-                local.setCharAt(0, 'W'); // WH -> W
-            } else {
-                local.append(inwd);
-            }
-            break;
-        case 'X' : /* initial X becomes S */
-            inwd[0] = 'S';
-            local.append(inwd);
-            break ;
-        default :
-            local.append(inwd);
-        } // now local has working string with initials fixed
-
-        int wdsz = local.length();
-        int n = 0 ;
-
-        while ((code.length() < this.getMaxCodeLen()) && 
-               (n < wdsz) ) { // max code size of 4 works well
-            char symb = local.charAt(n) ;
-            // remove duplicate letters except C
-            if ((symb != 'C') && (isPreviousChar( local, n, symb )) ) {
-                n++ ;
-            } else { // not dup
-                switch(symb) {
-                case 'A' : case 'E' : case 'I' : case 'O' : case 'U' :
-                    if (n == 0) { 
-                        code.append(symb);
-                    }
-                    break ; // only use vowel if leading char
-                case 'B' :
-                    if ( isPreviousChar(local, n, 'M') && 
-                         isLastChar(wdsz, n) ) { // B is silent if word ends in MB
-                        break;
-                    }
-                    code.append(symb);
-                    break;
-                case 'C' : // lots of C special cases
-                    /* discard if SCI, SCE or SCY */
-                    if ( isPreviousChar(local, n, 'S') && 
-                         !isLastChar(wdsz, n) && 
-                         (this.frontv.indexOf(local.charAt(n + 1)) >= 0) ) { 
-                        break;
-                    }
-                    if (regionMatch(local, n, "CIA")) { // "CIA" -> X
-                        code.append('X'); 
-                        break;
-                    }
-                    if (!isLastChar(wdsz, n) && 
-                        (this.frontv.indexOf(local.charAt(n + 1)) >= 0)) {
-                        code.append('S');
-                        break; // CI,CE,CY -> S
-                    }
-                    if (isPreviousChar(local, n, 'S') &&
-                        isNextChar(local, n, 'H') ) { // SCH->sk
-                        code.append('K') ; 
-                        break ;
-                    }
-                    if (isNextChar(local, n, 'H')) { // detect CH
-                        if ((n == 0) && 
-                            (wdsz >= 3) && 
-                            isVowel(local,2) ) { // CH consonant -> K consonant
-                            code.append('K');
-                        } else { 
-                            code.append('X'); // CHvowel -> X
-                        }
-                    } else { 
-                        code.append('K');
-                    }
-                    break ;
-                case 'D' :
-                    if (!isLastChar(wdsz, n + 1) && 
-                        isNextChar(local, n, 'G') && 
-                        (this.frontv.indexOf(local.charAt(n + 2)) >= 0)) { // DGE DGI DGY -> J 
-                        code.append('J'); n += 2 ;
-                    } else { 
-                        code.append('T');
-                    }
-                    break ;
-                case 'G' : // GH silent at end or before consonant
-                    if (isLastChar(wdsz, n + 1) && 
-                        isNextChar(local, n, 'H')) {
-                        break;
-                    }
-                    if (!isLastChar(wdsz, n + 1) &&  
-                        isNextChar(local,n,'H') && 
-                        !isVowel(local,n+2)) {
-                        break;
-                    }
-                    if ((n > 0) && 
-                        ( regionMatch(local, n, "GN") ||
-                          regionMatch(local, n, "GNED") ) ) {
-                        break; // silent G
-                    }
-                    if (isPreviousChar(local, n, 'G')) {
-                        hard = true ;
-                    } else {
-                        hard = false ;
-                    }
-                    if (!isLastChar(wdsz, n) && 
-                        (this.frontv.indexOf(local.charAt(n + 1)) >= 0) && 
-                        (!hard)) {
-                        code.append('J');
-                    } else {
-                        code.append('K');
-                    }
-                    break ;
-                case 'H':
-                    if (isLastChar(wdsz, n)) {
-                        break ; // terminal H
-                    }
-                    if ((n > 0) && 
-                        (this.varson.indexOf(local.charAt(n - 1)) >= 0)) {
-                        break;
-                    }
-                    if (isVowel(local,n+1)) {
-                        code.append('H'); // Hvowel
-                    }
-                    break;
-                case 'F': 
-                case 'J' : 
-                case 'L' :
-                case 'M': 
-                case 'N' : 
-                case 'R' :
-                    code.append(symb); 
-                    break;
-                case 'K' :
-                    if (n > 0) { // not initial
-                        if (!isPreviousChar(local, n, 'C')) {
-                            code.append(symb);
-                        }
-                    } else {
-                        code.append(symb); // initial K
-                    }
-                    break ;
-                case 'P' :
-                    if (isNextChar(local,n,'H')) {
-                        // PH -> F
-                        code.append('F');
-                    } else {
-                        code.append(symb);
-                    }
-                    break ;
-                case 'Q' :
-                    code.append('K');
-                    break;
-                case 'S' :
-                    if (regionMatch(local,n,"SH") || 
-                        regionMatch(local,n,"SIO") || 
-                        regionMatch(local,n,"SIA")) {
-                        code.append('X');
-                    } else {
-                        code.append('S');
-                    }
-                    break;
-                case 'T' :
-                    if (regionMatch(local,n,"TIA") || 
-                        regionMatch(local,n,"TIO")) {
-                        code.append('X'); 
-                        break;
-                    }
-                    if (regionMatch(local,n,"TCH")) {
-                        // Silent if in "TCH"
-                        break;
-                    }
-                    // substitute numeral 0 for TH (resembles theta after all)
-                    if (regionMatch(local,n,"TH")) {
-                        code.append('0');
-                    } else {
-                        code.append('T');
-                    }
-                    break ;
-                case 'V' :
-                    code.append('F'); break ;
-                case 'W' : case 'Y' : // silent if not followed by vowel
-                    if (!isLastChar(wdsz,n) && 
-                        isVowel(local,n+1)) {
-                        code.append(symb);
-                    }
-                    break ;
-                case 'X' :
-                    code.append('K'); code.append('S');
-                    break ;
-                case 'Z' :
-                    code.append('S'); break ;
-                } // end switch
-                n++ ;
-            } // end else from symb != 'C'
-            if (code.length() > this.getMaxCodeLen()) { 
-                code.setLength(this.getMaxCodeLen()); 
-            }
-        }
-        return code.toString();
-    }
-
-    private boolean isVowel(StringBuffer string, int index) {
-        return (this.vowels.indexOf(string.charAt(index)) >= 0);
-    }
-
-    private boolean isPreviousChar(StringBuffer string, int index, char c) {
-        boolean matches = false;
-        if( index > 0 &&
-            index < string.length() ) {
-            matches = string.charAt(index - 1) == c;
-        }
-        return matches;
-    }
-
-    private boolean isNextChar(StringBuffer string, int index, char c) {
-        boolean matches = false;
-        if( index >= 0 &&
-            index < string.length() - 1 ) {
-            matches = string.charAt(index + 1) == c;
-        }
-        return matches;
-    }
-
-    private boolean regionMatch(StringBuffer string, int index, String test) {
-        boolean matches = false;
-        if( index >= 0 &&
-            (index + test.length() - 1) < string.length() ) {
-            String substring = string.substring( index, index + test.length());
-            matches = substring.equals( test );
-        }
-        return matches;
-    }
-
-    private boolean isLastChar(int wdsz, int n) {
-        return n + 1 == wdsz;
-    } 
-    
-    
-    /**
-     * Encodes an Object using the metaphone algorithm.  This method
-     * is provided in order to satisfy the requirements of the
-     * Encoder interface, and will throw an EncoderException if the
-     * supplied object is not of type java.lang.String.
-     *
-     * @param pObject Object to encode
-     * @return An object (or type java.lang.String) containing the 
-     *         metaphone code which corresponds to the String supplied.
-     * @throws EncoderException if the parameter supplied is not
-     *                          of type java.lang.String
-     */
-    public Object encode(Object pObject) throws EncoderException {
-        if (!(pObject instanceof java.lang.String)) {
-            throw new EncoderException("Parameter supplied to Metaphone encode is not of type java.lang.String"); 
-        }
-        return metaphone((String) pObject);
-    }
-
-    /**
-     * Encodes a String using the Metaphone algorithm. 
-     *
-     * @param pString String object to encode
-     * @return The metaphone code corresponding to the String supplied
-     */
-    public String encode(String pString) {
-        return metaphone(pString);   
-    }
-
-    /**
-     * Tests is the metaphones of two strings are identical.
-     *
-     * @param str1 First of two strings to compare
-     * @param str2 Second of two strings to compare
-     * @return true if the metaphones of these strings are identical, 
-     *         false otherwise.
-     */
-    public boolean isMetaphoneEqual(String str1, String str2) {
-        return metaphone(str1).equals(metaphone(str2));
-    }
-
-    /**
-     * Returns the maxCodeLen.
-     * @return int
-     */
-    public int getMaxCodeLen() { return this.maxCodeLen; }
-
-    /**
-     * Sets the maxCodeLen.
-     * @param maxCodeLen The maxCodeLen to set
-     */
-    public void setMaxCodeLen(int maxCodeLen) { this.maxCodeLen = maxCodeLen; }
-
-}
diff --git a/src/org/apache/commons/codec/language/RefinedSoundex.java b/src/org/apache/commons/codec/language/RefinedSoundex.java
deleted file mode 100644
index dbf60fe..0000000
--- a/src/org/apache/commons/codec/language/RefinedSoundex.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.language;
-
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.StringEncoder;
-
-/**
- * Encodes a string into a Refined Soundex value. A refined soundex code is
- * optimized for spell checking words. Soundex method originally developed by
- * <CITE>Margaret Odell</CITE> and <CITE>Robert Russell</CITE>.
- * 
- * @author Apache Software Foundation
- * @version $Id: RefinedSoundex.java,v 1.21 2004/06/05 18:32:04 ggregory Exp $
- */
-public class RefinedSoundex implements StringEncoder {
-
-    /**
-     * This static variable contains an instance of the RefinedSoundex using
-     * the US_ENGLISH mapping.
-     */
-    public static final RefinedSoundex US_ENGLISH = new RefinedSoundex();
-
-    /**
-     * RefinedSoundex is *refined* for a number of reasons one being that the
-     * mappings have been altered. This implementation contains default
-     * mappings for US English.
-     */
-    public static final char[] US_ENGLISH_MAPPING = "01360240043788015936020505".toCharArray();
-
-    /**
-     * Every letter of the alphabet is "mapped" to a numerical value. This char
-     * array holds the values to which each letter is mapped. This
-     * implementation contains a default map for US_ENGLISH
-     */
-    private char[] soundexMapping;
-
-    /**
-     * Creates an instance of the RefinedSoundex object using the default US
-     * English mapping.
-     */
-    public RefinedSoundex() {
-        this(US_ENGLISH_MAPPING);
-    }
-
-    /**
-     * Creates a refined soundex instance using a custom mapping. This
-     * constructor can be used to customize the mapping, and/or possibly
-     * provide an internationalized mapping for a non-Western character set.
-     * 
-     * @param mapping
-     *                  Mapping array to use when finding the corresponding code for
-     *                  a given character
-     */
-    public RefinedSoundex(char[] mapping) {
-        this.soundexMapping = mapping;
-    }
-
-    // BEGIN android-note
-    // Removed @see reference to SoundexUtils below, since the class isn't
-    // public.
-    // END android-note
-    /**
-     * Returns the number of characters in the two encoded Strings that are the
-     * same. This return value ranges from 0 to the length of the shortest
-     * encoded String: 0 indicates little or no similarity, and 4 out of 4 (for
-     * example) indicates strong similarity or identical values. For refined
-     * Soundex, the return value can be greater than 4.
-     * 
-     * @param s1
-     *                  A String that will be encoded and compared.
-     * @param s2
-     *                  A String that will be encoded and compared.
-     * @return The number of characters in the two encoded Strings that are the
-     *             same from 0 to to the length of the shortest encoded String.
-     * 
-     * @see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_de-dz_8co5.asp">
-     *          MS T-SQL DIFFERENCE</a>
-     * 
-     * @throws EncoderException
-     *                  if an error occurs encoding one of the strings
-     * @since 1.3
-     */
-    public int difference(String s1, String s2) throws EncoderException {
-        return SoundexUtils.difference(this, s1, s2);
-    }
-
-    /**
-     * Encodes an Object using the refined soundex algorithm. This method is
-     * provided in order to satisfy the requirements of the Encoder interface,
-     * and will throw an EncoderException if the supplied object is not of type
-     * java.lang.String.
-     * 
-     * @param pObject
-     *                  Object to encode
-     * @return An object (or type java.lang.String) containing the refined
-     *             soundex code which corresponds to the String supplied.
-     * @throws EncoderException
-     *                  if the parameter supplied is not of type java.lang.String
-     */
-    public Object encode(Object pObject) throws EncoderException {
-        if (!(pObject instanceof java.lang.String)) {
-            throw new EncoderException("Parameter supplied to RefinedSoundex encode is not of type java.lang.String");
-        }
-        return soundex((String) pObject);
-    }
-
-    /**
-     * Encodes a String using the refined soundex algorithm.
-     * 
-     * @param pString
-     *                  A String object to encode
-     * @return A Soundex code corresponding to the String supplied
-     */
-    public String encode(String pString) {
-        return soundex(pString);
-    }
-
-    /**
-     * Returns the mapping code for a given character. The mapping codes are
-     * maintained in an internal char array named soundexMapping, and the
-     * default values of these mappings are US English.
-     * 
-     * @param c
-     *                  char to get mapping for
-     * @return A character (really a numeral) to return for the given char
-     */
-    char getMappingCode(char c) {
-        if (!Character.isLetter(c)) {
-            return 0;
-        }
-        return this.soundexMapping[Character.toUpperCase(c) - 'A'];
-    }
-
-    /**
-     * Retreives the Refined Soundex code for a given String object.
-     * 
-     * @param str
-     *                  String to encode using the Refined Soundex algorithm
-     * @return A soundex code for the String supplied
-     */
-    public String soundex(String str) {
-        if (str == null) {
-            return null;
-        }
-        str = SoundexUtils.clean(str);
-        if (str.length() == 0) {
-            return str;
-        }
-
-        StringBuffer sBuf = new StringBuffer();
-        sBuf.append(str.charAt(0));
-
-        char last, current;
-        last = '*';
-
-        for (int i = 0; i < str.length(); i++) {
-
-            current = getMappingCode(str.charAt(i));
-            if (current == last) {
-                continue;
-            } else if (current != 0) {
-                sBuf.append(current);
-            }
-
-            last = current;
-
-        }
-
-        return sBuf.toString();
-    }
-}
diff --git a/src/org/apache/commons/codec/language/Soundex.java b/src/org/apache/commons/codec/language/Soundex.java
deleted file mode 100644
index 61ce440..0000000
--- a/src/org/apache/commons/codec/language/Soundex.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.language;
-
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.StringEncoder;
-
-/**
- * Encodes a string into a Soundex value. Soundex is an encoding used to relate similar names, but can also be used as a
- * general purpose scheme to find word with similar phonemes.
- * 
- * @author Apache Software Foundation
- * @version $Id: Soundex.java,v 1.26 2004/07/07 23:15:24 ggregory Exp $
- */
-public class Soundex implements StringEncoder {
-
-    /**
-     * An instance of Soundex using the US_ENGLISH_MAPPING mapping.
-     * 
-     * @see #US_ENGLISH_MAPPING
-     */
-    public static final Soundex US_ENGLISH = new Soundex();
-
-    /**
-     * This is a default mapping of the 26 letters used in US English. A value of <code>0</code> for a letter position
-     * means do not encode.
-     * <p>
-     * (This constant is provided as both an implementation convenience and to allow Javadoc to pick
-     * up the value for the constant values page.)
-     * </p>
-     * 
-     * @see #US_ENGLISH_MAPPING
-     */
-    public static final String US_ENGLISH_MAPPING_STRING = "01230120022455012623010202";
-
-    /**
-     * This is a default mapping of the 26 letters used in US English. A value of <code>0</code> for a letter position
-     * means do not encode.
-     * 
-     * @see Soundex#Soundex(char[])
-     */
-    public static final char[] US_ENGLISH_MAPPING = US_ENGLISH_MAPPING_STRING.toCharArray();
-
-    // BEGIN android-note
-    // Removed @see reference to SoundexUtils below, since the class isn't
-    // public.
-    // END android-note
-    /**
-     * Encodes the Strings and returns the number of characters in the two encoded Strings that are the same. This
-     * return value ranges from 0 through 4: 0 indicates little or no similarity, and 4 indicates strong similarity or
-     * identical values.
-     * 
-     * @param s1
-     *                  A String that will be encoded and compared.
-     * @param s2
-     *                  A String that will be encoded and compared.
-     * @return The number of characters in the two encoded Strings that are the same from 0 to 4.
-     * 
-     * @see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_de-dz_8co5.asp"> MS
-     *          T-SQL DIFFERENCE </a>
-     * 
-     * @throws EncoderException
-     *                  if an error occurs encoding one of the strings
-     * @since 1.3
-     */
-    public int difference(String s1, String s2) throws EncoderException {
-        return SoundexUtils.difference(this, s1, s2);
-    }
-
-    /**
-     * The maximum length of a Soundex code - Soundex codes are only four characters by definition.
-     * 
-     * @deprecated This feature is not needed since the encoding size must be constant. Will be removed in 2.0.
-     */
-    private int maxLength = 4;
-
-    /**
-     * Every letter of the alphabet is "mapped" to a numerical value. This char array holds the values to which each
-     * letter is mapped. This implementation contains a default map for US_ENGLISH
-     */
-    private char[] soundexMapping;
-
-    /**
-     * Creates an instance using US_ENGLISH_MAPPING
-     * 
-     * @see Soundex#Soundex(char[])
-     * @see Soundex#US_ENGLISH_MAPPING
-     */
-    public Soundex() {
-        this(US_ENGLISH_MAPPING);
-    }
-
-    /**
-     * Creates a soundex instance using the given mapping. This constructor can be used to provide an internationalized
-     * mapping for a non-Western character set.
-     * 
-     * Every letter of the alphabet is "mapped" to a numerical value. This char array holds the values to which each
-     * letter is mapped. This implementation contains a default map for US_ENGLISH
-     * 
-     * @param mapping
-     *                  Mapping array to use when finding the corresponding code for a given character
-     */
-    public Soundex(char[] mapping) {
-        this.setSoundexMapping(mapping);
-    }
-
-    /**
-     * Encodes an Object using the soundex algorithm. This method is provided in order to satisfy the requirements of
-     * the Encoder interface, and will throw an EncoderException if the supplied object is not of type java.lang.String.
-     * 
-     * @param pObject
-     *                  Object to encode
-     * @return An object (or type java.lang.String) containing the soundex code which corresponds to the String
-     *             supplied.
-     * @throws EncoderException
-     *                  if the parameter supplied is not of type java.lang.String
-     * @throws IllegalArgumentException
-     *                  if a character is not mapped
-     */
-    public Object encode(Object pObject) throws EncoderException {
-        if (!(pObject instanceof String)) {
-            throw new EncoderException("Parameter supplied to Soundex encode is not of type java.lang.String");
-        }
-        return soundex((String) pObject);
-    }
-
-    /**
-     * Encodes a String using the soundex algorithm.
-     * 
-     * @param pString
-     *                  A String object to encode
-     * @return A Soundex code corresponding to the String supplied
-     * @throws IllegalArgumentException
-     *                  if a character is not mapped
-     */
-    public String encode(String pString) {
-        return soundex(pString);
-    }
-
-    /**
-     * Used internally by the SoundEx algorithm.
-     * 
-     * Consonants from the same code group separated by W or H are treated as one.
-     * 
-     * @param str
-     *                  the cleaned working string to encode (in upper case).
-     * @param index
-     *                  the character position to encode
-     * @return Mapping code for a particular character
-     * @throws IllegalArgumentException
-     *                  if the character is not mapped
-     */
-    private char getMappingCode(String str, int index) {
-        char mappedChar = this.map(str.charAt(index));
-        // HW rule check
-        if (index > 1 && mappedChar != '0') {
-            char hwChar = str.charAt(index - 1);
-            if ('H' == hwChar || 'W' == hwChar) {
-                char preHWChar = str.charAt(index - 2);
-                char firstCode = this.map(preHWChar);
-                if (firstCode == mappedChar || 'H' == preHWChar || 'W' == preHWChar) {
-                    return 0;
-                }
-            }
-        }
-        return mappedChar;
-    }
-
-    /**
-     * Returns the maxLength. Standard Soundex
-     * 
-     * @deprecated This feature is not needed since the encoding size must be constant. Will be removed in 2.0.
-     * @return int
-     */
-    public int getMaxLength() {
-        return this.maxLength;
-    }
-
-    /**
-     * Returns the soundex mapping.
-     * 
-     * @return soundexMapping.
-     */
-    private char[] getSoundexMapping() {
-        return this.soundexMapping;
-    }
-
-    /**
-     * Maps the given upper-case character to it's Soudex code.
-     * 
-     * @param ch
-     *                  An upper-case character.
-     * @return A Soundex code.
-     * @throws IllegalArgumentException
-     *                  Thrown if <code>ch</code> is not mapped.
-     */
-    private char map(char ch) {
-        int index = ch - 'A';
-        if (index < 0 || index >= this.getSoundexMapping().length) {
-            throw new IllegalArgumentException("The character is not mapped: " + ch);
-        }
-        return this.getSoundexMapping()[index];
-    }
-
-    /**
-     * Sets the maxLength.
-     * 
-     * @deprecated This feature is not needed since the encoding size must be constant. Will be removed in 2.0.
-     * @param maxLength
-     *                  The maxLength to set
-     */
-    public void setMaxLength(int maxLength) {
-        this.maxLength = maxLength;
-    }
-
-    /**
-     * Sets the soundexMapping.
-     * 
-     * @param soundexMapping
-     *                  The soundexMapping to set.
-     */
-    private void setSoundexMapping(char[] soundexMapping) {
-        this.soundexMapping = soundexMapping;
-    }
-
-    /**
-     * Retreives the Soundex code for a given String object.
-     * 
-     * @param str
-     *                  String to encode using the Soundex algorithm
-     * @return A soundex code for the String supplied
-     * @throws IllegalArgumentException
-     *                  if a character is not mapped
-     */
-    public String soundex(String str) {
-        if (str == null) {
-            return null;
-        }
-        str = SoundexUtils.clean(str);
-        if (str.length() == 0) {
-            return str;
-        }
-        char out[] = {'0', '0', '0', '0'};
-        char last, mapped;
-        int incount = 1, count = 1;
-        out[0] = str.charAt(0);
-        last = getMappingCode(str, 0);
-        while ((incount < str.length()) && (count < out.length)) {
-            mapped = getMappingCode(str, incount++);
-            if (mapped != 0) {
-                if ((mapped != '0') && (mapped != last)) {
-                    out[count++] = mapped;
-                }
-                last = mapped;
-            }
-        }
-        return new String(out);
-    }
-
-}
diff --git a/src/org/apache/commons/codec/language/SoundexUtils.java b/src/org/apache/commons/codec/language/SoundexUtils.java
deleted file mode 100644
index 48f2d87..0000000
--- a/src/org/apache/commons/codec/language/SoundexUtils.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.language;
-
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.StringEncoder;
-
-/**
- * Utility methods for {@link Soundex} and {@link RefinedSoundex} classes.
- * 
- * @author Apache Software Foundation
- * @version $Id: SoundexUtils.java,v 1.5 2004/03/17 18:31:35 ggregory Exp $
- * @since 1.3
- */
-final class SoundexUtils {
-
-    /**
-     * Cleans up the input string before Soundex processing by only returning
-     * upper case letters.
-     * 
-     * @param str
-     *                  The String to clean.
-     * @return A clean String.
-     */
-    static String clean(String str) {
-        if (str == null || str.length() == 0) {
-            return str;
-        }
-        int len = str.length();
-        char[] chars = new char[len];
-        int count = 0;
-        for (int i = 0; i < len; i++) {
-            if (Character.isLetter(str.charAt(i))) {
-                chars[count++] = str.charAt(i);
-            }
-        }
-        if (count == len) {
-            return str.toUpperCase();
-        }
-        return new String(chars, 0, count).toUpperCase();
-    }
-
-    /**
-     * Encodes the Strings and returns the number of characters in the two
-     * encoded Strings that are the same.
-     * <ul>
-     * <li>For Soundex, this return value ranges from 0 through 4: 0 indicates
-     * little or no similarity, and 4 indicates strong similarity or identical
-     * values.</li>
-     * <li>For refined Soundex, the return value can be greater than 4.</li>
-     * </ul>
-     * 
-     * @param encoder
-     *                  The encoder to use to encode the Strings.
-     * @param s1
-     *                  A String that will be encoded and compared.
-     * @param s2
-     *                  A String that will be encoded and compared.
-     * @return The number of characters in the two Soundex encoded Strings that
-     *             are the same.
-     * 
-     * @see #differenceEncoded(String,String)
-     * @see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_de-dz_8co5.asp">
-     *          MS T-SQL DIFFERENCE</a>
-     * 
-     * @throws EncoderException
-     *                  if an error occurs encoding one of the strings
-     */
-    static int difference(StringEncoder encoder, String s1, String s2) throws EncoderException {
-        return differenceEncoded(encoder.encode(s1), encoder.encode(s2));
-    }
-
-    /**
-     * Returns the number of characters in the two Soundex encoded Strings that
-     * are the same.
-     * <ul>
-     * <li>For Soundex, this return value ranges from 0 through 4: 0 indicates
-     * little or no similarity, and 4 indicates strong similarity or identical
-     * values.</li>
-     * <li>For refined Soundex, the return value can be greater than 4.</li>
-     * </ul>
-     * 
-     * @param es1
-     *                  An encoded String.
-     * @param es2
-     *                  An encoded String.
-     * @return The number of characters in the two Soundex encoded Strings that
-     *             are the same.
-     * 
-     * @see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_de-dz_8co5.asp">
-     *          MS T-SQL DIFFERENCE</a>
-     */
-    static int differenceEncoded(String es1, String es2) {
-
-        if (es1 == null || es2 == null) {
-            return 0;
-        }
-        int lengthToMatch = Math.min(es1.length(), es2.length());
-        int diff = 0;
-        for (int i = 0; i < lengthToMatch; i++) {
-            if (es1.charAt(i) == es2.charAt(i)) {
-                diff++;
-            }
-        }
-        return diff;
-    }
-
-}
diff --git a/src/org/apache/commons/codec/language/package.html b/src/org/apache/commons/codec/language/package.html
deleted file mode 100644
index fab8e4c..0000000
--- a/src/org/apache/commons/codec/language/package.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!--
-Copyright 2003-2004 The Apache Software Foundation.
- 
-Licensed 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.
--->
-<html>
- <body>
-  Language and phonetic encoders.
- </body>
-</html>
diff --git a/src/org/apache/commons/codec/net/BCodec.java b/src/org/apache/commons/codec/net/BCodec.java
deleted file mode 100644
index b164100..0000000
--- a/src/org/apache/commons/codec/net/BCodec.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.net;
-
-import java.io.UnsupportedEncodingException;
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.StringDecoder;
-import org.apache.commons.codec.StringEncoder;
-import org.apache.commons.codec.binary.Base64;
-
-/**
- * <p>
- * Identical to the Base64 encoding defined by <a href="http://www.ietf.org/rfc/rfc1521.txt">RFC
- * 1521</a> and allows a character set to be specified.
- * </p>
- * 
- * <p>
- * <a href="http://www.ietf.org/rfc/rfc1522.txt">RFC 1522</a> describes techniques to allow the encoding of non-ASCII
- * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
- * handling software.
- * </p>
- * 
- * @see <a href="http://www.ietf.org/rfc/rfc1522.txt">MIME (Multipurpose Internet Mail Extensions) Part Two: Message
- *          Header Extensions for Non-ASCII Text</a>
- * 
- * @author Apache Software Foundation
- * @since 1.3
- * @version $Id: BCodec.java,v 1.5 2004/04/13 22:46:37 ggregory Exp $
- */
-public class BCodec extends RFC1522Codec implements StringEncoder, StringDecoder {
-    /**
-     * The default charset used for string decoding and encoding.
-     */
-    private String charset = StringEncodings.UTF8;
-
-    /**
-     * Default constructor.
-     */
-    public BCodec() {
-        super();
-    }
-
-    /**
-     * Constructor which allows for the selection of a default charset
-     * 
-     * @param charset
-     *                  the default string charset to use.
-     * 
-     * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character
-     *          encoding names</a>
-     */
-    public BCodec(final String charset) {
-        super();
-        this.charset = charset;
-    }
-
-    protected String getEncoding() {
-        return "B";
-    }
-
-    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
-        if (bytes == null) {
-            return null;
-        }
-        return Base64.encodeBase64(bytes);
-    }
-
-    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
-        if (bytes == null) {
-            return null;
-        }
-        return Base64.decodeBase64(bytes);
-    }
-
-    /**
-     * Encodes a string into its Base64 form using the specified charset. Unsafe characters are escaped.
-     * 
-     * @param value
-     *                  string to convert to Base64 form
-     * @param charset
-     *                  the charset for pString
-     * @return Base64 string
-     * 
-     * @throws EncoderException
-     *                  thrown if a failure condition is encountered during the encoding process.
-     */
-    public String encode(final String value, final String charset) throws EncoderException {
-        if (value == null) {
-            return null;
-        }
-        try {
-            return encodeText(value, charset);
-        } catch (UnsupportedEncodingException e) {
-            throw new EncoderException(e.getMessage());
-        }
-    }
-
-    /**
-     * Encodes a string into its Base64 form using the default charset. Unsafe characters are escaped.
-     * 
-     * @param value
-     *                  string to convert to Base64 form
-     * @return Base64 string
-     * 
-     * @throws EncoderException
-     *                  thrown if a failure condition is encountered during the encoding process.
-     */
-    public String encode(String value) throws EncoderException {
-        if (value == null) {
-            return null;
-        }
-        return encode(value, getDefaultCharset());
-    }
-
-    /**
-     * Decodes a Base64 string into its original form. Escaped characters are converted back to their original
-     * representation.
-     * 
-     * @param value
-     *                  Base64 string to convert into its original form
-     * 
-     * @return original string
-     * 
-     * @throws DecoderException
-     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
-     */
-    public String decode(String value) throws DecoderException {
-        if (value == null) {
-            return null;
-        }
-        try {
-            return decodeText(value);
-        } catch (UnsupportedEncodingException e) {
-            throw new DecoderException(e.getMessage());
-        }
-    }
-
-    /**
-     * Encodes an object into its Base64 form using the default charset. Unsafe characters are escaped.
-     * 
-     * @param value
-     *                  object to convert to Base64 form
-     * @return Base64 object
-     * 
-     * @throws EncoderException
-     *                  thrown if a failure condition is encountered during the encoding process.
-     */
-    public Object encode(Object value) throws EncoderException {
-        if (value == null) {
-            return null;
-        } else if (value instanceof String) {
-            return encode((String) value);
-        } else {
-            throw new EncoderException("Objects of type "
-                + value.getClass().getName()
-                + " cannot be encoded using BCodec");
-        }
-    }
-
-    /**
-     * Decodes a Base64 object into its original form. Escaped characters are converted back to their original
-     * representation.
-     * 
-     * @param value
-     *                  Base64 object to convert into its original form
-     * 
-     * @return original object
-     * 
-     * @throws DecoderException
-     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
-     */
-    public Object decode(Object value) throws DecoderException {
-        if (value == null) {
-            return null;
-        } else if (value instanceof String) {
-            return decode((String) value);
-        } else {
-            throw new DecoderException("Objects of type "
-                + value.getClass().getName()
-                + " cannot be decoded using BCodec");
-        }
-    }
-
-    /**
-     * The default charset used for string decoding and encoding.
-     * 
-     * @return the default string charset.
-     */
-    public String getDefaultCharset() {
-        return this.charset;
-    }
-}
diff --git a/src/org/apache/commons/codec/net/QCodec.java b/src/org/apache/commons/codec/net/QCodec.java
deleted file mode 100644
index 5736080..0000000
--- a/src/org/apache/commons/codec/net/QCodec.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.net;
-
-import java.io.UnsupportedEncodingException;
-import java.util.BitSet;
-
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.StringDecoder;
-import org.apache.commons.codec.StringEncoder;
-
-/**
- * <p>
- * Similar to the Quoted-Printable content-transfer-encoding defined in <a
- * href="http://www.ietf.org/rfc/rfc1521.txt">RFC 1521</a> and designed to allow text containing mostly ASCII
- * characters to be decipherable on an ASCII terminal without decoding.
- * </p>
- * 
- * <p>
- * <a href="http://www.ietf.org/rfc/rfc1522.txt">RFC 1522</a> describes techniques to allow the encoding of non-ASCII
- * text in various portions of a RFC 822 [2] message header, in a manner which is unlikely to confuse existing message
- * handling software.
- * </p>
- * 
- * @see <a href="http://www.ietf.org/rfc/rfc1522.txt">MIME (Multipurpose Internet Mail Extensions) Part Two: Message
- *          Header Extensions for Non-ASCII Text</a>
- * 
- * @author Apache Software Foundation
- * @since 1.3
- * @version $Id: QCodec.java,v 1.6 2004/05/24 00:24:32 ggregory Exp $
- */
-public class QCodec extends RFC1522Codec implements StringEncoder, StringDecoder {
-    /**
-     * The default charset used for string decoding and encoding.
-     */
-    private String charset = StringEncodings.UTF8;
-
-    /**
-     * BitSet of printable characters as defined in RFC 1522.
-     */
-    private static final BitSet PRINTABLE_CHARS = new BitSet(256);
-    // Static initializer for printable chars collection
-    static {
-        // alpha characters
-        PRINTABLE_CHARS.set(' ');
-        PRINTABLE_CHARS.set('!');
-        PRINTABLE_CHARS.set('"');
-        PRINTABLE_CHARS.set('#');
-        PRINTABLE_CHARS.set('$');
-        PRINTABLE_CHARS.set('%');
-        PRINTABLE_CHARS.set('&');
-        PRINTABLE_CHARS.set('\'');
-        PRINTABLE_CHARS.set('(');
-        PRINTABLE_CHARS.set(')');
-        PRINTABLE_CHARS.set('*');
-        PRINTABLE_CHARS.set('+');
-        PRINTABLE_CHARS.set(',');
-        PRINTABLE_CHARS.set('-');
-        PRINTABLE_CHARS.set('.');
-        PRINTABLE_CHARS.set('/');
-        for (int i = '0'; i <= '9'; i++) {
-            PRINTABLE_CHARS.set(i);
-        }
-        PRINTABLE_CHARS.set(':');
-        PRINTABLE_CHARS.set(';');
-        PRINTABLE_CHARS.set('<');
-        PRINTABLE_CHARS.set('>');
-        PRINTABLE_CHARS.set('@');
-        for (int i = 'A'; i <= 'Z'; i++) {
-            PRINTABLE_CHARS.set(i);
-        }
-        PRINTABLE_CHARS.set('[');
-        PRINTABLE_CHARS.set('\\');
-        PRINTABLE_CHARS.set(']');
-        PRINTABLE_CHARS.set('^');
-        PRINTABLE_CHARS.set('`');
-        for (int i = 'a'; i <= 'z'; i++) {
-            PRINTABLE_CHARS.set(i);
-        }
-        PRINTABLE_CHARS.set('{');
-        PRINTABLE_CHARS.set('|');
-        PRINTABLE_CHARS.set('}');
-        PRINTABLE_CHARS.set('~');
-    }
-
-    private static byte BLANK = 32;
-
-    private static byte UNDERSCORE = 95;
-
-    private boolean encodeBlanks = false;
-
-    /**
-     * Default constructor.
-     */
-    public QCodec() {
-        super();
-    }
-
-    /**
-     * Constructor which allows for the selection of a default charset
-     * 
-     * @param charset
-     *                  the default string charset to use.
-     * 
-     * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character
-     *          encoding names</a>
-     */
-    public QCodec(final String charset) {
-        super();
-        this.charset = charset;
-    }
-
-    protected String getEncoding() {
-        return "Q";
-    }
-
-    protected byte[] doEncoding(byte[] bytes) throws EncoderException {
-        if (bytes == null) {
-            return null;
-        }
-        byte[] data = QuotedPrintableCodec.encodeQuotedPrintable(PRINTABLE_CHARS, bytes);
-        if (this.encodeBlanks) {
-            for (int i = 0; i < data.length; i++) {
-                if (data[i] == BLANK) {
-                    data[i] = UNDERSCORE;
-                }
-            }
-        }
-        return data;
-    }
-
-    protected byte[] doDecoding(byte[] bytes) throws DecoderException {
-        if (bytes == null) {
-            return null;
-        }
-        boolean hasUnderscores = false;
-        for (int i = 0; i < bytes.length; i++) {
-            if (bytes[i] == UNDERSCORE) {
-                hasUnderscores = true;
-                break;
-            }
-        }
-        if (hasUnderscores) {
-            byte[] tmp = new byte[bytes.length];
-            for (int i = 0; i < bytes.length; i++) {
-                byte b = bytes[i];
-                if (b != UNDERSCORE) {
-                    tmp[i] = b;
-                } else {
-                    tmp[i] = BLANK;
-                }
-            }
-            return QuotedPrintableCodec.decodeQuotedPrintable(tmp);
-        } 
-        return QuotedPrintableCodec.decodeQuotedPrintable(bytes);       
-    }
-
-    /**
-     * Encodes a string into its quoted-printable form using the specified charset. Unsafe characters are escaped.
-     * 
-     * @param pString
-     *                  string to convert to quoted-printable form
-     * @param charset
-     *                  the charset for pString
-     * @return quoted-printable string
-     * 
-     * @throws EncoderException
-     *                  thrown if a failure condition is encountered during the encoding process.
-     */
-    public String encode(final String pString, final String charset) throws EncoderException {
-        if (pString == null) {
-            return null;
-        }
-        try {
-            return encodeText(pString, charset);
-        } catch (UnsupportedEncodingException e) {
-            throw new EncoderException(e.getMessage());
-        }
-    }
-
-    /**
-     * Encodes a string into its quoted-printable form using the default charset. Unsafe characters are escaped.
-     * 
-     * @param pString
-     *                  string to convert to quoted-printable form
-     * @return quoted-printable string
-     * 
-     * @throws EncoderException
-     *                  thrown if a failure condition is encountered during the encoding process.
-     */
-    public String encode(String pString) throws EncoderException {
-        if (pString == null) {
-            return null;
-        }
-        return encode(pString, getDefaultCharset());
-    }
-
-    /**
-     * Decodes a quoted-printable string into its original form. Escaped characters are converted back to their original
-     * representation.
-     * 
-     * @param pString
-     *                  quoted-printable string to convert into its original form
-     * 
-     * @return original string
-     * 
-     * @throws DecoderException
-     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
-     */
-    public String decode(String pString) throws DecoderException {
-        if (pString == null) {
-            return null;
-        }
-        try {
-            return decodeText(pString);
-        } catch (UnsupportedEncodingException e) {
-            throw new DecoderException(e.getMessage());
-        }
-    }
-
-    /**
-     * Encodes an object into its quoted-printable form using the default charset. Unsafe characters are escaped.
-     * 
-     * @param pObject
-     *                  object to convert to quoted-printable form
-     * @return quoted-printable object
-     * 
-     * @throws EncoderException
-     *                  thrown if a failure condition is encountered during the encoding process.
-     */
-    public Object encode(Object pObject) throws EncoderException {
-        if (pObject == null) {
-            return null;
-        } else if (pObject instanceof String) {
-            return encode((String) pObject);
-        } else {
-            throw new EncoderException("Objects of type "
-                + pObject.getClass().getName()
-                + " cannot be encoded using Q codec");
-        }
-    }
-
-    /**
-     * Decodes a quoted-printable object into its original form. Escaped characters are converted back to their original
-     * representation.
-     * 
-     * @param pObject
-     *                  quoted-printable object to convert into its original form
-     * 
-     * @return original object
-     * 
-     * @throws DecoderException
-     *                  A decoder exception is thrown if a failure condition is encountered during the decode process.
-     */
-    public Object decode(Object pObject) throws DecoderException {
-        if (pObject == null) {
-            return null;
-        } else if (pObject instanceof String) {
-            return decode((String) pObject);
-        } else {
-            throw new DecoderException("Objects of type "
-                + pObject.getClass().getName()
-                + " cannot be decoded using Q codec");
-        }
-    }
-
-    /**
-     * The default charset used for string decoding and encoding.
-     * 
-     * @return the default string charset.
-     */
-    public String getDefaultCharset() {
-        return this.charset;
-    }
-
-    /**
-     * Tests if optional tranformation of SPACE characters is to be used
-     * 
-     * @return <code>true</code> if SPACE characters are to be transformed, <code>false</code> otherwise
-     */
-    public boolean isEncodeBlanks() {
-        return this.encodeBlanks;
-    }
-
-    /**
-     * Defines whether optional tranformation of SPACE characters is to be used
-     * 
-     * @param b
-     *                  <code>true</code> if SPACE characters are to be transformed, <code>false</code> otherwise
-     */
-    public void setEncodeBlanks(boolean b) {
-        this.encodeBlanks = b;
-    }
-}
diff --git a/src/org/apache/commons/codec/net/QuotedPrintableCodec.java b/src/org/apache/commons/codec/net/QuotedPrintableCodec.java
deleted file mode 100644
index c2fcd27..0000000
--- a/src/org/apache/commons/codec/net/QuotedPrintableCodec.java
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.net;
-
-import java.io.ByteArrayOutputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.BitSet;
-import org.apache.commons.codec.BinaryDecoder;
-import org.apache.commons.codec.BinaryEncoder;
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.StringDecoder;
-import org.apache.commons.codec.StringEncoder;
-
-/**
- * <p>
- * Codec for the Quoted-Printable section of <a href="http://www.ietf.org/rfc/rfc1521.txt">RFC 1521 </a>.
- * </p>
- * <p>
- * The Quoted-Printable encoding is intended to represent data that largely consists of octets that correspond to
- * printable characters in the ASCII character set. It encodes the data in such a way that the resulting octets are
- * unlikely to be modified by mail transport. If the data being encoded are mostly ASCII text, the encoded form of the
- * data remains largely recognizable by humans. A body which is entirely ASCII may also be encoded in Quoted-Printable
- * to ensure the integrity of the data should the message pass through a character- translating, and/or line-wrapping
- * gateway.
- * </p>
- * 
- * <p>
- * Note:
- * </p>
- * <p>
- * Rules #3, #4, and #5 of the quoted-printable spec are not implemented yet because the complete quoted-printable spec
- * does not lend itself well into the byte[] oriented codec framework. Complete the codec once the steamable codec
- * framework is ready. The motivation behind providing the codec in a partial form is that it can already come in handy
- * for those applications that do not require quoted-printable line formatting (rules #3, #4, #5), for instance Q codec.
- * </p>
- * 
- * @see <a href="http://www.ietf.org/rfc/rfc1521.txt"> RFC 1521 MIME (Multipurpose Internet Mail Extensions) Part One:
- *          Mechanisms for Specifying and Describing the Format of Internet Message Bodies </a>
- * 
- * @author Apache Software Foundation
- * @since 1.3
- * @version $Id: QuotedPrintableCodec.java,v 1.7 2004/04/09 22:21:07 ggregory Exp $
- */
-public class QuotedPrintableCodec implements BinaryEncoder, BinaryDecoder, StringEncoder, StringDecoder {
-    /**
-     * The default charset used for string decoding and encoding.
-     */
-    private String charset = StringEncodings.UTF8;
-
-    /**
-     * BitSet of printable characters as defined in RFC 1521.
-     */
-    private static final BitSet PRINTABLE_CHARS = new BitSet(256);
-
-    private static byte ESCAPE_CHAR = '=';
-
-    private static byte TAB = 9;
-
-    private static byte SPACE = 32;
-    // Static initializer for printable chars collection
-    static {
-        // alpha characters
-        for (int i = 33; i <= 60; i++) {
-            PRINTABLE_CHARS.set(i);
-        }
-        for (int i = 62; i <= 126; i++) {
-            PRINTABLE_CHARS.set(i);
-        }
-        PRINTABLE_CHARS.set(TAB);
-        PRINTABLE_CHARS.set(SPACE);
-    }
-
-    /**
-     * Default constructor.
-     */
-    public QuotedPrintableCodec() {
-        super();
-    }
-
-    /**
-     * Constructor which allows for the selection of a default charset
-     * 
-     * @param charset
-     *                  the default string charset to use.
-     */
-    public QuotedPrintableCodec(String charset) {
-        super();
-        this.charset = charset;
-    }
-
-    /**
-     * Encodes byte into its quoted-printable representation.
-     * 
-     * @param b
-     *                  byte to encode
-     * @param buffer
-     *                  the buffer to write to
-     */
-    private static final void encodeQuotedPrintable(int b, ByteArrayOutputStream buffer) {
-        buffer.write(ESCAPE_CHAR);
-        char hex1 = Character.toUpperCase(Character.forDigit((b >> 4) & 0xF, 16));
-        char hex2 = Character.toUpperCase(Character.forDigit(b & 0xF, 16));
-        buffer.write(hex1);
-        buffer.write(hex2);
-    }
-
-    /**
-     * Encodes an array of bytes into an array of quoted-printable 7-bit characters. Unsafe characters are escaped.
-     * 
-     * <p>
-     * This function implements a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in
-     * RFC 1521 and is suitable for encoding binary data and unformatted text.
-     * </p>
-     * 
-     * @param printable
-     *                  bitset of characters deemed quoted-printable
-     * @param bytes
-     *                  array of bytes to be encoded
-     * @return array of bytes containing quoted-printable data
-     */
-    public static final byte[] encodeQuotedPrintable(BitSet printable, byte[] bytes) {
-        if (bytes == null) {
-            return null;
-        }
-        if (printable == null) {
-            printable = PRINTABLE_CHARS;
-        }
-        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-        for (int i = 0; i < bytes.length; i++) {
-            int b = bytes[i];
-            if (b < 0) {
-                b = 256 + b;
-            }
-            if (printable.get(b)) {
-                buffer.write(b);
-            } else {
-                encodeQuotedPrintable(b, buffer);
-            }
-        }
-        return buffer.toByteArray();
-    }
-
-    /**
-     * Decodes an array quoted-printable characters into an array of original bytes. Escaped characters are converted
-     * back to their original representation.
-     * 
-     * <p>
-     * This function implements a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in
-     * RFC 1521.
-     * </p>
-     * 
-     * @param bytes
-     *                  array of quoted-printable characters
-     * @return array of original bytes
-     * @throws DecoderException
-     *                  Thrown if quoted-printable decoding is unsuccessful
-     */
-    public static final byte[] decodeQuotedPrintable(byte[] bytes) throws DecoderException {
-        if (bytes == null) {
-            return null;
-        }
-        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-        for (int i = 0; i < bytes.length; i++) {
-            int b = bytes[i];
-            if (b == ESCAPE_CHAR) {
-                try {
-                    int u = Character.digit((char) bytes[++i], 16);
-                    int l = Character.digit((char) bytes[++i], 16);
-                    if (u == -1 || l == -1) {
-                        throw new DecoderException("Invalid quoted-printable encoding");
-                    }
-                    buffer.write((char) ((u << 4) + l));
-                } catch (ArrayIndexOutOfBoundsException e) {
-                    throw new DecoderException("Invalid quoted-printable encoding");
-                }
-            } else {
-                buffer.write(b);
-            }
-        }
-        return buffer.toByteArray();
-    }
-
-    /**
-     * Encodes an array of bytes into an array of quoted-printable 7-bit characters. Unsafe characters are escaped.
-     * 
-     * <p>
-     * This function implements a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in
-     * RFC 1521 and is suitable for encoding binary data and unformatted text.
-     * </p>
-     * 
-     * @param bytes
-     *                  array of bytes to be encoded
-     * @return array of bytes containing quoted-printable data
-     */
-    public byte[] encode(byte[] bytes) {
-        return encodeQuotedPrintable(PRINTABLE_CHARS, bytes);
-    }
-
-    /**
-     * Decodes an array of quoted-printable characters into an array of original bytes. Escaped characters are converted
-     * back to their original representation.
-     * 
-     * <p>
-     * This function implements a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in
-     * RFC 1521.
-     * </p>
-     * 
-     * @param bytes
-     *                  array of quoted-printable characters
-     * @return array of original bytes
-     * @throws DecoderException
-     *                  Thrown if quoted-printable decoding is unsuccessful
-     */
-    public byte[] decode(byte[] bytes) throws DecoderException {
-        return decodeQuotedPrintable(bytes);
-    }
-
-    /**
-     * Encodes a string into its quoted-printable form using the default string charset. Unsafe characters are escaped.
-     * 
-     * <p>
-     * This function implements a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in
-     * RFC 1521 and is suitable for encoding binary data.
-     * </p>
-     * 
-     * @param pString
-     *                  string to convert to quoted-printable form
-     * @return quoted-printable string
-     * 
-     * @throws EncoderException
-     *                  Thrown if quoted-printable encoding is unsuccessful
-     * 
-     * @see #getDefaultCharset()
-     */
-    public String encode(String pString) throws EncoderException {
-        if (pString == null) {
-            return null;
-        }
-        try {
-            return encode(pString, getDefaultCharset());
-        } catch (UnsupportedEncodingException e) {
-            throw new EncoderException(e.getMessage());
-        }
-    }
-
-    /**
-     * Decodes a quoted-printable string into its original form using the specified string charset. Escaped characters
-     * are converted back to their original representation.
-     * 
-     * @param pString
-     *                  quoted-printable string to convert into its original form
-     * @param charset
-     *                  the original string charset
-     * @return original string
-     * @throws DecoderException
-     *                  Thrown if quoted-printable decoding is unsuccessful
-     * @throws UnsupportedEncodingException
-     *                  Thrown if charset is not supported
-     */
-    public String decode(String pString, String charset) throws DecoderException, UnsupportedEncodingException {
-        if (pString == null) {
-            return null;
-        }
-        return new String(decode(pString.getBytes(StringEncodings.US_ASCII)), charset);
-    }
-
-    /**
-     * Decodes a quoted-printable string into its original form using the default string charset. Escaped characters are
-     * converted back to their original representation.
-     * 
-     * @param pString
-     *                  quoted-printable string to convert into its original form
-     * @return original string
-     * @throws DecoderException
-     *                  Thrown if quoted-printable decoding is unsuccessful
-     * @throws UnsupportedEncodingException
-     *                  Thrown if charset is not supported
-     * @see #getDefaultCharset()
-     */
-    public String decode(String pString) throws DecoderException {
-        if (pString == null) {
-            return null;
-        }
-        try {
-            return decode(pString, getDefaultCharset());
-        } catch (UnsupportedEncodingException e) {
-            throw new DecoderException(e.getMessage());
-        }
-    }
-
-    /**
-     * Encodes an object into its quoted-printable safe form. Unsafe characters are escaped.
-     * 
-     * @param pObject
-     *                  string to convert to a quoted-printable form
-     * @return quoted-printable object
-     * @throws EncoderException
-     *                  Thrown if quoted-printable encoding is not applicable to objects of this type or if encoding is
-     *                  unsuccessful
-     */
-    public Object encode(Object pObject) throws EncoderException {
-        if (pObject == null) {
-            return null;
-        } else if (pObject instanceof byte[]) {
-            return encode((byte[]) pObject);
-        } else if (pObject instanceof String) {
-            return encode((String) pObject);
-        } else {
-            throw new EncoderException("Objects of type "
-                + pObject.getClass().getName()
-                + " cannot be quoted-printable encoded");
-        }
-    }
-
-    /**
-     * Decodes a quoted-printable object into its original form. Escaped characters are converted back to their original
-     * representation.
-     * 
-     * @param pObject
-     *                  quoted-printable object to convert into its original form
-     * @return original object
-     * @throws DecoderException
-     *                  Thrown if quoted-printable decoding is not applicable to objects of this type if decoding is
-     *                  unsuccessful
-     */
-    public Object decode(Object pObject) throws DecoderException {
-        if (pObject == null) {
-            return null;
-        } else if (pObject instanceof byte[]) {
-            return decode((byte[]) pObject);
-        } else if (pObject instanceof String) {
-            return decode((String) pObject);
-        } else {
-            throw new DecoderException("Objects of type "
-                + pObject.getClass().getName()
-                + " cannot be quoted-printable decoded");
-        }
-    }
-
-    /**
-     * Returns the default charset used for string decoding and encoding.
-     * 
-     * @return the default string charset.
-     */
-    public String getDefaultCharset() {
-        return this.charset;
-    }
-
-    /**
-     * Encodes a string into its quoted-printable form using the specified charset. Unsafe characters are escaped.
-     * 
-     * <p>
-     * This function implements a subset of quoted-printable encoding specification (rule #1 and rule #2) as defined in
-     * RFC 1521 and is suitable for encoding binary data and unformatted text.
-     * </p>
-     * 
-     * @param pString
-     *                  string to convert to quoted-printable form
-     * @param charset
-     *                  the charset for pString
-     * @return quoted-printable string
-     * 
-     * @throws UnsupportedEncodingException
-     *                  Thrown if the charset is not supported
-     */
-    public String encode(String pString, String charset) throws UnsupportedEncodingException {
-        if (pString == null) {
-            return null;
-        }
-        return new String(encode(pString.getBytes(charset)), StringEncodings.US_ASCII);
-    }
-}
diff --git a/src/org/apache/commons/codec/net/RFC1522Codec.java b/src/org/apache/commons/codec/net/RFC1522Codec.java
deleted file mode 100644
index 0acf921..0000000
--- a/src/org/apache/commons/codec/net/RFC1522Codec.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.net;
-
-import java.io.UnsupportedEncodingException;
-
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.EncoderException;
-
-/**
- * <p>
- * Implements methods common to all codecs defined in RFC 1522.
- * </p>
- * 
- * <p>
- * <a href="http://www.ietf.org/rfc/rfc1522.txt">RFC 1522</a> 
- * describes techniques to allow the encoding of non-ASCII text in 
- * various portions of a RFC 822 [2] message header, in a manner which
- * is unlikely to confuse existing message handling software.
- * </p>
-
- * @see <a href="http://www.ietf.org/rfc/rfc1522.txt">
- * MIME (Multipurpose Internet Mail Extensions) Part Two:
- * Message Header Extensions for Non-ASCII Text</a>
- * </p>
- * 
- * @author Apache Software Foundation
- * @since 1.3
- * @version $Id: RFC1522Codec.java,v 1.2 2004/04/09 22:21:43 ggregory Exp $
- */
-abstract class RFC1522Codec {
-    
-    /**
-     * Applies an RFC 1522 compliant encoding scheme to the given string of text with the 
-     * given charset. This method constructs the "encoded-word" header common to all the 
-     * RFC 1522 codecs and then invokes {@link #doEncoding(byte [])} method of a concrete 
-     * class to perform the specific enconding.
-     * 
-     * @param text a string to encode
-     * @param charset a charset to be used
-     * 
-     * @return RFC 1522 compliant "encoded-word"
-     * 
-     * @throws EncoderException thrown if there is an error conidition during the Encoding 
-     *  process.
-     * @throws UnsupportedEncodingException thrown if charset is not supported 
-     * 
-     * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character
-     *          encoding names</a>
-     */
-    protected String encodeText(final String text, final String charset)
-     throws EncoderException, UnsupportedEncodingException  
-    {
-        if (text == null) {
-            return null;
-        }
-        StringBuffer buffer = new StringBuffer();
-        buffer.append("=?"); 
-        buffer.append(charset); 
-        buffer.append('?'); 
-        buffer.append(getEncoding()); 
-        buffer.append('?');
-        byte [] rawdata = doEncoding(text.getBytes(charset)); 
-        buffer.append(new String(rawdata, StringEncodings.US_ASCII));
-        buffer.append("?="); 
-        return buffer.toString();
-    }
-    
-    /**
-     * Applies an RFC 1522 compliant decoding scheme to the given string of text. This method 
-     * processes the "encoded-word" header common to all the RFC 1522 codecs and then invokes 
-     * {@link #doEncoding(byte [])} method of a concrete class to perform the specific deconding.
-     * 
-     * @param text a string to decode
-     * 
-     * @throws DecoderException thrown if there is an error conidition during the Decoding 
-     *  process.
-     * @throws UnsupportedEncodingException thrown if charset specified in the "encoded-word" 
-     *  header is not supported 
-     */
-    protected String decodeText(final String text)
-     throws DecoderException, UnsupportedEncodingException  
-    {
-        if (text == null) {
-            return null;
-        }
-        if ((!text.startsWith("=?")) || (!text.endsWith("?="))) {
-            throw new DecoderException("RFC 1522 violation: malformed encoded content");
-        }
-        int termnator = text.length() - 2;
-        int from = 2;
-        int to = text.indexOf("?", from);
-        if ((to == -1) || (to == termnator)) {
-            throw new DecoderException("RFC 1522 violation: charset token not found");
-        }
-        String charset = text.substring(from, to);
-        if (charset.equals("")) {
-            throw new DecoderException("RFC 1522 violation: charset not specified");
-        }
-        from = to + 1;
-        to = text.indexOf("?", from);
-        if ((to == -1) || (to == termnator)) {
-            throw new DecoderException("RFC 1522 violation: encoding token not found");
-        }
-        String encoding = text.substring(from, to);
-        if (!getEncoding().equalsIgnoreCase(encoding)) {
-            throw new DecoderException("This codec cannot decode " + 
-                encoding + " encoded content");
-        }
-        from = to + 1;
-        to = text.indexOf("?", from);
-        byte[] data = text.substring(from, to).getBytes(StringEncodings.US_ASCII);
-        data = doDecoding(data); 
-        return new String(data, charset);
-    }
-
-    /**
-     * Returns the codec name (referred to as encoding in the RFC 1522)
-     * 
-     * @return name of the codec
-     */    
-    protected abstract String getEncoding();
-
-    /**
-     * Encodes an array of bytes using the defined encoding scheme
-     * 
-     * @param bytes Data to be encoded
-     *
-     * @return A byte array containing the encoded data
-     * 
-     * @throws EncoderException thrown if the Encoder encounters a failure condition 
-     *  during the encoding process.
-     */    
-    protected abstract byte[] doEncoding(byte[] bytes) throws EncoderException;
-
-    /**
-     * Decodes an array of bytes using the defined encoding scheme
-     * 
-     * @param bytes Data to be decoded
-     *
-     * @return a byte array that contains decoded data
-     * 
-     * @throws DecoderException A decoder exception is thrown if a Decoder encounters a 
-     *  failure condition during the decode process.
-     */    
-    protected abstract byte[] doDecoding(byte[] bytes) throws DecoderException;
-}
diff --git a/src/org/apache/commons/codec/net/StringEncodings.java b/src/org/apache/commons/codec/net/StringEncodings.java
deleted file mode 100644
index e7f6bb8..0000000
--- a/src/org/apache/commons/codec/net/StringEncodings.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.net;
-
-/**
- * String encodings used in this package.
- * 
- * @author Apache Software Foundation
- * @since 1.3
- * @version $Id: StringEncodings.java,v 1.2 2004/04/09 22:21:07 ggregory Exp $
- */
-interface StringEncodings {
-    /**
-     * <p>
-     * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set.
-     * </p>
-     * <p>
-     * Every implementation of the Java platform is required to support this character encoding.
-     * </p>
-     * 
-     * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character
-     *          encoding names</a>
-     */
-    String US_ASCII = "US-ASCII";
-
-    /**
-     * <p>
-     * Eight-bit Unicode Transformation Format.
-     * </p>
-     * <p>
-     * Every implementation of the Java platform is required to support this character encoding.
-     * </p>
-     * 
-     * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc">JRE character
-     *          encoding names</a>
-     */
-    String UTF8 = "UTF-8";
-}
diff --git a/src/org/apache/commons/codec/net/URLCodec.java b/src/org/apache/commons/codec/net/URLCodec.java
deleted file mode 100644
index 1bc3507..0000000
--- a/src/org/apache/commons/codec/net/URLCodec.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.codec.net;
-
-import java.io.ByteArrayOutputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.BitSet;
-
-import org.apache.commons.codec.BinaryDecoder;
-import org.apache.commons.codec.BinaryEncoder;
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.StringDecoder;
-import org.apache.commons.codec.StringEncoder;
-
-/**
- * <p>Implements the 'www-form-urlencoded' encoding scheme, 
- * also misleadingly known as URL encoding.</p>
- *  
- * <p>For more detailed information please refer to 
- * <a href="http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1">
- * Chapter 17.13.4 'Form content types'</a> of the 
- * <a href="http://www.w3.org/TR/html4/">HTML 4.01 Specification<a></p>
- * 
- * <p> 
- * This codec is meant to be a replacement for standard Java classes
- * {@link java.net.URLEncoder} and {@link java.net.URLDecoder} 
- * on older Java platforms, as these classes in Java versions below 
- * 1.4 rely on the platform's default charset encoding.
- * </p>
- * 
- * @author Apache Software Foundation
- * @since 1.2
- * @version $Id: URLCodec.java,v 1.19 2004/03/29 07:59:00 ggregory Exp $
- */
-public class URLCodec implements BinaryEncoder, BinaryDecoder, StringEncoder, StringDecoder {
-    
-    /**
-     * The default charset used for string decoding and encoding.
-     */
-    protected String charset = StringEncodings.UTF8;
-    
-    protected static byte ESCAPE_CHAR = '%';
-    /**
-     * BitSet of www-form-url safe characters.
-     */
-    protected static final BitSet WWW_FORM_URL = new BitSet(256);
-    
-    // Static initializer for www_form_url
-    static {
-        // alpha characters
-        for (int i = 'a'; i <= 'z'; i++) {
-            WWW_FORM_URL.set(i);
-        }
-        for (int i = 'A'; i <= 'Z'; i++) {
-            WWW_FORM_URL.set(i);
-        }
-        // numeric characters
-        for (int i = '0'; i <= '9'; i++) {
-            WWW_FORM_URL.set(i);
-        }
-        // special chars
-        WWW_FORM_URL.set('-');
-        WWW_FORM_URL.set('_');
-        WWW_FORM_URL.set('.');
-        WWW_FORM_URL.set('*');
-        // blank to be replaced with +
-        WWW_FORM_URL.set(' ');
-    }
-
-
-    /**
-     * Default constructor.
-     */
-    public URLCodec() {
-        super();
-    }
-
-    /**
-     * Constructor which allows for the selection of a default charset
-     * 
-     * @param charset the default string charset to use.
-     */
-    public URLCodec(String charset) {
-        super();
-        this.charset = charset;
-    }
-
-    /**
-     * Encodes an array of bytes into an array of URL safe 7-bit 
-     * characters. Unsafe characters are escaped.
-     *
-     * @param urlsafe bitset of characters deemed URL safe
-     * @param bytes array of bytes to convert to URL safe characters
-     * @return array of bytes containing URL safe characters
-     */
-    public static final byte[] encodeUrl(BitSet urlsafe, byte[] bytes) 
-    {
-        if (bytes == null) {
-            return null;
-        }
-        if (urlsafe == null) {
-            urlsafe = WWW_FORM_URL;
-        }
-        
-        ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 
-        for (int i = 0; i < bytes.length; i++) {
-            int b = bytes[i];
-            if (b < 0) {
-                b = 256 + b;
-            }
-            if (urlsafe.get(b)) {
-                if (b == ' ') {
-                    b = '+';
-                }
-                buffer.write(b);
-            } else {
-                buffer.write('%');
-                char hex1 = Character.toUpperCase(
-                  Character.forDigit((b >> 4) & 0xF, 16));
-                char hex2 = Character.toUpperCase(
-                  Character.forDigit(b & 0xF, 16));
-                buffer.write(hex1);
-                buffer.write(hex2);
-            }
-        }
-        return buffer.toByteArray(); 
-    }
-
-
-    /**
-     * Decodes an array of URL safe 7-bit characters into an array of 
-     * original bytes. Escaped characters are converted back to their 
-     * original representation.
-     *
-     * @param bytes array of URL safe characters
-     * @return array of original bytes 
-     * @throws DecoderException Thrown if URL decoding is unsuccessful
-     */
-    public static final byte[] decodeUrl(byte[] bytes) 
-         throws DecoderException
-    {
-        if (bytes == null) {
-            return null;
-        }
-        ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 
-        for (int i = 0; i < bytes.length; i++) {
-            int b = bytes[i];
-            if (b == '+') {
-                buffer.write(' ');
-            } else if (b == '%') {
-                try {
-                    int u = Character.digit((char)bytes[++i], 16);
-                    int l = Character.digit((char)bytes[++i], 16);
-                    if (u == -1 || l == -1) {
-                        throw new DecoderException("Invalid URL encoding");
-                    }
-                    buffer.write((char)((u << 4) + l));
-                } catch(ArrayIndexOutOfBoundsException e) {
-                    throw new DecoderException("Invalid URL encoding");
-                }
-            } else {
-                buffer.write(b);
-            }
-        }
-        return buffer.toByteArray(); 
-    }
-
-
-    /**
-     * Encodes an array of bytes into an array of URL safe 7-bit 
-     * characters. Unsafe characters are escaped.
-     *
-     * @param bytes array of bytes to convert to URL safe characters
-     * @return array of bytes containing URL safe characters
-     */
-    public byte[] encode(byte[] bytes) {
-        return encodeUrl(WWW_FORM_URL, bytes);
-    }
-
-
-    /**
-     * Decodes an array of URL safe 7-bit characters into an array of 
-     * original bytes. Escaped characters are converted back to their 
-     * original representation.
-     *
-     * @param bytes array of URL safe characters
-     * @return array of original bytes 
-     * @throws DecoderException Thrown if URL decoding is unsuccessful
-     */
-    public byte[] decode(byte[] bytes) throws DecoderException {
-        return decodeUrl(bytes);
-    }
-
-
-    /**
-     * Encodes a string into its URL safe form using the specified
-     * string charset. Unsafe characters are escaped.
-     *
-     * @param pString string to convert to a URL safe form
-     * @param charset the charset for pString
-     * @return URL safe string
-     * @throws UnsupportedEncodingException Thrown if charset is not
-     *                                      supported 
-     */
-    public String encode(String pString, String charset) 
-        throws UnsupportedEncodingException  
-    {
-        if (pString == null) {
-            return null;
-        }
-        return new String(encode(pString.getBytes(charset)), StringEncodings.US_ASCII);
-    }
-
-
-    /**
-     * Encodes a string into its URL safe form using the default string 
-     * charset. Unsafe characters are escaped.
-     *
-     * @param pString string to convert to a URL safe form
-     * @return URL safe string
-     * @throws EncoderException Thrown if URL encoding is unsuccessful
-     * 
-     * @see #getDefaultCharset()
-     */
-    public String encode(String pString) throws EncoderException {
-        if (pString == null) {
-            return null;
-        }
-        try {
-            return encode(pString, getDefaultCharset());
-        } catch(UnsupportedEncodingException e) {
-            throw new EncoderException(e.getMessage());
-        }
-    }
-
-
-    /**
-     * Decodes a URL safe string into its original form using the 
-     * specified encoding. Escaped characters are converted back 
-     * to their original representation.
-     *
-     * @param pString URL safe string to convert into its original form
-     * @param charset the original string charset
-     * @return original string 
-     * @throws DecoderException Thrown if URL decoding is unsuccessful
-     * @throws UnsupportedEncodingException Thrown if charset is not
-     *                                      supported 
-     */
-    public String decode(String pString, String charset) 
-        throws DecoderException, UnsupportedEncodingException 
-    {
-        if (pString == null) {
-            return null;
-        }
-        return new String(decode(pString.getBytes(StringEncodings.US_ASCII)), charset);
-    }
-
-
-    /**
-     * Decodes a URL safe string into its original form using the default
-     * string charset. Escaped characters are converted back to their 
-     * original representation.
-     *
-     * @param pString URL safe string to convert into its original form
-     * @return original string 
-     * @throws DecoderException Thrown if URL decoding is unsuccessful
-     * 
-     * @see #getDefaultCharset()
-     */
-    public String decode(String pString) throws DecoderException {
-        if (pString == null) {
-            return null;
-        }
-        try {
-            return decode(pString, getDefaultCharset());
-        } catch(UnsupportedEncodingException e) {
-            throw new DecoderException(e.getMessage());
-        }
-    }
-
-    /**
-     * Encodes an object into its URL safe form. Unsafe characters are 
-     * escaped.
-     *
-     * @param pObject string to convert to a URL safe form
-     * @return URL safe object
-     * @throws EncoderException Thrown if URL encoding is not 
-     *                          applicable to objects of this type or
-     *                          if encoding is unsuccessful
-     */
-    public Object encode(Object pObject) throws EncoderException {
-        if (pObject == null) {
-            return null;
-        } else if (pObject instanceof byte[]) {
-            return encode((byte[])pObject);
-        } else if (pObject instanceof String) {
-            return encode((String)pObject);
-        } else {
-            throw new EncoderException("Objects of type " +
-                pObject.getClass().getName() + " cannot be URL encoded"); 
-              
-        }
-    }
-
-    /**
-     * Decodes a URL safe object into its original form. Escaped 
-     * characters are converted back to their original representation.
-     *
-     * @param pObject URL safe object to convert into its original form
-     * @return original object 
-     * @throws DecoderException Thrown if URL decoding is not 
-     *                          applicable to objects of this type
-     *                          if decoding is unsuccessful
-     */
-    public Object decode(Object pObject) throws DecoderException {
-        if (pObject == null) {
-            return null;
-        } else if (pObject instanceof byte[]) {
-            return decode((byte[])pObject);
-        } else if (pObject instanceof String) {
-            return decode((String)pObject);
-        } else {
-            throw new DecoderException("Objects of type " +
-                pObject.getClass().getName() + " cannot be URL decoded"); 
-              
-        }
-    }
-
-    /**
-     * The <code>String</code> encoding used for decoding and encoding.
-     *
-     * @return Returns the encoding.
-     * 
-     * @deprecated use #getDefaultCharset()
-     */
-    public String getEncoding() {
-        return this.charset;
-    }
-
-    /**
-     * The default charset used for string decoding and encoding.
-     *
-     * @return the default string charset.
-     */
-    public String getDefaultCharset() {
-        return this.charset;
-    }
-
-}
diff --git a/src/org/apache/commons/codec/net/package.html b/src/org/apache/commons/codec/net/package.html
deleted file mode 100644
index 4607c57..0000000
--- a/src/org/apache/commons/codec/net/package.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-Copyright 2003-2004 The Apache Software Foundation.
- 
-Licensed 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.
--->
-<html>
- <body>
-  <p>
-  Network related encoding and decoding.
-  </p>
- </body>
-</html>
diff --git a/src/org/apache/commons/codec/overview.html b/src/org/apache/commons/codec/overview.html
deleted file mode 100644
index 6b6f6c9..0000000
--- a/src/org/apache/commons/codec/overview.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-Copyright 2003-2004 The Apache Software Foundation.
- 
-Licensed 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.
--->
-<!-- $Id: overview.html,v 1.6 2004/05/17 17:06:10 ggregory Exp $ -->
-<html>
-<body>
-<p>
-This document is the API specification for the Apache Jakarta Commons Codec Library, version 1.3.
-</p>
-<p>
-This library requires a JRE version of 1.2.2 or greater.
-The hypertext links originating from this document point to Sun's version 1.3 API as the 1.2.2 API documentation 
-is no longer on-line.
-</p>
-</body>
-</html>
diff --git a/src/org/apache/commons/codec/package.html b/src/org/apache/commons/codec/package.html
deleted file mode 100644
index b7ccf03..0000000
--- a/src/org/apache/commons/codec/package.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!--
-Copyright 2003-2004 The Apache Software Foundation.
- 
-Licensed 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.
--->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-  </head>
-  <body>
-    <p>A small set of interfaces used by
-    the various implementations in the sub-packages.</p>
-
-    <p>Definitive implementations of commonly used encoders and decoders.</p>
-
-    <p>Codec is currently comprised of a modest set of utilities and a
-    simple framework for String encoding and decoding in three categories:
-    Binary Encoders, Language Encoders, and Network Encoders. </p>
-
-    <h4><a name="Common Encoders">Binary Encoders</a></h4>
-
-    <table border="1" width="100%" cellspacing="2" cellpadding="3">
-  	  <tbody>
-        <tr>
-          <td> 
-            <a href="binary/Base64.html">
-              org.apache.commons.codec.binary.Base64</a>
-          </td>
-          <td> 
-            Provides Base64 content-transfer-encoding as defined in 
-            <a href="http://www.ietf.org/rfc/rfc2045.txt"> RFC 2045</a> 
-          </td>
-          <td>Production</td>
-        </tr>
-        <tr>
-          <td>
-           <a href="binary/Hex.html">
-             org.apache.commons.codec.binary.Hex</a>
-          </td>
-          <td> 
-            Converts an array of bytes into an array of characters
-            representing the hexidecimal values of each byte in order 
-          </td>
-          <td>Production</td>
-        </tr>
-      </tbody>
-    </table>
-    <h4> 
-      <a name="Language Encoders">Language Encoders</a> 
-    </h4>
-    <p> 
-      Codec contains a number of commonly used language and phonetic
-      encoders
-    </p>
-    <table border="1" width="100%" cellspacing="2" cellpadding="3">
-      <tbody>
-        <tr>
-          <td> 
-            <a href="#">org.apache.commons.codec.language.Soundex</a>
-          </td>
-          <td>Implementation of the Soundex algorithm.</td>
-          <td>Production</td>
-        </tr>
-        <tr>
-          <td> 
-            <a href="#">org.apache.commons.codec.language.Metaphone</a>
-          </td>
-          <td>Implementation of the Metaphone algorithm.</td>
-          <td>Production</td>
-        </tr>
-      </tbody>
-    </table>
-    <h4><a name="Network_Encoders">Network Encoders</a></h4>
-    <h4> </h4>
-    <p> Codec contains network related encoders </p>
-    <table border="1" width="100%" cellspacing="2" cellpadding="3">
-      <tbody>
-        <tr>
-          <td> 
-            <a href="#">org.apache.commons.codec.net.URLCodec</a>
-          </td>
-          <td>Implements the 'www-form-urlencoded' encoding scheme.</td>
-          <td>Production</td>
-        </tr>
-      </tbody>
-    </table>
-    <br>
-  </body>
-</html>
diff --git a/src/org/apache/commons/logging/Log.java b/src/org/apache/commons/logging/Log.java
deleted file mode 100644
index 9203f3f..0000000
--- a/src/org/apache/commons/logging/Log.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-
-package org.apache.commons.logging;
-
-/**
- * <p>A simple logging interface abstracting logging APIs.  In order to be
- * instantiated successfully by {@link LogFactory}, classes that implement
- * this interface must have a constructor that takes a single String
- * parameter representing the "name" of this Log.</p>
- *
- * <p> The six logging levels used by <code>Log</code> are (in order):
- * <ol>
- * <li>trace (the least serious)</li>
- * <li>debug</li>
- * <li>info</li>
- * <li>warn</li>
- * <li>error</li>
- * <li>fatal (the most serious)</li>
- * </ol>
- * The mapping of these log levels to the concepts used by the underlying
- * logging system is implementation dependent.
- * The implemention should ensure, though, that this ordering behaves
- * as expected.</p>
- *
- * <p>Performance is often a logging concern.
- * By examining the appropriate property,
- * a component can avoid expensive operations (producing information
- * to be logged).</p>
- *
- * <p> For example,
- * <code><pre>
- *    if (log.isDebugEnabled()) {
- *        ... do something expensive ...
- *        log.debug(theResult);
- *    }
- * </pre></code>
- * </p>
- *
- * <p>Configuration of the underlying logging system will generally be done
- * external to the Logging APIs, through whatever mechanism is supported by
- * that system.</p>
- *
- * @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
- * @author Rod Waldhoff
- * @version $Id: Log.java 381838 2006-02-28 23:57:11Z skitching $
- */
-public interface Log {
-
-
-    // ----------------------------------------------------- Logging Properties
-
-
-    /**
-     * <p> Is debug logging currently enabled? </p>
-     *
-     * <p> Call this method to prevent having to perform expensive operations
-     * (for example, <code>String</code> concatenation)
-     * when the log level is more than debug. </p>
-     *
-     * @return true if debug is enabled in the underlying logger.
-     */
-    public boolean isDebugEnabled();
-
-
-    /**
-     * <p> Is error logging currently enabled? </p>
-     *
-     * <p> Call this method to prevent having to perform expensive operations
-     * (for example, <code>String</code> concatenation)
-     * when the log level is more than error. </p>
-     *
-     * @return true if error is enabled in the underlying logger.
-     */
-    public boolean isErrorEnabled();
-
-
-    /**
-     * <p> Is fatal logging currently enabled? </p>
-     *
-     * <p> Call this method to prevent having to perform expensive operations
-     * (for example, <code>String</code> concatenation)
-     * when the log level is more than fatal. </p>
-     *
-     * @return true if fatal is enabled in the underlying logger.
-     */
-    public boolean isFatalEnabled();
-
-
-    /**
-     * <p> Is info logging currently enabled? </p>
-     *
-     * <p> Call this method to prevent having to perform expensive operations
-     * (for example, <code>String</code> concatenation)
-     * when the log level is more than info. </p>
-     *
-     * @return true if info is enabled in the underlying logger.
-     */
-    public boolean isInfoEnabled();
-
-
-    /**
-     * <p> Is trace logging currently enabled? </p>
-     *
-     * <p> Call this method to prevent having to perform expensive operations
-     * (for example, <code>String</code> concatenation)
-     * when the log level is more than trace. </p>
-     *
-     * @return true if trace is enabled in the underlying logger.
-     */
-    public boolean isTraceEnabled();
-
-
-    /**
-     * <p> Is warn logging currently enabled? </p>
-     *
-     * <p> Call this method to prevent having to perform expensive operations
-     * (for example, <code>String</code> concatenation)
-     * when the log level is more than warn. </p>
-     *
-     * @return true if warn is enabled in the underlying logger.
-     */
-    public boolean isWarnEnabled();
-
-
-    // -------------------------------------------------------- Logging Methods
-
-
-    /**
-     * <p> Log a message with trace log level. </p>
-     *
-     * @param message log this message
-     */
-    public void trace(Object message);
-
-
-    /**
-     * <p> Log an error with trace log level. </p>
-     *
-     * @param message log this message
-     * @param t log this cause
-     */
-    public void trace(Object message, Throwable t);
-
-
-    /**
-     * <p> Log a message with debug log level. </p>
-     *
-     * @param message log this message
-     */
-    public void debug(Object message);
-
-
-    /**
-     * <p> Log an error with debug log level. </p>
-     *
-     * @param message log this message
-     * @param t log this cause
-     */
-    public void debug(Object message, Throwable t);
-
-
-    /**
-     * <p> Log a message with info log level. </p>
-     *
-     * @param message log this message
-     */
-    public void info(Object message);
-
-
-    /**
-     * <p> Log an error with info log level. </p>
-     *
-     * @param message log this message
-     * @param t log this cause
-     */
-    public void info(Object message, Throwable t);
-
-
-    /**
-     * <p> Log a message with warn log level. </p>
-     *
-     * @param message log this message
-     */
-    public void warn(Object message);
-
-
-    /**
-     * <p> Log an error with warn log level. </p>
-     *
-     * @param message log this message
-     * @param t log this cause
-     */
-    public void warn(Object message, Throwable t);
-
-
-    /**
-     * <p> Log a message with error log level. </p>
-     *
-     * @param message log this message
-     */
-    public void error(Object message);
-
-
-    /**
-     * <p> Log an error with error log level. </p>
-     *
-     * @param message log this message
-     * @param t log this cause
-     */
-    public void error(Object message, Throwable t);
-
-
-    /**
-     * <p> Log a message with fatal log level. </p>
-     *
-     * @param message log this message
-     */
-    public void fatal(Object message);
-
-
-    /**
-     * <p> Log an error with fatal log level. </p>
-     *
-     * @param message log this message
-     * @param t log this cause
-     */
-    public void fatal(Object message, Throwable t);
-
-
-}
diff --git a/src/org/apache/commons/logging/LogConfigurationException.java b/src/org/apache/commons/logging/LogConfigurationException.java
deleted file mode 100644
index b34387b..0000000
--- a/src/org/apache/commons/logging/LogConfigurationException.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.logging;
-
-
-/**
- * <p>An exception that is thrown only if a suitable <code>LogFactory</code>
- * or <code>Log</code> instance cannot be created by the corresponding
- * factory methods.</p>
- *
- * @author Craig R. McClanahan
- * @version $Revision: 155426 $ $Date: 2005-02-26 13:10:49 +0000 (Sat, 26 Feb 2005) $
- */
-
-public class LogConfigurationException extends RuntimeException {
-
-
-    /**
-     * Construct a new exception with <code>null</code> as its detail message.
-     */
-    public LogConfigurationException() {
-
-        super();
-
-    }
-
-
-    /**
-     * Construct a new exception with the specified detail message.
-     *
-     * @param message The detail message
-     */
-    public LogConfigurationException(String message) {
-
-        super(message);
-
-    }
-
-
-    /**
-     * Construct a new exception with the specified cause and a derived
-     * detail message.
-     *
-     * @param cause The underlying cause
-     */
-    public LogConfigurationException(Throwable cause) {
-
-        this((cause == null) ? null : cause.toString(), cause);
-
-    }
-
-
-    /**
-     * Construct a new exception with the specified detail message and cause.
-     *
-     * @param message The detail message
-     * @param cause The underlying cause
-     */
-    public LogConfigurationException(String message, Throwable cause) {
-
-        super(message + " (Caused by " + cause + ")");
-        this.cause = cause; // Two-argument version requires JDK 1.4 or later
-
-    }
-
-
-    /**
-     * The underlying cause of this exception.
-     */
-    protected Throwable cause = null;
-
-
-    /**
-     * Return the underlying cause of this exception (if any).
-     */
-    public Throwable getCause() {
-
-        return (this.cause);
-
-    }
-
-
-}
diff --git a/src/org/apache/commons/logging/LogFactory.java b/src/org/apache/commons/logging/LogFactory.java
deleted file mode 100644
index 107d0f7..0000000
--- a/src/org/apache/commons/logging/LogFactory.java
+++ /dev/null
@@ -1,1740 +0,0 @@
-/*
- * Copyright 2001-2006 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.logging;
-
-
-import java.io.BufferedReader;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Properties;
-
-
-/**
- * <p>Factory for creating {@link Log} instances, with discovery and
- * configuration features similar to that employed by standard Java APIs
- * such as JAXP.</p>
- * 
- * <p><strong>IMPLEMENTATION NOTE</strong> - This implementation is heavily
- * based on the SAXParserFactory and DocumentBuilderFactory implementations
- * (corresponding to the JAXP pluggability APIs) found in Apache Xerces.</p>
- *
- * @author Craig R. McClanahan
- * @author Costin Manolache
- * @author Richard A. Sitze
- * @version $Revision: 399431 $ $Date: 2006-05-03 21:58:34 +0100 (Wed, 03 May 2006) $
- */
-
-public abstract class LogFactory {
-
-
-    // ----------------------------------------------------- Manifest Constants
-
-    /**
-     * The name (<code>priority</code>) of the key in the config file used to 
-     * specify the priority of that particular config file. The associated value 
-     * is a floating-point number; higher values take priority over lower values.
-     */
-    public static final String PRIORITY_KEY = "priority";
-
-    /**
-     * The name (<code>use_tccl</code>) of the key in the config file used 
-     * to specify whether logging classes should be loaded via the thread 
-     * context class loader (TCCL), or not. By default, the TCCL is used.
-     */
-    public static final String TCCL_KEY = "use_tccl";
-
-    /**
-     * The name (<code>org.apache.commons.logging.LogFactory</code>) of the property 
-     * used to identify the LogFactory implementation
-     * class name. This can be used as a system property, or as an entry in a
-     * configuration properties file.
-     */
-    public static final String FACTORY_PROPERTY =
-        "org.apache.commons.logging.LogFactory";
-
-    /**
-     * The fully qualified class name of the fallback <code>LogFactory</code>
-     * implementation class to use, if no other can be found.
-     */
-    public static final String FACTORY_DEFAULT =
-        "org.apache.commons.logging.impl.LogFactoryImpl";
-
-    /**
-     * The name (<code>commons-logging.properties</code>) of the properties file to search for.
-     */
-    public static final String FACTORY_PROPERTIES =
-        "commons-logging.properties";
-
-    /**
-     * JDK1.3+ <a href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider">
-     * 'Service Provider' specification</a>.
-     * 
-     */
-    protected static final String SERVICE_ID =
-        "META-INF/services/org.apache.commons.logging.LogFactory";
-
-    /**
-     * The name (<code>org.apache.commons.logging.diagnostics.dest</code>) 
-     * of the property used to enable internal commons-logging
-     * diagnostic output, in order to get information on what logging
-     * implementations are being discovered, what classloaders they 
-     * are loaded through, etc.
-     * <p>
-     * If a system property of this name is set then the value is
-     * assumed to be the name of a file. The special strings
-     * STDOUT or STDERR (case-sensitive) indicate output to
-     * System.out and System.err respectively.
-     * <p>
-     * Diagnostic logging should be used only to debug problematic
-     * configurations and should not be set in normal production use.
-     */
-    public static final String DIAGNOSTICS_DEST_PROPERTY =
-        "org.apache.commons.logging.diagnostics.dest";
-
-    /**
-     * When null (the usual case), no diagnostic output will be
-     * generated by LogFactory or LogFactoryImpl. When non-null,
-     * interesting events will be written to the specified object.
-     */
-    private static PrintStream diagnosticsStream = null;
-    
-    /**
-     * A string that gets prefixed to every message output by the
-     * logDiagnostic method, so that users can clearly see which
-     * LogFactory class is generating the output.
-     */
-    private static String diagnosticPrefix;
-    
-    /**
-     * <p>Setting this system property 
-     * (<code>org.apache.commons.logging.LogFactory.HashtableImpl</code>) 
-     * value allows the <code>Hashtable</code> used to store
-     * classloaders to be substituted by an alternative implementation.
-     * </p>
-     * <p>
-     * <strong>Note:</strong> <code>LogFactory</code> will print:
-     * <code><pre>
-     * [ERROR] LogFactory: Load of custom hashtable failed</em>
-     * </pre></code>
-     * to system error and then continue using a standard Hashtable.
-     * </p>
-     * <p>
-     * <strong>Usage:</strong> Set this property when Java is invoked
-     * and <code>LogFactory</code> will attempt to load a new instance 
-     * of the given implementation class.
-     * For example, running the following ant scriplet:
-     * <code><pre>
-     *  &lt;java classname="${test.runner}" fork="yes" failonerror="${test.failonerror}"&gt;
-     *     ...
-     *     &lt;sysproperty 
-     *        key="org.apache.commons.logging.LogFactory.HashtableImpl"
-     *        value="org.apache.commons.logging.AltHashtable"/&gt;
-     *  &lt;/java&gt;
-     * </pre></code>
-     * will mean that <code>LogFactory</code> will load an instance of
-     * <code>org.apache.commons.logging.AltHashtable</code>.
-     * </p>
-     * <p>
-     * A typical use case is to allow a custom
-     * Hashtable implementation using weak references to be substituted.
-     * This will allow classloaders to be garbage collected without
-     * the need to release them (on 1.3+ JVMs only, of course ;)
-     * </p>
-     */
-    public static final String HASHTABLE_IMPLEMENTATION_PROPERTY =
-        "org.apache.commons.logging.LogFactory.HashtableImpl";
-    /** Name used to load the weak hashtable implementation by names */
-    private static final String WEAK_HASHTABLE_CLASSNAME = 
-        "org.apache.commons.logging.impl.WeakHashtable";
-
-    /**
-     * A reference to the classloader that loaded this class. This is the
-     * same as LogFactory.class.getClassLoader(). However computing this
-     * value isn't quite as simple as that, as we potentially need to use
-     * AccessControllers etc. It's more efficient to compute it once and
-     * cache it here.
-     */
-    private static ClassLoader thisClassLoader;
-    
-    // ----------------------------------------------------------- Constructors
-
-
-    /**
-     * Protected constructor that is not available for public use.
-     */
-    protected LogFactory() {
-    }
-    
-    // --------------------------------------------------------- Public Methods
-
-
-    /**
-     * Return the configuration attribute with the specified name (if any),
-     * or <code>null</code> if there is no such attribute.
-     *
-     * @param name Name of the attribute to return
-     */
-    public abstract Object getAttribute(String name);
-
-
-    /**
-     * Return an array containing the names of all currently defined
-     * configuration attributes.  If there are no such attributes, a zero
-     * length array is returned.
-     */
-    public abstract String[] getAttributeNames();
-
-
-    /**
-     * Convenience method to derive a name from the specified class and
-     * call <code>getInstance(String)</code> with it.
-     *
-     * @param clazz Class for which a suitable Log name will be derived
-     *
-     * @exception LogConfigurationException if a suitable <code>Log</code>
-     *  instance cannot be returned
-     */
-    public abstract Log getInstance(Class clazz)
-        throws LogConfigurationException;
-
-
-    /**
-     * <p>Construct (if necessary) and return a <code>Log</code> instance,
-     * using the factory's current set of configuration attributes.</p>
-     *
-     * <p><strong>NOTE</strong> - Depending upon the implementation of
-     * the <code>LogFactory</code> you are using, the <code>Log</code>
-     * instance you are returned may or may not be local to the current
-     * application, and may or may not be returned again on a subsequent
-     * call with the same name argument.</p>
-     *
-     * @param name Logical name of the <code>Log</code> instance to be
-     *  returned (the meaning of this name is only known to the underlying
-     *  logging implementation that is being wrapped)
-     *
-     * @exception LogConfigurationException if a suitable <code>Log</code>
-     *  instance cannot be returned
-     */
-    public abstract Log getInstance(String name)
-        throws LogConfigurationException;
-
-
-    /**
-     * Release any internal references to previously created {@link Log}
-     * instances returned by this factory.  This is useful in environments
-     * like servlet containers, which implement application reloading by
-     * throwing away a ClassLoader.  Dangling references to objects in that
-     * class loader would prevent garbage collection.
-     */
-    public abstract void release();
-
-
-    /**
-     * Remove any configuration attribute associated with the specified name.
-     * If there is no such attribute, no action is taken.
-     *
-     * @param name Name of the attribute to remove
-     */
-    public abstract void removeAttribute(String name);
-
-
-    /**
-     * Set the configuration attribute with the specified name.  Calling
-     * this with a <code>null</code> value is equivalent to calling
-     * <code>removeAttribute(name)</code>.
-     *
-     * @param name Name of the attribute to set
-     * @param value Value of the attribute to set, or <code>null</code>
-     *  to remove any setting for this attribute
-     */
-    public abstract void setAttribute(String name, Object value);
-
-
-    // ------------------------------------------------------- Static Variables
-
-
-    /**
-     * The previously constructed <code>LogFactory</code> instances, keyed by
-     * the <code>ClassLoader</code> with which it was created.
-     */
-    protected static Hashtable factories = null;
-    
-    /**
-     * Prevously constructed <code>LogFactory</code> instance as in the
-     * <code>factories</code> map, but for the case where
-     * <code>getClassLoader</code> returns <code>null</code>.
-     * This can happen when:
-     * <ul>
-     * <li>using JDK1.1 and the calling code is loaded via the system
-     *  classloader (very common)</li>
-     * <li>using JDK1.2+ and the calling code is loaded via the boot
-     *  classloader (only likely for embedded systems work).</li>
-     * </ul>
-     * Note that <code>factories</code> is a <i>Hashtable</i> (not a HashMap),
-     * and hashtables don't allow null as a key.
-     */
-    protected static LogFactory nullClassLoaderFactory = null;
-
-    /**
-     * Create the hashtable which will be used to store a map of
-     * (context-classloader -> logfactory-object). Version 1.2+ of Java
-     * supports "weak references", allowing a custom Hashtable class
-     * to be used which uses only weak references to its keys. Using weak
-     * references can fix memory leaks on webapp unload in some cases (though
-     * not all). Version 1.1 of Java does not support weak references, so we
-     * must dynamically determine which we are using. And just for fun, this
-     * code also supports the ability for a system property to specify an
-     * arbitrary Hashtable implementation name.
-     * <p>
-     * Note that the correct way to ensure no memory leaks occur is to ensure
-     * that LogFactory.release(contextClassLoader) is called whenever a 
-     * webapp is undeployed.
-     */
-    private static final Hashtable createFactoryStore() {
-        Hashtable result = null;
-        String storeImplementationClass 
-            = System.getProperty(HASHTABLE_IMPLEMENTATION_PROPERTY);
-        if (storeImplementationClass == null) {
-            storeImplementationClass = WEAK_HASHTABLE_CLASSNAME;
-        }
-        try {
-            Class implementationClass = Class.forName(storeImplementationClass);
-            result = (Hashtable) implementationClass.newInstance();
-            
-        } catch (Throwable t) {
-            // ignore
-            if (!WEAK_HASHTABLE_CLASSNAME.equals(storeImplementationClass)) {
-                // if the user's trying to set up a custom implementation, give a clue
-                if (isDiagnosticsEnabled()) {
-                    // use internal logging to issue the warning
-                    logDiagnostic("[ERROR] LogFactory: Load of custom hashtable failed");
-                } else {
-                    // we *really* want this output, even if diagnostics weren't
-                    // explicitly enabled by the user.
-                    System.err.println("[ERROR] LogFactory: Load of custom hashtable failed");
-                }
-            }
-        }
-        if (result == null) {
-            result = new Hashtable();
-        }
-        return result;
-    }
-
-
-    // --------------------------------------------------------- Static Methods
-
-    /**
-     * <p>Construct (if necessary) and return a <code>LogFactory</code>
-     * instance, using the following ordered lookup procedure to determine
-     * the name of the implementation class to be loaded.</p>
-     * <ul>
-     * <li>The <code>org.apache.commons.logging.LogFactory</code> system
-     *     property.</li>
-     * <li>The JDK 1.3 Service Discovery mechanism</li>
-     * <li>Use the properties file <code>commons-logging.properties</code>
-     *     file, if found in the class path of this class.  The configuration
-     *     file is in standard <code>java.util.Properties</code> format and
-     *     contains the fully qualified name of the implementation class
-     *     with the key being the system property defined above.</li>
-     * <li>Fall back to a default implementation class
-     *     (<code>org.apache.commons.logging.impl.LogFactoryImpl</code>).</li>
-     * </ul>
-     *
-     * <p><em>NOTE</em> - If the properties file method of identifying the
-     * <code>LogFactory</code> implementation class is utilized, all of the
-     * properties defined in this file will be set as configuration attributes
-     * on the corresponding <code>LogFactory</code> instance.</p>
-     * 
-     * <p><em>NOTE</em> - In a multithreaded environment it is possible 
-     * that two different instances will be returned for the same 
-     * classloader environment. 
-     * </p>
-     *
-     * @exception LogConfigurationException if the implementation class is not
-     *  available or cannot be instantiated.
-     */
-    public static LogFactory getFactory() throws LogConfigurationException {
-        // Identify the class loader we will be using
-        ClassLoader contextClassLoader = getContextClassLoader();
-
-        if (contextClassLoader == null) {
-            // This is an odd enough situation to report about. This
-            // output will be a nuisance on JDK1.1, as the system
-            // classloader is null in that environment.
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("Context classloader is null.");
-            }
-        }
-
-        // Return any previously registered factory for this class loader
-        LogFactory factory = getCachedFactory(contextClassLoader);
-        if (factory != null) {
-            return factory;
-        }
-
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic(
-                    "[LOOKUP] LogFactory implementation requested for the first time for context classloader "
-                    + objectId(contextClassLoader));
-            logHierarchy("[LOOKUP] ", contextClassLoader);
-        }
-
-        // Load properties file.
-        //
-        // If the properties file exists, then its contents are used as
-        // "attributes" on the LogFactory implementation class. One particular
-        // property may also control which LogFactory concrete subclass is
-        // used, but only if other discovery mechanisms fail..
-        //
-        // As the properties file (if it exists) will be used one way or 
-        // another in the end we may as well look for it first.
-
-        Properties props = getConfigurationFile(contextClassLoader, FACTORY_PROPERTIES);
-
-        // Determine whether we will be using the thread context class loader to
-        // load logging classes or not by checking the loaded properties file (if any).
-        ClassLoader baseClassLoader = contextClassLoader;
-        if (props != null) {
-            String useTCCLStr = props.getProperty(TCCL_KEY);
-            if (useTCCLStr != null) {
-                // The Boolean.valueOf(useTCCLStr).booleanValue() formulation
-                // is required for Java 1.2 compatability.
-                if (Boolean.valueOf(useTCCLStr).booleanValue() == false) {
-                    // Don't use current context classloader when locating any
-                    // LogFactory or Log classes, just use the class that loaded
-                    // this abstract class. When this class is deployed in a shared
-                    // classpath of a container, it means webapps cannot deploy their
-                    // own logging implementations. It also means that it is up to the
-                    // implementation whether to load library-specific config files
-                    // from the TCCL or not.
-                    baseClassLoader = thisClassLoader; 
-                }
-            }
-        }
-
-        // Determine which concrete LogFactory subclass to use.
-        // First, try a global system property
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic(
-                    "[LOOKUP] Looking for system property [" + FACTORY_PROPERTY 
-                    + "] to define the LogFactory subclass to use...");
-        }
-        
-        try {
-            String factoryClass = System.getProperty(FACTORY_PROPERTY);
-            if (factoryClass != null) {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic(
-                            "[LOOKUP] Creating an instance of LogFactory class '" + factoryClass
-                            + "' as specified by system property " + FACTORY_PROPERTY);
-                }
-                
-                factory = newFactory(factoryClass, baseClassLoader, contextClassLoader);
-            } else {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic(
-                            "[LOOKUP] No system property [" + FACTORY_PROPERTY 
-                            + "] defined.");
-                }
-            }
-        } catch (SecurityException e) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic(
-                        "[LOOKUP] A security exception occurred while trying to create an"
-                        + " instance of the custom factory class"
-                        + ": [" + e.getMessage().trim()
-                        + "]. Trying alternative implementations...");
-            }
-            ;  // ignore
-        } catch(RuntimeException e) {
-            // This is not consistent with the behaviour when a bad LogFactory class is
-            // specified in a services file.
-            //
-            // One possible exception that can occur here is a ClassCastException when
-            // the specified class wasn't castable to this LogFactory type.
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic(
-                        "[LOOKUP] An exception occurred while trying to create an"
-                        + " instance of the custom factory class"
-                        + ": [" + e.getMessage().trim()
-                        + "] as specified by a system property.");
-            }
-            throw e;
-        }
-
-
-        // Second, try to find a service by using the JDK1.3 class
-        // discovery mechanism, which involves putting a file with the name
-        // of an interface class in the META-INF/services directory, where the
-        // contents of the file is a single line specifying a concrete class 
-        // that implements the desired interface.
-
-        if (factory == null) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic(
-                        "[LOOKUP] Looking for a resource file of name [" + SERVICE_ID
-                        + "] to define the LogFactory subclass to use...");
-            }
-            try {
-                InputStream is = getResourceAsStream(contextClassLoader,
-                                                     SERVICE_ID);
-
-                if( is != null ) {
-                    // This code is needed by EBCDIC and other strange systems.
-                    // It's a fix for bugs reported in xerces
-                    BufferedReader rd;
-                    try {
-                        rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
-                    } catch (java.io.UnsupportedEncodingException e) {
-                        rd = new BufferedReader(new InputStreamReader(is));
-                    }
-
-                    String factoryClassName = rd.readLine();
-                    rd.close();
-
-                    if (factoryClassName != null &&
-                        ! "".equals(factoryClassName)) {
-                        if (isDiagnosticsEnabled()) {
-                            logDiagnostic(
-                                    "[LOOKUP]  Creating an instance of LogFactory class " + factoryClassName
-                                    + " as specified by file '" + SERVICE_ID 
-                                    + "' which was present in the path of the context"
-                                    + " classloader.");
-                        }
-                        factory = newFactory(factoryClassName, baseClassLoader, contextClassLoader );
-                    }
-                } else {
-                    // is == null
-                    if (isDiagnosticsEnabled()) {
-                        logDiagnostic(
-                            "[LOOKUP] No resource file with name '" + SERVICE_ID
-                            + "' found.");
-                    }
-                }
-            } catch( Exception ex ) {
-                // note: if the specified LogFactory class wasn't compatible with LogFactory
-                // for some reason, a ClassCastException will be caught here, and attempts will
-                // continue to find a compatible class.
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic(
-                        "[LOOKUP] A security exception occurred while trying to create an"
-                        + " instance of the custom factory class"
-                        + ": [" + ex.getMessage().trim()
-                        + "]. Trying alternative implementations...");
-                }
-                ; // ignore
-            }
-        }
-
-
-        // Third try looking into the properties file read earlier (if found)
-
-        if (factory == null) {
-            if (props != null) {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic(
-                        "[LOOKUP] Looking in properties file for entry with key '" 
-                        + FACTORY_PROPERTY
-                        + "' to define the LogFactory subclass to use...");
-                }
-                String factoryClass = props.getProperty(FACTORY_PROPERTY);
-                if (factoryClass != null) {
-                    if (isDiagnosticsEnabled()) {
-                        logDiagnostic(
-                            "[LOOKUP] Properties file specifies LogFactory subclass '" 
-                            + factoryClass + "'");
-                    }
-                    factory = newFactory(factoryClass, baseClassLoader, contextClassLoader);
-                    
-                    // TODO: think about whether we need to handle exceptions from newFactory
-                } else {
-                    if (isDiagnosticsEnabled()) {
-                        logDiagnostic(
-                            "[LOOKUP] Properties file has no entry specifying LogFactory subclass.");
-                    }
-                }
-            } else {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic(
-                        "[LOOKUP] No properties file available to determine"
-                        + " LogFactory subclass from..");
-                }
-            }
-        }
-
-
-        // Fourth, try the fallback implementation class
-
-        if (factory == null) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic(
-                "[LOOKUP] Loading the default LogFactory implementation '" + FACTORY_DEFAULT
-                + "' via the same classloader that loaded this LogFactory"
-                + " class (ie not looking in the context classloader).");
-            }
-            
-            // Note: unlike the above code which can try to load custom LogFactory
-            // implementations via the TCCL, we don't try to load the default LogFactory
-            // implementation via the context classloader because:
-            // * that can cause problems (see comments in newFactory method)
-            // * no-one should be customising the code of the default class
-            // Yes, we do give up the ability for the child to ship a newer
-            // version of the LogFactoryImpl class and have it used dynamically
-            // by an old LogFactory class in the parent, but that isn't 
-            // necessarily a good idea anyway.
-            factory = newFactory(FACTORY_DEFAULT, thisClassLoader, contextClassLoader);
-        }
-
-        if (factory != null) {
-            /**
-             * Always cache using context class loader.
-             */
-            cacheFactory(contextClassLoader, factory);
-
-            if( props!=null ) {
-                Enumeration names = props.propertyNames();
-                while (names.hasMoreElements()) {
-                    String name = (String) names.nextElement();
-                    String value = props.getProperty(name);
-                    factory.setAttribute(name, value);
-                }
-            }
-        }
-
-        return factory;
-    }
-
-
-    /**
-     * Convenience method to return a named logger, without the application
-     * having to care about factories.
-     *
-     * @param clazz Class from which a log name will be derived
-     *
-     * @exception LogConfigurationException if a suitable <code>Log</code>
-     *  instance cannot be returned
-     */
-    public static Log getLog(Class clazz)
-        throws LogConfigurationException {
-
-        // BEGIN android-added
-        return getLog(clazz.getName());
-        // END android-added
-        // BEGIN android-deleted
-        //return (getFactory().getInstance(clazz));
-        // END android-deleted
-
-    }
-
-
-    /**
-     * Convenience method to return a named logger, without the application
-     * having to care about factories.
-     *
-     * @param name Logical name of the <code>Log</code> instance to be
-     *  returned (the meaning of this name is only known to the underlying
-     *  logging implementation that is being wrapped)
-     *
-     * @exception LogConfigurationException if a suitable <code>Log</code>
-     *  instance cannot be returned
-     */
-    public static Log getLog(String name)
-        throws LogConfigurationException {
-
-        // BEGIN android-added
-        return new org.apache.commons.logging.impl.Jdk14Logger(name);
-        // END android-added
-        // BEGIN android-deleted
-        //return (getFactory().getInstance(name));
-        // END android-deleted
-
-    }
-
-
-    /**
-     * Release any internal references to previously created {@link LogFactory}
-     * instances that have been associated with the specified class loader
-     * (if any), after calling the instance method <code>release()</code> on
-     * each of them.
-     *
-     * @param classLoader ClassLoader for which to release the LogFactory
-     */
-    public static void release(ClassLoader classLoader) {
-
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("Releasing factory for classloader " + objectId(classLoader));
-        }
-        synchronized (factories) {
-            if (classLoader == null) {
-                if (nullClassLoaderFactory != null) {
-                    nullClassLoaderFactory.release();
-                    nullClassLoaderFactory = null;
-                }
-            } else {
-                LogFactory factory = (LogFactory) factories.get(classLoader);
-                if (factory != null) {
-                    factory.release();
-                    factories.remove(classLoader);
-                }
-            }
-        }
-
-    }
-
-
-    /**
-     * Release any internal references to previously created {@link LogFactory}
-     * instances, after calling the instance method <code>release()</code> on
-     * each of them.  This is useful in environments like servlet containers,
-     * which implement application reloading by throwing away a ClassLoader.
-     * Dangling references to objects in that class loader would prevent
-     * garbage collection.
-     */
-    public static void releaseAll() {
-
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("Releasing factory for all classloaders.");
-        }
-        synchronized (factories) {
-            Enumeration elements = factories.elements();
-            while (elements.hasMoreElements()) {
-                LogFactory element = (LogFactory) elements.nextElement();
-                element.release();
-            }
-            factories.clear();
-
-            if (nullClassLoaderFactory != null) {
-                nullClassLoaderFactory.release();
-                nullClassLoaderFactory = null;
-            }
-        }
-
-    }
-
-
-    // ------------------------------------------------------ Protected Methods
-
-    /**
-     * Safely get access to the classloader for the specified class.
-     * <p>
-     * Theoretically, calling getClassLoader can throw a security exception,
-     * and so should be done under an AccessController in order to provide
-     * maximum flexibility. However in practice people don't appear to use
-     * security policies that forbid getClassLoader calls. So for the moment
-     * all code is written to call this method rather than Class.getClassLoader,
-     * so that we could put AccessController stuff in this method without any
-     * disruption later if we need to.
-     * <p>
-     * Even when using an AccessController, however, this method can still
-     * throw SecurityException. Commons-logging basically relies on the
-     * ability to access classloaders, ie a policy that forbids all
-     * classloader access will also prevent commons-logging from working: 
-     * currently this method will throw an exception preventing the entire app
-     * from starting up. Maybe it would be good to detect this situation and
-     * just disable all commons-logging? Not high priority though - as stated
-     * above, security policies that prevent classloader access aren't common.
-     * 
-     * @since 1.1
-     */
-    protected static ClassLoader getClassLoader(Class clazz) {
-        try {
-            return clazz.getClassLoader();
-        } catch(SecurityException ex) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic(
-                        "Unable to get classloader for class '" + clazz
-                        + "' due to security restrictions - " + ex.getMessage());
-            }
-            throw ex;
-        }
-    }
-
-    /**
-     * Calls LogFactory.directGetContextClassLoader under the control of an
-     * AccessController class. This means that java code running under a
-     * security manager that forbids access to ClassLoaders will still work
-     * if this class is given appropriate privileges, even when the caller
-     * doesn't have such privileges. Without using an AccessController, the
-     * the entire call stack must have the privilege before the call is
-     * allowed.
-     *  
-     * @return the context classloader associated with the current thread,
-     * or null if security doesn't allow it.
-     * 
-     * @throws LogConfigurationException if there was some weird error while
-     * attempting to get the context classloader.
-     * 
-     * @throws SecurityException if the current java security policy doesn't
-     * allow this class to access the context classloader.
-     */
-    protected static ClassLoader getContextClassLoader()
-        throws LogConfigurationException {
-
-        return (ClassLoader)AccessController.doPrivileged(
-            new PrivilegedAction() {
-                public Object run() {
-                    return directGetContextClassLoader();
-                }
-            });
-    }
-
-    /**
-     * Return the thread context class loader if available; otherwise return 
-     * null. 
-     * <p>
-     * Most/all code should call getContextClassLoader rather than calling
-     * this method directly.
-     * <p>
-     * The thread context class loader is available for JDK 1.2
-     * or later, if certain security conditions are met.
-     * <p>
-     * Note that no internal logging is done within this method because
-     * this method is called every time LogFactory.getLogger() is called,
-     * and we don't want too much output generated here.
-     * 
-     * @exception LogConfigurationException if a suitable class loader
-     * cannot be identified.
-     * 
-     * @exception SecurityException if the java security policy forbids
-     * access to the context classloader from one of the classes in the
-     * current call stack. 
-     * @since 1.1
-     */
-    protected static ClassLoader directGetContextClassLoader()
-        throws LogConfigurationException
-    {
-        ClassLoader classLoader = null;
-
-        try {
-            // Are we running on a JDK 1.2 or later system?
-            Method method = Thread.class.getMethod("getContextClassLoader", 
-                    (Class[]) null);
-
-            // Get the thread context class loader (if there is one)
-            try {
-                classLoader = (ClassLoader)method.invoke(Thread.currentThread(), 
-                        (Object[]) null);
-            } catch (IllegalAccessException e) {
-                throw new LogConfigurationException
-                    ("Unexpected IllegalAccessException", e);
-            } catch (InvocationTargetException e) {
-                /**
-                 * InvocationTargetException is thrown by 'invoke' when
-                 * the method being invoked (getContextClassLoader) throws
-                 * an exception.
-                 *
-                 * getContextClassLoader() throws SecurityException when
-                 * the context class loader isn't an ancestor of the
-                 * calling class's class loader, or if security
-                 * permissions are restricted.
-                 *
-                 * In the first case (not related), we want to ignore and
-                 * keep going.  We cannot help but also ignore the second
-                 * with the logic below, but other calls elsewhere (to
-                 * obtain a class loader) will trigger this exception where
-                 * we can make a distinction.
-                 */
-                if (e.getTargetException() instanceof SecurityException) {
-                    ;  // ignore
-                } else {
-                    // Capture 'e.getTargetException()' exception for details
-                    // alternate: log 'e.getTargetException()', and pass back 'e'.
-                    throw new LogConfigurationException
-                        ("Unexpected InvocationTargetException", e.getTargetException());
-                }
-            }
-        } catch (NoSuchMethodException e) {
-            // Assume we are running on JDK 1.1
-            classLoader = getClassLoader(LogFactory.class);
-
-            // We deliberately don't log a message here to outputStream;
-            // this message would be output for every call to LogFactory.getLog()
-            // when running on JDK1.1
-            //
-            // if (outputStream != null) {
-            //    outputStream.println(
-            //        "Method Thread.getContextClassLoader does not exist;"
-            //         + " assuming this is JDK 1.1, and that the context"
-            //         + " classloader is the same as the class that loaded"
-            //         + " the concrete LogFactory class.");
-            // }
-            
-        }
-
-        // Return the selected class loader
-        return classLoader;
-    }
-
-    /**
-     * Check cached factories (keyed by contextClassLoader)
-     *
-     * @param contextClassLoader is the context classloader associated
-     * with the current thread. This allows separate LogFactory objects
-     * per component within a container, provided each component has
-     * a distinct context classloader set. This parameter may be null
-     * in JDK1.1, and in embedded systems where jcl-using code is
-     * placed in the bootclasspath.
-     * 
-     * @return the factory associated with the specified classloader if
-     * one has previously been created, or null if this is the first time
-     * we have seen this particular classloader.
-     */
-    private static LogFactory getCachedFactory(ClassLoader contextClassLoader)
-    {
-        LogFactory factory = null;
-
-        if (contextClassLoader == null) {
-            // We have to handle this specially, as factories is a Hashtable
-            // and those don't accept null as a key value.
-            //
-            // nb: nullClassLoaderFactory might be null. That's ok.
-            factory = nullClassLoaderFactory;
-        } else {
-            factory = (LogFactory) factories.get(contextClassLoader);
-        }
-
-        return factory;
-    }
-
-    /**
-     * Remember this factory, so later calls to LogFactory.getCachedFactory
-     * can return the previously created object (together with all its
-     * cached Log objects).
-     *
-     * @param classLoader should be the current context classloader. Note that
-     * this can be null under some circumstances; this is ok.
-     *
-     * @param factory should be the factory to cache. This should never be null.
-     */
-    private static void cacheFactory(ClassLoader classLoader, LogFactory factory)
-    {
-        // Ideally we would assert(factory != null) here. However reporting
-        // errors from within a logging implementation is a little tricky!
-
-        if (factory != null) {
-            if (classLoader == null) {
-                nullClassLoaderFactory = factory;
-            } else {
-                factories.put(classLoader, factory);
-            }
-        }
-    }
-
-    /**
-     * Return a new instance of the specified <code>LogFactory</code>
-     * implementation class, loaded by the specified class loader.
-     * If that fails, try the class loader used to load this
-     * (abstract) LogFactory.
-     * <p>
-     * <h2>ClassLoader conflicts</h2>
-     * Note that there can be problems if the specified ClassLoader is not the 
-     * same as the classloader that loaded this class, ie when loading a
-     * concrete LogFactory subclass via a context classloader.
-     * <p>
-     * The problem is the same one that can occur when loading a concrete Log
-     * subclass via a context classloader.
-     * <p>
-     * The problem occurs when code running in the context classloader calls
-     * class X which was loaded via a parent classloader, and class X then calls
-     * LogFactory.getFactory (either directly or via LogFactory.getLog). Because
-     * class X was loaded via the parent, it binds to LogFactory loaded via
-     * the parent. When the code in this method finds some LogFactoryYYYY
-     * class in the child (context) classloader, and there also happens to be a
-     * LogFactory class defined in the child classloader, then LogFactoryYYYY
-     * will be bound to LogFactory@childloader. It cannot be cast to
-     * LogFactory@parentloader, ie this method cannot return the object as
-     * the desired type. Note that it doesn't matter if the LogFactory class
-     * in the child classloader is identical to the LogFactory class in the
-     * parent classloader, they are not compatible.
-     * <p>
-     * The solution taken here is to simply print out an error message when
-     * this occurs then throw an exception. The deployer of the application
-     * must ensure they remove all occurrences of the LogFactory class from
-     * the child classloader in order to resolve the issue. Note that they
-     * do not have to move the custom LogFactory subclass; that is ok as
-     * long as the only LogFactory class it can find to bind to is in the
-     * parent classloader.
-     * <p>
-     * @param factoryClass Fully qualified name of the <code>LogFactory</code>
-     *  implementation class
-     * @param classLoader ClassLoader from which to load this class
-     * @param contextClassLoader is the context that this new factory will
-     * manage logging for.
-     *
-     * @exception LogConfigurationException if a suitable instance
-     *  cannot be created
-     * @since 1.1
-     */
-    protected static LogFactory newFactory(final String factoryClass,
-                                           final ClassLoader classLoader,
-                                           final ClassLoader contextClassLoader)
-        throws LogConfigurationException
-    {
-        // Note that any unchecked exceptions thrown by the createFactory
-        // method will propagate out of this method; in particular a
-        // ClassCastException can be thrown.
-        Object result = AccessController.doPrivileged(
-            new PrivilegedAction() {
-                public Object run() {
-                    return createFactory(factoryClass, classLoader);
-                }
-            });
-
-        if (result instanceof LogConfigurationException) {
-            LogConfigurationException ex = (LogConfigurationException) result;
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic(
-                        "An error occurred while loading the factory class:"
-                        + ex.getMessage());
-            }
-            throw ex;
-        }
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic(
-                    "Created object " + objectId(result)
-                    + " to manage classloader " + objectId(contextClassLoader));
-        }
-        return (LogFactory)result;
-    }
-
-    /**
-     * Method provided for backwards compatibility; see newFactory version that
-     * takes 3 parameters.
-     * <p>
-     * This method would only ever be called in some rather odd situation.
-     * Note that this method is static, so overriding in a subclass doesn't
-     * have any effect unless this method is called from a method in that
-     * subclass. However this method only makes sense to use from the
-     * getFactory method, and as that is almost always invoked via
-     * LogFactory.getFactory, any custom definition in a subclass would be
-     * pointless. Only a class with a custom getFactory method, then invoked
-     * directly via CustomFactoryImpl.getFactory or similar would ever call
-     * this. Anyway, it's here just in case, though the "managed class loader"
-     * value output to the diagnostics will not report the correct value.
-     */
-    protected static LogFactory newFactory(final String factoryClass,
-                                           final ClassLoader classLoader) {
-	    return newFactory(factoryClass, classLoader, null);
-    }
-
-    /**
-     * Implements the operations described in the javadoc for newFactory.
-     * 
-     * @param factoryClass
-     * 
-     * @param classLoader used to load the specified factory class. This is
-     * expected to be either the TCCL or the classloader which loaded this
-     * class. Note that the classloader which loaded this class might be
-     * "null" (ie the bootloader) for embedded systems.
-     * 
-     * @return either a LogFactory object or a LogConfigurationException object.
-     * @since 1.1
-     */
-    protected static Object createFactory(String factoryClass, ClassLoader classLoader) {
-
-        // This will be used to diagnose bad configurations
-        // and allow a useful message to be sent to the user
-        Class logFactoryClass = null;
-        try {
-            if (classLoader != null) {
-                try {
-                    // First the given class loader param (thread class loader)
-
-                    // Warning: must typecast here & allow exception
-                    // to be generated/caught & recast properly.
-                    logFactoryClass = classLoader.loadClass(factoryClass);
-                    if (LogFactory.class.isAssignableFrom(logFactoryClass)) {
-                        if (isDiagnosticsEnabled()) {
-                            logDiagnostic(
-                                    "Loaded class " + logFactoryClass.getName()
-                                    + " from classloader " + objectId(classLoader));
-                        }
-                    } else {
-                        //
-                        // This indicates a problem with the ClassLoader tree.
-                        // An incompatible ClassLoader was used to load the 
-                        // implementation. 
-                        // As the same classes
-                        // must be available in multiple class loaders,
-                        // it is very likely that multiple JCL jars are present.
-                        // The most likely fix for this
-                        // problem is to remove the extra JCL jars from the 
-                        // ClassLoader hierarchy. 
-                        //
-                        if (isDiagnosticsEnabled()) {
-                            logDiagnostic(
-                                    "Factory class " + logFactoryClass.getName()
-                                + " loaded from classloader " + objectId(logFactoryClass.getClassLoader())
-                                + " does not extend '" + LogFactory.class.getName()
-                                + "' as loaded by this classloader.");
-                            logHierarchy("[BAD CL TREE] ", classLoader);
-                        }
-                    }
-                    
-                    return (LogFactory) logFactoryClass.newInstance();
-
-                } catch (ClassNotFoundException ex) {
-                    if (classLoader == thisClassLoader) {
-                        // Nothing more to try, onwards.
-                        if (isDiagnosticsEnabled()) {
-                            logDiagnostic(
-                                    "Unable to locate any class called '" + factoryClass
-                                    + "' via classloader " + objectId(classLoader));
-                        }
-                        throw ex;
-                    }
-                    // ignore exception, continue
-                } catch (NoClassDefFoundError e) {
-                    if (classLoader == thisClassLoader) {
-                        // Nothing more to try, onwards.
-                        if (isDiagnosticsEnabled()) {
-                            logDiagnostic(
-                                    "Class '" + factoryClass + "' cannot be loaded"
-                                    + " via classloader " + objectId(classLoader)
-                                    + " - it depends on some other class that cannot"
-                                    + " be found.");
-                        }
-                        throw e;
-                    }
-                    // ignore exception, continue
-                } catch(ClassCastException e) {
-                    if (classLoader == thisClassLoader) {
-                        // There's no point in falling through to the code below that
-                        // tries again with thisClassLoader, because we've just tried
-                        // loading with that loader (not the TCCL). Just throw an
-                        // appropriate exception here.
-
-                    	final boolean implementsLogFactory = implementsLogFactory(logFactoryClass);
-                        
-                        //
-                        // Construct a good message: users may not actual expect that a custom implementation 
-                        // has been specified. Several well known containers use this mechanism to adapt JCL 
-                        // to their native logging system. 
-                        // 
-                        String msg = 
-                            "The application has specified that a custom LogFactory implementation should be used but " +
-                            "Class '" + factoryClass + "' cannot be converted to '"
-                            + LogFactory.class.getName() + "'. ";
-                        if (implementsLogFactory) {
-                            msg = msg + "The conflict is caused by the presence of multiple LogFactory classes in incompatible classloaders. " +
-                    		"Background can be found in http://jakarta.apache.org/commons/logging/tech.html. " +
-                    		"If you have not explicitly specified a custom LogFactory then it is likely that " +
-                    		"the container has set one without your knowledge. " +
-                    		"In this case, consider using the commons-logging-adapters.jar file or " +
-                    		"specifying the standard LogFactory from the command line. ";
-                        } else {
-                        	msg = msg + "Please check the custom implementation. ";
-                        }
-                        msg = msg + "Help can be found @http://jakarta.apache.org/commons/logging/troubleshooting.html.";
-                        
-                        if (isDiagnosticsEnabled()) {
-                            logDiagnostic(msg);
-                        }
-                        
-                        ClassCastException ex = new ClassCastException(msg);
-                        throw ex;
-                    }
-                    
-                    // Ignore exception, continue. Presumably the classloader was the
-                    // TCCL; the code below will try to load the class via thisClassLoader.
-                    // This will handle the case where the original calling class is in
-                    // a shared classpath but the TCCL has a copy of LogFactory and the
-                    // specified LogFactory implementation; we will fall back to using the
-                    // LogFactory implementation from the same classloader as this class.
-                    //
-                    // Issue: this doesn't handle the reverse case, where this LogFactory
-                    // is in the webapp, and the specified LogFactory implementation is
-                    // in a shared classpath. In that case:
-                    // (a) the class really does implement LogFactory (bad log msg above)
-                    // (b) the fallback code will result in exactly the same problem.
-                }
-            }
-
-            /* At this point, either classLoader == null, OR
-             * classLoader was unable to load factoryClass.
-             *
-             * In either case, we call Class.forName, which is equivalent
-             * to LogFactory.class.getClassLoader().load(name), ie we ignore
-             * the classloader parameter the caller passed, and fall back
-             * to trying the classloader associated with this class. See the
-             * javadoc for the newFactory method for more info on the 
-             * consequences of this.
-             *
-             * Notes:
-             * * LogFactory.class.getClassLoader() may return 'null'
-             *   if LogFactory is loaded by the bootstrap classloader.
-             */
-            // Warning: must typecast here & allow exception
-            // to be generated/caught & recast properly.
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic(
-                    "Unable to load factory class via classloader " 
-                    + objectId(classLoader)
-                    + " - trying the classloader associated with this LogFactory.");
-            }
-            logFactoryClass = Class.forName(factoryClass);
-            return (LogFactory) logFactoryClass.newInstance();
-        } catch (Exception e) {
-            // Check to see if we've got a bad configuration
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("Unable to create LogFactory instance.");
-            }
-            if (logFactoryClass != null
-                && !LogFactory.class.isAssignableFrom(logFactoryClass)) {
-                
-                return new LogConfigurationException(
-                    "The chosen LogFactory implementation does not extend LogFactory."
-                    + " Please check your configuration.",
-                    e);
-            }
-            return new LogConfigurationException(e);
-        }
-    }
-
-    /**
-     * Determines whether the given class actually implements <code>LogFactory</code>.
-     * Diagnostic information is also logged.
-     * <p>
-     * <strong>Usage:</strong> to diagnose whether a classloader conflict is the cause
-     * of incompatibility. The test used is whether the class is assignable from
-     * the <code>LogFactory</code> class loaded by the class's classloader.
-     * @param logFactoryClass <code>Class</code> which may implement <code>LogFactory</code>
-     * @return true if the <code>logFactoryClass</code> does extend
-     * <code>LogFactory</code> when that class is loaded via the same
-     * classloader that loaded the <code>logFactoryClass</code>.
-     */
-    private static boolean implementsLogFactory(Class logFactoryClass) {
-        boolean implementsLogFactory = false;
-        if (logFactoryClass != null) {
-            try {
-                ClassLoader logFactoryClassLoader = logFactoryClass.getClassLoader();
-                if (logFactoryClassLoader == null) {
-                    logDiagnostic("[CUSTOM LOG FACTORY] was loaded by the boot classloader");
-                } else {
-                    logHierarchy("[CUSTOM LOG FACTORY] ", logFactoryClassLoader);
-                    Class factoryFromCustomLoader
-                        = Class.forName("org.apache.commons.logging.LogFactory", false, logFactoryClassLoader);
-                    implementsLogFactory = factoryFromCustomLoader.isAssignableFrom(logFactoryClass);
-                    if (implementsLogFactory) {
-                        logDiagnostic("[CUSTOM LOG FACTORY] " + logFactoryClass.getName()
-                                + " implements LogFactory but was loaded by an incompatible classloader.");
-                    } else {
-                        logDiagnostic("[CUSTOM LOG FACTORY] " + logFactoryClass.getName()
-                                + " does not implement LogFactory.");
-                    }
-                }
-            } catch (SecurityException e) {
-                //
-                // The application is running within a hostile security environment.
-                // This will make it very hard to diagnose issues with JCL.
-                // Consider running less securely whilst debugging this issue.
-                //
-                logDiagnostic("[CUSTOM LOG FACTORY] SecurityException thrown whilst trying to determine whether " +
-                        "the compatibility was caused by a classloader conflict: "
-                        + e.getMessage());
-            } catch (LinkageError e) {
-                //
-                // This should be an unusual circumstance.
-                // LinkageError's usually indicate that a dependent class has incompatibly changed.
-                // Another possibility may be an exception thrown by an initializer.
-                // Time for a clean rebuild?
-                //
-                logDiagnostic("[CUSTOM LOG FACTORY] LinkageError thrown whilst trying to determine whether " +
-                        "the compatibility was caused by a classloader conflict: "
-                        + e.getMessage());
-            } catch (ClassNotFoundException e) {
-                //
-                // LogFactory cannot be loaded by the classloader which loaded the custom factory implementation.
-                // The custom implementation is not viable until this is corrected.
-                // Ensure that the JCL jar and the custom class are available from the same classloader.
-                // Running with diagnostics on should give information about the classloaders used
-                // to load the custom factory.
-                //
-                logDiagnostic("[CUSTOM LOG FACTORY] LogFactory class cannot be loaded by classloader which loaded the " +
-                        "custom LogFactory implementation. Is the custom factory in the right classloader?");
-            }
-        }
-        return implementsLogFactory;
-    }
-
-    /**
-     * Applets may run in an environment where accessing resources of a loader is
-     * a secure operation, but where the commons-logging library has explicitly
-     * been granted permission for that operation. In this case, we need to 
-     * run the operation using an AccessController.
-     */
-    private static InputStream getResourceAsStream(final ClassLoader loader,
-                                                   final String name)
-    {
-        return (InputStream)AccessController.doPrivileged(
-            new PrivilegedAction() {
-                public Object run() {
-                    if (loader != null) {
-                        return loader.getResourceAsStream(name);
-                    } else {
-                        return ClassLoader.getSystemResourceAsStream(name);
-                    }
-                }
-            });
-    }
-
-    /**
-     * Given a filename, return an enumeration of URLs pointing to
-     * all the occurrences of that filename in the classpath.
-     * <p>
-     * This is just like ClassLoader.getResources except that the
-     * operation is done under an AccessController so that this method will
-     * succeed when this jarfile is privileged but the caller is not.
-     * This method must therefore remain private to avoid security issues.
-     * <p>
-     * If no instances are found, an Enumeration is returned whose
-     * hasMoreElements method returns false (ie an "empty" enumeration).
-     * If resources could not be listed for some reason, null is returned.
-     */
-    private static Enumeration getResources(final ClassLoader loader,
-            final String name)
-    {
-        PrivilegedAction action = 
-            new PrivilegedAction() {
-                public Object run() {
-                    try {
-                        if (loader != null) {
-                            return loader.getResources(name);
-                        } else {
-                            return ClassLoader.getSystemResources(name);
-                        }
-                    } catch(IOException e) {
-                        if (isDiagnosticsEnabled()) {
-                            logDiagnostic(
-                                "Exception while trying to find configuration file "
-                                + name + ":" + e.getMessage());
-                        }
-                        return null;
-                    } catch(NoSuchMethodError e) {
-                        // we must be running on a 1.1 JVM which doesn't support
-                        // ClassLoader.getSystemResources; just return null in
-                        // this case.
-                        return null;
-                    }
-                }
-            };
-        Object result = AccessController.doPrivileged(action);
-        return (Enumeration) result;
-    }
-
-    /**
-     * Given a URL that refers to a .properties file, load that file.
-     * This is done under an AccessController so that this method will
-     * succeed when this jarfile is privileged but the caller is not.
-     * This method must therefore remain private to avoid security issues.
-     * <p>
-     * Null is returned if the URL cannot be opened.
-     */
-    private static Properties getProperties(final URL url) {
-        PrivilegedAction action = 
-            new PrivilegedAction() {
-                public Object run() {
-                    try {
-                        InputStream stream = url.openStream();
-                        if (stream != null) {
-                            Properties props = new Properties();
-                            props.load(stream);
-                            stream.close();
-                            return props;
-                        }
-                    } catch(IOException e) {
-                        if (isDiagnosticsEnabled()) {
-                            logDiagnostic("Unable to read URL " + url);
-                        }
-                    }
-
-                    return null;
-                }
-            };
-        return (Properties) AccessController.doPrivileged(action);
-    }
-
-    /**
-     * Locate a user-provided configuration file.
-     * <p>
-     * The classpath of the specified classLoader (usually the context classloader)
-     * is searched for properties files of the specified name. If none is found,
-     * null is returned. If more than one is found, then the file with the greatest
-     * value for its PRIORITY property is returned. If multiple files have the
-     * same PRIORITY value then the first in the classpath is returned.
-     * <p> 
-     * This differs from the 1.0.x releases; those always use the first one found.
-     * However as the priority is a new field, this change is backwards compatible.
-     * <p>
-     * The purpose of the priority field is to allow a webserver administrator to
-     * override logging settings in all webapps by placing a commons-logging.properties
-     * file in a shared classpath location with a priority > 0; this overrides any
-     * commons-logging.properties files without priorities which are in the
-     * webapps. Webapps can also use explicit priorities to override a configuration
-     * file in the shared classpath if needed. 
-     */
-    private static final Properties getConfigurationFile(
-            ClassLoader classLoader, String fileName) {
-
-        Properties props = null;
-        double priority = 0.0;
-        URL propsUrl = null;
-        try {
-            Enumeration urls = getResources(classLoader, fileName);
-
-            if (urls == null) {
-                return null;
-            }
-            
-            while (urls.hasMoreElements()) {
-                URL url = (URL) urls.nextElement();
-                
-                Properties newProps = getProperties(url);
-                if (newProps != null) {
-                    if (props == null) {
-                        propsUrl = url; 
-                        props = newProps;
-                        String priorityStr = props.getProperty(PRIORITY_KEY);
-                        priority = 0.0;
-                        if (priorityStr != null) {
-                            priority = Double.parseDouble(priorityStr);
-                        }
-
-                        if (isDiagnosticsEnabled()) {
-                            logDiagnostic(
-                                "[LOOKUP] Properties file found at '" + url + "'"
-                                + " with priority " + priority); 
-                        }
-                    } else {
-                        String newPriorityStr = newProps.getProperty(PRIORITY_KEY);
-                        double newPriority = 0.0;
-                        if (newPriorityStr != null) {
-                            newPriority = Double.parseDouble(newPriorityStr);
-                        }
-
-                        if (newPriority > priority) {
-                            if (isDiagnosticsEnabled()) {
-                                logDiagnostic(
-                                    "[LOOKUP] Properties file at '" + url + "'"
-                                    + " with priority " + newPriority 
-                                    + " overrides file at '" + propsUrl + "'"
-                                    + " with priority " + priority);
-                            }
-
-                            propsUrl = url; 
-                            props = newProps;
-                            priority = newPriority;
-                        } else {
-                            if (isDiagnosticsEnabled()) {
-                                logDiagnostic(
-                                    "[LOOKUP] Properties file at '" + url + "'"
-                                    + " with priority " + newPriority 
-                                    + " does not override file at '" + propsUrl + "'"
-                                    + " with priority " + priority);
-                            }
-                        }
-                    }
-
-                }
-            }
-        } catch (SecurityException e) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("SecurityException thrown while trying to find/read config files.");
-            }
-        }
-
-        if (isDiagnosticsEnabled()) {
-            if (props == null) {
-                logDiagnostic(
-                    "[LOOKUP] No properties file of name '" + fileName
-                    + "' found.");
-            } else {
-                logDiagnostic(
-                    "[LOOKUP] Properties file of name '" + fileName
-                    + "' found at '" + propsUrl + '"');
-            }
-        }
-
-        return props;
-    }
-
-    /**
-     * Determines whether the user wants internal diagnostic output. If so,
-     * returns an appropriate writer object. Users can enable diagnostic
-     * output by setting the system property named {@link #DIAGNOSTICS_DEST_PROPERTY} to
-     * a filename, or the special values STDOUT or STDERR. 
-     */
-    private static void initDiagnostics() {
-        String dest;
-    	try {
-    	    dest = System.getProperty(DIAGNOSTICS_DEST_PROPERTY);
-    	    if (dest == null) {
-    	        return;
-    	    }
-    	} catch(SecurityException ex) {
-    	    // We must be running in some very secure environment.
-    	    // We just have to assume output is not wanted..
-    	    return;
-    	}
-    	
-    	if (dest.equals("STDOUT")) {
-    	    diagnosticsStream = System.out;
-    	} else if (dest.equals("STDERR")) {
-    	    diagnosticsStream = System.err;
-    	} else {
-    	    try {
-                // open the file in append mode
-    	        FileOutputStream fos = new FileOutputStream(dest, true);
-    	        diagnosticsStream = new PrintStream(fos);
-    	    } catch(IOException ex) {
-    	        // We should report this to the user - but how?
-    	        return;
-    	    }
-    	}
-
-        // In order to avoid confusion where multiple instances of JCL are
-        // being used via different classloaders within the same app, we
-        // ensure each logged message has a prefix of form
-        // [LogFactory from classloader OID]
-        //
-        // Note that this prefix should be kept consistent with that 
-        // in LogFactoryImpl. However here we don't need to output info
-        // about the actual *instance* of LogFactory, as all methods that
-        // output diagnostics from this class are static.
-        String classLoaderName;
-        try {
-            ClassLoader classLoader = thisClassLoader;
-            if (thisClassLoader == null) {
-                classLoaderName = "BOOTLOADER";
-            } else {
-                classLoaderName = objectId(classLoader);
-            }
-        } catch(SecurityException e) {
-            classLoaderName = "UNKNOWN";
-        }
-        diagnosticPrefix = "[LogFactory from " + classLoaderName + "] ";
-    }
-
-    /**
-     * Indicates true if the user has enabled internal logging.
-     * <p>
-     * By the way, sorry for the incorrect grammar, but calling this method
-     * areDiagnosticsEnabled just isn't java beans style.
-     * 
-     * @return true if calls to logDiagnostic will have any effect.
-     * @since 1.1
-     */
-    protected static boolean isDiagnosticsEnabled() {
-        return diagnosticsStream != null;
-    }
-
-    /**
-     * Write the specified message to the internal logging destination.
-     * <p>
-     * Note that this method is private; concrete subclasses of this class
-     * should not call it because the diagnosticPrefix string this
-     * method puts in front of all its messages is LogFactory@....,
-     * while subclasses should put SomeSubClass@...
-     * <p>
-     * Subclasses should instead compute their own prefix, then call
-     * logRawDiagnostic. Note that calling isDiagnosticsEnabled is
-     * fine for subclasses.
-     * <p>
-     * Note that it is safe to call this method before initDiagnostics
-     * is called; any output will just be ignored (as isDiagnosticsEnabled
-     * will return false).
-     * 
-     * @param msg is the diagnostic message to be output.
-     */
-    private static final void logDiagnostic(String msg) {
-        if (diagnosticsStream != null) {
-            diagnosticsStream.print(diagnosticPrefix);
-            diagnosticsStream.println(msg);
-            diagnosticsStream.flush();
-        }
-    }
-
-    /**
-     * Write the specified message to the internal logging destination.
-     * 
-     * @param msg is the diagnostic message to be output.
-     * @since 1.1
-     */
-    protected static final void logRawDiagnostic(String msg) {
-        if (diagnosticsStream != null) {
-            diagnosticsStream.println(msg);
-            diagnosticsStream.flush();
-        }
-    }
-
-    /**
-     * Generate useful diagnostics regarding the classloader tree for
-     * the specified class.
-     * <p>
-     * As an example, if the specified class was loaded via a webapp's
-     * classloader, then you may get the following output:
-     * <pre>
-     * Class com.acme.Foo was loaded via classloader 11111
-     * ClassLoader tree: 11111 -> 22222 (SYSTEM) -> 33333 -> BOOT 
-     * </pre>
-     * <p>
-     * This method returns immediately if isDiagnosticsEnabled()
-     * returns false.
-     * 
-     * @param clazz is the class whose classloader + tree are to be
-     * output.
-     */
-    private static void logClassLoaderEnvironment(Class clazz) {
-        if (!isDiagnosticsEnabled()) {
-            return;
-        }
-        
-        try {
-            logDiagnostic("[ENV] Extension directories (java.ext.dir): " + System.getProperty("java.ext.dir"));
-            logDiagnostic("[ENV] Application classpath (java.class.path): " + System.getProperty("java.class.path"));
-        } catch(SecurityException ex) {
-            logDiagnostic("[ENV] Security setting prevent interrogation of system classpaths.");
-        }
-        
-        String className = clazz.getName();
-        ClassLoader classLoader;
-        
-        try {
-            classLoader = getClassLoader(clazz);
-        } catch(SecurityException ex) {
-            // not much useful diagnostics we can print here!
-            logDiagnostic(
-                "[ENV] Security forbids determining the classloader for " + className);
-            return;
-        }
-
-        logDiagnostic(
-            "[ENV] Class " + className + " was loaded via classloader "
-            + objectId(classLoader));
-        logHierarchy("[ENV] Ancestry of classloader which loaded " + className + " is ", classLoader);
-    }
-
-    /**
-     * Logs diagnostic messages about the given classloader
-     * and it's hierarchy. The prefix is prepended to the message
-     * and is intended to make it easier to understand the logs.
-     * @param prefix 
-     * @param classLoader
-     */
-    private static void logHierarchy(String prefix, ClassLoader classLoader) {
-        if (!isDiagnosticsEnabled()) {
-            return;
-        }
-        ClassLoader systemClassLoader;
-        if (classLoader != null) {
-            final String classLoaderString = classLoader.toString();
-            logDiagnostic(prefix + objectId(classLoader) + " == '" + classLoaderString + "'");
-        }
-        
-        try {
-            systemClassLoader = ClassLoader.getSystemClassLoader();
-        } catch(SecurityException ex) {
-            logDiagnostic(
-                    prefix + "Security forbids determining the system classloader.");
-            return;
-        }        
-        if (classLoader != null) {
-            StringBuffer buf = new StringBuffer(prefix + "ClassLoader tree:");
-            for(;;) {
-                buf.append(objectId(classLoader));
-                if (classLoader == systemClassLoader) {
-                    buf.append(" (SYSTEM) ");
-                }
-
-                try {
-                    classLoader = classLoader.getParent();
-                } catch(SecurityException ex) {
-                    buf.append(" --> SECRET");
-                    break;
-                }
-
-                buf.append(" --> ");
-                if (classLoader == null) {
-                    buf.append("BOOT");
-                    break;
-                }
-            }
-            logDiagnostic(buf.toString());
-        }
-    }
-
-    /**
-     * Returns a string that uniquely identifies the specified object, including
-     * its class.
-     * <p>
-     * The returned string is of form "classname@hashcode", ie is the same as
-     * the return value of the Object.toString() method, but works even when
-     * the specified object's class has overidden the toString method.
-     * 
-     * @param o may be null.
-     * @return a string of form classname@hashcode, or "null" if param o is null.
-     * @since 1.1
-     */
-    public static String objectId(Object o) {
-        if (o == null) {
-            return "null";
-        } else {
-            return o.getClass().getName() + "@" + System.identityHashCode(o);
-        }
-    }
-
-    // ----------------------------------------------------------------------
-    // Static initialiser block to perform initialisation at class load time.
-    //
-    // We can't do this in the class constructor, as there are many 
-    // static methods on this class that can be called before any
-    // LogFactory instances are created, and they depend upon this
-    // stuff having been set up.
-    //
-    // Note that this block must come after any variable declarations used
-    // by any methods called from this block, as we want any static initialiser
-    // associated with the variable to run first. If static initialisers for
-    // variables run after this code, then (a) their value might be needed
-    // by methods called from here, and (b) they might *override* any value
-    // computed here!
-    //
-    // So the wisest thing to do is just to place this code at the very end
-    // of the class file.
-    // ----------------------------------------------------------------------
-
-    static {
-        // note: it's safe to call methods before initDiagnostics.
-        thisClassLoader = getClassLoader(LogFactory.class);
-        initDiagnostics();
-        logClassLoaderEnvironment(LogFactory.class);
-        factories = createFactoryStore();
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("BOOTSTRAP COMPLETED");
-        }
-    }
-}
diff --git a/src/org/apache/commons/logging/LogSource.java b/src/org/apache/commons/logging/LogSource.java
deleted file mode 100644
index e3c0603..0000000
--- a/src/org/apache/commons/logging/LogSource.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.logging;
-
-
-import java.lang.reflect.Constructor;
-import java.util.Hashtable;
-
-import org.apache.commons.logging.impl.NoOpLog;
-
-
-/**
- * <p>Factory for creating {@link Log} instances.  Applications should call
- * the <code>makeNewLogInstance()</code> method to instantiate new instances
- * of the configured {@link Log} implementation class.</p>
- *
- * <p>By default, calling <code>getInstance()</code> will use the following
- * algorithm:</p>
- * <ul>
- * <li>If Log4J is available, return an instance of
- *     <code>org.apache.commons.logging.impl.Log4JLogger</code>.</li>
- * <li>If JDK 1.4 or later is available, return an instance of
- *     <code>org.apache.commons.logging.impl.Jdk14Logger</code>.</li>
- * <li>Otherwise, return an instance of
- *     <code>org.apache.commons.logging.impl.NoOpLog</code>.</li>
- * </ul>
- *
- * <p>You can change the default behavior in one of two ways:</p>
- * <ul>
- * <li>On the startup command line, set the system property
- *     <code>org.apache.commons.logging.log</code> to the name of the
- *     <code>org.apache.commons.logging.Log</code> implementation class
- *     you want to use.</li>
- * <li>At runtime, call <code>LogSource.setLogImplementation()</code>.</li>
- * </ul>
- *
- * @deprecated Use {@link LogFactory} instead - The default factory
- *  implementation performs exactly the same algorithm as this class did
- *
- * @author Rod Waldhoff
- * @version $Id: LogSource.java 155426 2005-02-26 13:10:49Z dirkv $
- */
-public class LogSource {
-
-    // ------------------------------------------------------- Class Attributes
-
-    static protected Hashtable logs = new Hashtable();
-
-    /** Is log4j available (in the current classpath) */
-    static protected boolean log4jIsAvailable = false;
-
-    /** Is JDK 1.4 logging available */
-    static protected boolean jdk14IsAvailable = false;
-
-    /** Constructor for current log class */
-    static protected Constructor logImplctor = null;
-
-
-    // ----------------------------------------------------- Class Initializers
-
-    static {
-
-        // Is Log4J Available?
-        try {
-            if (null != Class.forName("org.apache.log4j.Logger")) {
-                log4jIsAvailable = true;
-            } else {
-                log4jIsAvailable = false;
-            }
-        } catch (Throwable t) {
-            log4jIsAvailable = false;
-        }
-
-        // Is JDK 1.4 Logging Available?
-        try {
-            if ((null != Class.forName("java.util.logging.Logger")) &&
-                (null != Class.forName("org.apache.commons.logging.impl.Jdk14Logger"))) {
-                jdk14IsAvailable = true;
-            } else {
-                jdk14IsAvailable = false;
-            }
-        } catch (Throwable t) {
-            jdk14IsAvailable = false;
-        }
-
-        // Set the default Log implementation
-        String name = null;
-        try {
-            name = System.getProperty("org.apache.commons.logging.log");
-            if (name == null) {
-                name = System.getProperty("org.apache.commons.logging.Log");
-            }
-        } catch (Throwable t) {
-        }
-        if (name != null) {
-            try {
-                setLogImplementation(name);
-            } catch (Throwable t) {
-                try {
-                    setLogImplementation
-                            ("org.apache.commons.logging.impl.NoOpLog");
-                } catch (Throwable u) {
-                    ;
-                }
-            }
-        } else {
-            try {
-                if (log4jIsAvailable) {
-                    setLogImplementation
-                            ("org.apache.commons.logging.impl.Log4JLogger");
-                } else if (jdk14IsAvailable) {
-                    setLogImplementation
-                            ("org.apache.commons.logging.impl.Jdk14Logger");
-                } else {
-                    setLogImplementation
-                            ("org.apache.commons.logging.impl.NoOpLog");
-                }
-            } catch (Throwable t) {
-                try {
-                    setLogImplementation
-                            ("org.apache.commons.logging.impl.NoOpLog");
-                } catch (Throwable u) {
-                    ;
-                }
-            }
-        }
-
-    }
-
-
-    // ------------------------------------------------------------ Constructor
-
-
-    /** Don't allow others to create instances */
-    private LogSource() {
-    }
-
-
-    // ---------------------------------------------------------- Class Methods
-
-
-    /**
-     * Set the log implementation/log implementation factory
-     * by the name of the class.  The given class
-     * must implement {@link Log}, and provide a constructor that
-     * takes a single {@link String} argument (containing the name
-     * of the log).
-     */
-    static public void setLogImplementation(String classname) throws
-            LinkageError, ExceptionInInitializerError,
-            NoSuchMethodException, SecurityException,
-            ClassNotFoundException {
-        try {
-            Class logclass = Class.forName(classname);
-            Class[] argtypes = new Class[1];
-            argtypes[0] = "".getClass();
-            logImplctor = logclass.getConstructor(argtypes);
-        } catch (Throwable t) {
-            logImplctor = null;
-        }
-    }
-
-
-    /**
-     * Set the log implementation/log implementation factory
-     * by class.  The given class must implement {@link Log},
-     * and provide a constructor that takes a single {@link String}
-     * argument (containing the name of the log).
-     */
-    static public void setLogImplementation(Class logclass) throws
-            LinkageError, ExceptionInInitializerError,
-            NoSuchMethodException, SecurityException {
-        Class[] argtypes = new Class[1];
-        argtypes[0] = "".getClass();
-        logImplctor = logclass.getConstructor(argtypes);
-    }
-
-
-    /** Get a <code>Log</code> instance by class name */
-    static public Log getInstance(String name) {
-        Log log = (Log) (logs.get(name));
-        if (null == log) {
-            log = makeNewLogInstance(name);
-            logs.put(name, log);
-        }
-        return log;
-    }
-
-
-    /** Get a <code>Log</code> instance by class */
-    static public Log getInstance(Class clazz) {
-        return getInstance(clazz.getName());
-    }
-
-
-    /**
-     * Create a new {@link Log} implementation, based
-     * on the given <i>name</i>.
-     * <p>
-     * The specific {@link Log} implementation returned
-     * is determined by the value of the
-     * <tt>org.apache.commons.logging.log</tt> property.
-     * The value of <tt>org.apache.commons.logging.log</tt> may be set to
-     * the fully specified name of a class that implements
-     * the {@link Log} interface.  This class must also
-     * have a public constructor that takes a single
-     * {@link String} argument (containing the <i>name</i>
-     * of the {@link Log} to be constructed.
-     * <p>
-     * When <tt>org.apache.commons.logging.log</tt> is not set,
-     * or when no corresponding class can be found,
-     * this method will return a Log4JLogger
-     * if the log4j Logger class is
-     * available in the {@link LogSource}'s classpath, or a
-     * Jdk14Logger if we are on a JDK 1.4 or later system, or
-     * NoOpLog if neither of the above conditions is true.
-     *
-     * @param name the log name (or category)
-     */
-    static public Log makeNewLogInstance(String name) {
-
-        Log log = null;
-        try {
-            Object[] args = new Object[1];
-            args[0] = name;
-            log = (Log) (logImplctor.newInstance(args));
-        } catch (Throwable t) {
-            log = null;
-        }
-        if (null == log) {
-            log = new NoOpLog(name);
-        }
-        return log;
-
-    }
-
-
-    /**
-     * Returns a {@link String} array containing the names of
-     * all logs known to me.
-     */
-    static public String[] getLogNames() {
-        return (String[]) (logs.keySet().toArray(new String[logs.size()]));
-    }
-
-
-}
diff --git a/src/org/apache/commons/logging/impl/Jdk14Logger.java b/src/org/apache/commons/logging/impl/Jdk14Logger.java
deleted file mode 100644
index d4f840c..0000000
--- a/src/org/apache/commons/logging/impl/Jdk14Logger.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-
-package org.apache.commons.logging.impl;
-
-
-import java.io.Serializable;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.commons.logging.Log;
-
-
-/**
- * <p>Implementation of the <code>org.apache.commons.logging.Log</code>
- * interface that wraps the standard JDK logging mechanisms that were
- * introduced in the Merlin release (JDK 1.4).</p>
- *
- * @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
- * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- * @version $Revision: 370652 $ $Date: 2006-01-19 22:23:48 +0000 (Thu, 19 Jan 2006) $
- */
-
-public class Jdk14Logger implements Log, Serializable {
-
-    /**
-     * This member variable simply ensures that any attempt to initialise
-     * this class in a pre-1.4 JVM will result in an ExceptionInInitializerError.
-     * It must not be private, as an optimising compiler could detect that it
-     * is not used and optimise it away.
-     */
-    protected static final Level dummyLevel = Level.FINE;
-
-    // ----------------------------------------------------------- Constructors
-
-
-    /**
-     * Construct a named instance of this Logger.
-     *
-     * @param name Name of the logger to be constructed
-     */
-    public Jdk14Logger(String name) {
-
-        this.name = name;
-        logger = getLogger();
-
-    }
-
-
-    // ----------------------------------------------------- Instance Variables
-
-
-    /**
-     * The underlying Logger implementation we are using.
-     */
-    protected transient Logger logger = null;
-
-
-    /**
-     * The name of the logger we are wrapping.
-     */
-    protected String name = null;
-
-
-    // --------------------------------------------------------- Public Methods
-
-    private void log( Level level, String msg, Throwable ex ) {
-
-        Logger logger = getLogger();
-        if (logger.isLoggable(level)) {
-            // Hack (?) to get the stack trace.
-            Throwable dummyException=new Throwable();
-            StackTraceElement locations[]=dummyException.getStackTrace();
-            // Caller will be the third element
-            String cname="unknown";
-            String method="unknown";
-            if( locations!=null && locations.length >2 ) {
-                StackTraceElement caller=locations[2];
-                cname=caller.getClassName();
-                method=caller.getMethodName();
-            }
-            if( ex==null ) {
-                logger.logp( level, cname, method, msg );
-            } else {
-                logger.logp( level, cname, method, msg, ex );
-            }
-        }
-
-    }
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.FINE</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#debug(Object)
-     */
-    public void debug(Object message) {
-        log(Level.FINE, String.valueOf(message), null);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.FINE</code>.
-     *
-     * @param message to log
-     * @param exception log this cause
-     * @see org.apache.commons.logging.Log#debug(Object, Throwable)
-     */
-    public void debug(Object message, Throwable exception) {
-        log(Level.FINE, String.valueOf(message), exception);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.SEVERE</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#error(Object)
-     */
-    public void error(Object message) {
-        log(Level.SEVERE, String.valueOf(message), null);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.SEVERE</code>.
-     *
-     * @param message to log
-     * @param exception log this cause
-     * @see org.apache.commons.logging.Log#error(Object, Throwable)
-     */
-    public void error(Object message, Throwable exception) {
-        log(Level.SEVERE, String.valueOf(message), exception);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.SEVERE</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#fatal(Object)
-     */
-    public void fatal(Object message) {
-        log(Level.SEVERE, String.valueOf(message), null);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.SEVERE</code>.
-     *
-     * @param message to log
-     * @param exception log this cause
-     * @see org.apache.commons.logging.Log#fatal(Object, Throwable)
-     */
-    public void fatal(Object message, Throwable exception) {
-        log(Level.SEVERE, String.valueOf(message), exception);
-    }
-
-
-    /**
-     * Return the native Logger instance we are using.
-     */
-    public Logger getLogger() {
-        if (logger == null) {
-            logger = Logger.getLogger(name);
-        }
-        return (logger);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.INFO</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#info(Object)
-     */
-    public void info(Object message) {
-        log(Level.INFO, String.valueOf(message), null);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.INFO</code>.
-     *
-     * @param message to log
-     * @param exception log this cause
-     * @see org.apache.commons.logging.Log#info(Object, Throwable)
-     */
-    public void info(Object message, Throwable exception) {
-        log(Level.INFO, String.valueOf(message), exception);
-    }
-
-
-    /**
-     * Is debug logging currently enabled?
-     */
-    public boolean isDebugEnabled() {
-        return (getLogger().isLoggable(Level.FINE));
-    }
-
-
-    /**
-     * Is error logging currently enabled?
-     */
-    public boolean isErrorEnabled() {
-        return (getLogger().isLoggable(Level.SEVERE));
-    }
-
-
-    /**
-     * Is fatal logging currently enabled?
-     */
-    public boolean isFatalEnabled() {
-        return (getLogger().isLoggable(Level.SEVERE));
-    }
-
-
-    /**
-     * Is info logging currently enabled?
-     */
-    public boolean isInfoEnabled() {
-        return (getLogger().isLoggable(Level.INFO));
-    }
-
-
-    /**
-     * Is trace logging currently enabled?
-     */
-    public boolean isTraceEnabled() {
-        return (getLogger().isLoggable(Level.FINEST));
-    }
-
-
-    /**
-     * Is warn logging currently enabled?
-     */
-    public boolean isWarnEnabled() {
-        return (getLogger().isLoggable(Level.WARNING));
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.FINEST</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#trace(Object)
-     */
-    public void trace(Object message) {
-        log(Level.FINEST, String.valueOf(message), null);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.FINEST</code>.
-     *
-     * @param message to log
-     * @param exception log this cause
-     * @see org.apache.commons.logging.Log#trace(Object, Throwable)
-     */
-    public void trace(Object message, Throwable exception) {
-        log(Level.FINEST, String.valueOf(message), exception);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.WARNING</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#warn(Object)
-     */
-    public void warn(Object message) {
-        log(Level.WARNING, String.valueOf(message), null);
-    }
-
-
-    /**
-     * Logs a message with <code>java.util.logging.Level.WARNING</code>.
-     *
-     * @param message to log
-     * @param exception log this cause
-     * @see org.apache.commons.logging.Log#warn(Object, Throwable)
-     */
-    public void warn(Object message, Throwable exception) {
-        log(Level.WARNING, String.valueOf(message), exception);
-    }
-
-
-}
diff --git a/src/org/apache/commons/logging/impl/LogFactoryImpl.java b/src/org/apache/commons/logging/impl/LogFactoryImpl.java
deleted file mode 100644
index 8937b2f..0000000
--- a/src/org/apache/commons/logging/impl/LogFactoryImpl.java
+++ /dev/null
@@ -1,1400 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-package org.apache.commons.logging.impl;
-
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Vector;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogConfigurationException;
-import org.apache.commons.logging.LogFactory;
-
-
-/**
- * <p>Concrete subclass of {@link LogFactory} that implements the
- * following algorithm to dynamically select a logging implementation
- * class to instantiate a wrapper for.</p>
- * <ul>
- * <li>Use a factory configuration attribute named
- *     <code>org.apache.commons.logging.Log</code> to identify the
- *     requested implementation class.</li>
- * <li>Use the <code>org.apache.commons.logging.Log</code> system property
- *     to identify the requested implementation class.</li>
- * <li>If <em>Log4J</em> is available, return an instance of
- *     <code>org.apache.commons.logging.impl.Log4JLogger</code>.</li>
- * <li>If <em>JDK 1.4 or later</em> is available, return an instance of
- *     <code>org.apache.commons.logging.impl.Jdk14Logger</code>.</li>
- * <li>Otherwise, return an instance of
- *     <code>org.apache.commons.logging.impl.SimpleLog</code>.</li>
- * </ul>
- *
- * <p>If the selected {@link Log} implementation class has a
- * <code>setLogFactory()</code> method that accepts a {@link LogFactory}
- * parameter, this method will be called on each newly created instance
- * to identify the associated factory.  This makes factory configuration
- * attributes available to the Log instance, if it so desires.</p>
- *
- * <p>This factory will remember previously created <code>Log</code> instances
- * for the same name, and will return them on repeated requests to the
- * <code>getInstance()</code> method.</p>
- *
- * @author Rod Waldhoff
- * @author Craig R. McClanahan
- * @author Richard A. Sitze
- * @author Brian Stansberry
- * @version $Revision: 399224 $ $Date: 2006-05-03 10:25:54 +0100 (Wed, 03 May 2006) $
- */
-
-public class LogFactoryImpl extends LogFactory {
-
-
-    /** Log4JLogger class name */
-    private static final String LOGGING_IMPL_LOG4J_LOGGER = "org.apache.commons.logging.impl.Log4JLogger";
-    /** Jdk14Logger class name */
-    private static final String LOGGING_IMPL_JDK14_LOGGER = "org.apache.commons.logging.impl.Jdk14Logger";
-    /** Jdk13LumberjackLogger class name */
-    private static final String LOGGING_IMPL_LUMBERJACK_LOGGER = "org.apache.commons.logging.impl.Jdk13LumberjackLogger";
-    /** SimpleLog class name */
-    private static final String LOGGING_IMPL_SIMPLE_LOGGER = "org.apache.commons.logging.impl.SimpleLog";
-
-    private static final String PKG_IMPL="org.apache.commons.logging.impl.";
-    private static final int PKG_LEN = PKG_IMPL.length();
-    
-    // ----------------------------------------------------------- Constructors
-
-   
-
-    /**
-     * Public no-arguments constructor required by the lookup mechanism.
-     */
-    public LogFactoryImpl() {
-        super();
-        initDiagnostics();  // method on this object
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("Instance created.");
-        }
-    }
-
-
-    // ----------------------------------------------------- Manifest Constants
-
-
-    /**
-     * The name (<code>org.apache.commons.logging.Log</code>) of the system 
-     * property identifying our {@link Log} implementation class.
-     */
-    public static final String LOG_PROPERTY =
-        "org.apache.commons.logging.Log";
-
-
-    /**
-     * The deprecated system property used for backwards compatibility with
-     * old versions of JCL.
-     */
-    protected static final String LOG_PROPERTY_OLD =
-        "org.apache.commons.logging.log";
-
-    /**
-     * The name (<code>org.apache.commons.logging.Log.allowFlawedContext</code>) 
-     * of the system property which can be set true/false to
-     * determine system behaviour when a bad context-classloader is encountered.
-     * When set to false, a LogConfigurationException is thrown if
-     * LogFactoryImpl is loaded via a child classloader of the TCCL (this
-     * should never happen in sane systems).
-     * 
-     * Default behaviour: true (tolerates bad context classloaders)
-     * 
-     * See also method setAttribute.
-     */
-    public static final String ALLOW_FLAWED_CONTEXT_PROPERTY = 
-        "org.apache.commons.logging.Log.allowFlawedContext";
-
-    /**
-     * The name (<code>org.apache.commons.logging.Log.allowFlawedDiscovery</code>) 
-     * of the system property which can be set true/false to
-     * determine system behaviour when a bad logging adapter class is
-     * encountered during logging discovery. When set to false, an
-     * exception will be thrown and the app will fail to start. When set
-     * to true, discovery will continue (though the user might end up
-     * with a different logging implementation than they expected).
-     * 
-     * Default behaviour: true (tolerates bad logging adapters)
-     * 
-     * See also method setAttribute.
-     */
-    public static final String ALLOW_FLAWED_DISCOVERY_PROPERTY = 
-        "org.apache.commons.logging.Log.allowFlawedDiscovery";
-
-    /**
-     * The name (<code>org.apache.commons.logging.Log.allowFlawedHierarchy</code>) 
-     * of the system property which can be set true/false to
-     * determine system behaviour when a logging adapter class is
-     * encountered which has bound to the wrong Log class implementation.
-     * When set to false, an exception will be thrown and the app will fail
-     * to start. When set to true, discovery will continue (though the user
-     * might end up with a different logging implementation than they expected).
-     * 
-     * Default behaviour: true (tolerates bad Log class hierarchy)
-     * 
-     * See also method setAttribute.
-     */
-    public static final String ALLOW_FLAWED_HIERARCHY_PROPERTY = 
-        "org.apache.commons.logging.Log.allowFlawedHierarchy";
-
-
-    /**
-     * The names of classes that will be tried (in order) as logging
-     * adapters. Each class is expected to implement the Log interface,
-     * and to throw NoClassDefFound or ExceptionInInitializerError when
-     * loaded if the underlying logging library is not available. Any 
-     * other error indicates that the underlying logging library is available
-     * but broken/unusable for some reason.
-     */
-    private static final String[] classesToDiscover = {
-            LOGGING_IMPL_LOG4J_LOGGER,
-            "org.apache.commons.logging.impl.Jdk14Logger",
-            "org.apache.commons.logging.impl.Jdk13LumberjackLogger",
-            "org.apache.commons.logging.impl.SimpleLog"
-    };
-    
-
-    // ----------------------------------------------------- Instance Variables
-
-    /**
-     * Determines whether logging classes should be loaded using the thread-context
-     * classloader, or via the classloader that loaded this LogFactoryImpl class.
-     */
-    private boolean useTCCL = true;
-
-    /**
-     * The string prefixed to every message output by the logDiagnostic method.
-     */
-    private String diagnosticPrefix;
-
-
-    /**
-     * Configuration attributes.
-     */
-    protected Hashtable attributes = new Hashtable();
-
-
-    /**
-     * The {@link org.apache.commons.logging.Log} instances that have
-     * already been created, keyed by logger name.
-     */
-    protected Hashtable instances = new Hashtable();
-
-
-    /**
-     * Name of the class implementing the Log interface.
-     */
-    private String logClassName;
-
-
-    /**
-     * The one-argument constructor of the
-     * {@link org.apache.commons.logging.Log}
-     * implementation class that will be used to create new instances.
-     * This value is initialized by <code>getLogConstructor()</code>,
-     * and then returned repeatedly.
-     */
-    protected Constructor logConstructor = null;
-
-
-    /**
-     * The signature of the Constructor to be used.
-     */
-    protected Class logConstructorSignature[] =
-    { java.lang.String.class };
-
-
-    /**
-     * The one-argument <code>setLogFactory</code> method of the selected
-     * {@link org.apache.commons.logging.Log} method, if it exists.
-     */
-    protected Method logMethod = null;
-
-
-    /**
-     * The signature of the <code>setLogFactory</code> method to be used.
-     */
-    protected Class logMethodSignature[] =
-    { LogFactory.class };
-
-    /**
-     * See getBaseClassLoader and initConfiguration.
-     */
-    private boolean allowFlawedContext;
-    
-    /**
-     * See handleFlawedDiscovery and initConfiguration.
-     */
-    private boolean allowFlawedDiscovery;
-    
-    /**
-     * See handleFlawedHierarchy and initConfiguration.
-     */
-    private boolean allowFlawedHierarchy;
-    
-    // --------------------------------------------------------- Public Methods
-
-
-    /**
-     * Return the configuration attribute with the specified name (if any),
-     * or <code>null</code> if there is no such attribute.
-     *
-     * @param name Name of the attribute to return
-     */
-    public Object getAttribute(String name) {
-
-        return (attributes.get(name));
-
-    }
-
-
-    /**
-     * Return an array containing the names of all currently defined
-     * configuration attributes.  If there are no such attributes, a zero
-     * length array is returned.
-     */
-    public String[] getAttributeNames() {
-
-        Vector names = new Vector();
-        Enumeration keys = attributes.keys();
-        while (keys.hasMoreElements()) {
-            names.addElement((String) keys.nextElement());
-        }
-        String results[] = new String[names.size()];
-        for (int i = 0; i < results.length; i++) {
-            results[i] = (String) names.elementAt(i);
-        }
-        return (results);
-
-    }
-
-
-    /**
-     * Convenience method to derive a name from the specified class and
-     * call <code>getInstance(String)</code> with it.
-     *
-     * @param clazz Class for which a suitable Log name will be derived
-     *
-     * @exception LogConfigurationException if a suitable <code>Log</code>
-     *  instance cannot be returned
-     */
-    public Log getInstance(Class clazz) throws LogConfigurationException {
-
-        return (getInstance(clazz.getName()));
-
-    }
-
-
-    /**
-     * <p>Construct (if necessary) and return a <code>Log</code> instance,
-     * using the factory's current set of configuration attributes.</p>
-     *
-     * <p><strong>NOTE</strong> - Depending upon the implementation of
-     * the <code>LogFactory</code> you are using, the <code>Log</code>
-     * instance you are returned may or may not be local to the current
-     * application, and may or may not be returned again on a subsequent
-     * call with the same name argument.</p>
-     *
-     * @param name Logical name of the <code>Log</code> instance to be
-     *  returned (the meaning of this name is only known to the underlying
-     *  logging implementation that is being wrapped)
-     *
-     * @exception LogConfigurationException if a suitable <code>Log</code>
-     *  instance cannot be returned
-     */
-    public Log getInstance(String name) throws LogConfigurationException {
-
-        Log instance = (Log) instances.get(name);
-        if (instance == null) {
-            instance = newInstance(name);
-            instances.put(name, instance);
-        }
-        return (instance);
-
-    }
-
-
-    /**
-     * Release any internal references to previously created
-     * {@link org.apache.commons.logging.Log}
-     * instances returned by this factory.  This is useful in environments
-     * like servlet containers, which implement application reloading by
-     * throwing away a ClassLoader.  Dangling references to objects in that
-     * class loader would prevent garbage collection.
-     */
-    public void release() {
-
-        logDiagnostic("Releasing all known loggers");
-        instances.clear();
-    }
-
-
-    /**
-     * Remove any configuration attribute associated with the specified name.
-     * If there is no such attribute, no action is taken.
-     *
-     * @param name Name of the attribute to remove
-     */
-    public void removeAttribute(String name) {
-
-        attributes.remove(name);
-
-    }
-
-
-    /**
-     * Set the configuration attribute with the specified name.  Calling
-     * this with a <code>null</code> value is equivalent to calling
-     * <code>removeAttribute(name)</code>.
-     * <p>
-     * This method can be used to set logging configuration programmatically
-     * rather than via system properties. It can also be used in code running
-     * within a container (such as a webapp) to configure behaviour on a
-     * per-component level instead of globally as system properties would do.
-     * To use this method instead of a system property, call
-     * <pre>
-     * LogFactory.getFactory().setAttribute(...)
-     * </pre>
-     * This must be done before the first Log object is created; configuration
-     * changes after that point will be ignored.
-     * <p>
-     * This method is also called automatically if LogFactory detects a
-     * commons-logging.properties file; every entry in that file is set
-     * automatically as an attribute here.
-     *
-     * @param name Name of the attribute to set
-     * @param value Value of the attribute to set, or <code>null</code>
-     *  to remove any setting for this attribute
-     */
-    public void setAttribute(String name, Object value) {
-
-        if (logConstructor != null) {
-            logDiagnostic("setAttribute: call too late; configuration already performed.");
-        }
-
-        if (value == null) {
-            attributes.remove(name);
-        } else {
-            attributes.put(name, value);
-        }
-        
-        if (name.equals(TCCL_KEY)) {
-            useTCCL = Boolean.valueOf(value.toString()).booleanValue();
-        }
-
-    }
-
-
-    // ------------------------------------------------------ 
-    // Static Methods
-    //
-    // These methods only defined as workarounds for a java 1.2 bug;
-    // theoretically none of these are needed.
-    // ------------------------------------------------------ 
-    
-    /**
-     * Gets the context classloader.
-     * This method is a workaround for a java 1.2 compiler bug.
-     * @since 1.1
-     */
-    protected static ClassLoader getContextClassLoader() throws LogConfigurationException {
-        return LogFactory.getContextClassLoader();
-    }
-
-    
-    /**
-     * Workaround for bug in Java1.2; in theory this method is not needed.
-     * See LogFactory.isDiagnosticsEnabled.
-     */
-    protected static boolean isDiagnosticsEnabled() {
-        return LogFactory.isDiagnosticsEnabled();
-    }
-
-    
-    /**
-     * Workaround for bug in Java1.2; in theory this method is not needed.
-     * See LogFactory.getClassLoader.
-     * @since 1.1
-     */
-    protected static ClassLoader getClassLoader(Class clazz) {
-        return LogFactory.getClassLoader(clazz);
-    }
-
-
-    // ------------------------------------------------------ Protected Methods
-
-    /**
-     * Calculate and cache a string that uniquely identifies this instance,
-     * including which classloader the object was loaded from.
-     * <p>
-     * This string will later be prefixed to each "internal logging" message
-     * emitted, so that users can clearly see any unexpected behaviour.
-     * <p>
-     * Note that this method does not detect whether internal logging is 
-     * enabled or not, nor where to output stuff if it is; that is all
-     * handled by the parent LogFactory class. This method just computes
-     * its own unique prefix for log messages.
-     */
-    private void initDiagnostics() {
-        // It would be nice to include an identifier of the context classloader
-        // that this LogFactoryImpl object is responsible for. However that
-        // isn't possible as that information isn't available. It is possible
-        // to figure this out by looking at the logging from LogFactory to
-        // see the context & impl ids from when this object was instantiated,
-        // in order to link the impl id output as this object's prefix back to
-        // the context it is intended to manage.
-        // Note that this prefix should be kept consistent with that 
-        // in LogFactory.
-        Class clazz = this.getClass();
-        ClassLoader classLoader = getClassLoader(clazz);
-        String classLoaderName;
-        try {
-            if (classLoader == null) {
-                classLoaderName = "BOOTLOADER";
-            } else {
-                classLoaderName = objectId(classLoader);
-            }
-        } catch(SecurityException e) {
-            classLoaderName = "UNKNOWN";
-        }
-        diagnosticPrefix = "[LogFactoryImpl@" + System.identityHashCode(this) + " from " + classLoaderName + "] ";
-    }
-
-    
-    /**
-     * Output a diagnostic message to a user-specified destination (if the
-     * user has enabled diagnostic logging).
-     * 
-     * @param msg diagnostic message
-     * @since 1.1
-     */
-    protected void logDiagnostic(String msg) {
-        if (isDiagnosticsEnabled()) {
-            logRawDiagnostic(diagnosticPrefix + msg);
-        }
-    }
-
-    /**
-     * Return the fully qualified Java classname of the {@link Log}
-     * implementation we will be using.  
-     * 
-     * @deprecated  Never invoked by this class; subclasses should not assume
-     *              it will be.
-     */
-    protected String getLogClassName() {
-
-        if (logClassName == null) {
-            discoverLogImplementation(getClass().getName());
-        }
-        
-        return logClassName;
-    }
-
-
-    /**
-     * <p>Return the <code>Constructor</code> that can be called to instantiate
-     * new {@link org.apache.commons.logging.Log} instances.</p>
-     *
-     * <p><strong>IMPLEMENTATION NOTE</strong> - Race conditions caused by
-     * calling this method from more than one thread are ignored, because
-     * the same <code>Constructor</code> instance will ultimately be derived
-     * in all circumstances.</p>
-     *
-     * @exception LogConfigurationException if a suitable constructor
-     *  cannot be returned   
-     * 
-     * @deprecated  Never invoked by this class; subclasses should not assume
-     *              it will be.
-     */
-    protected Constructor getLogConstructor()
-        throws LogConfigurationException {
-
-        // Return the previously identified Constructor (if any)
-        if (logConstructor == null) {
-            discoverLogImplementation(getClass().getName());
-        }
-
-        return logConstructor;
-    }
-    
-
-    /**
-     * Is <em>JDK 1.3 with Lumberjack</em> logging available?   
-     * 
-     * @deprecated  Never invoked by this class; subclasses should not assume
-     *              it will be.
-     */
-    protected boolean isJdk13LumberjackAvailable() {
-        return isLogLibraryAvailable(
-                "Jdk13Lumberjack",
-                "org.apache.commons.logging.impl.Jdk13LumberjackLogger");
-    }
-
-
-    /**
-     * <p>Return <code>true</code> if <em>JDK 1.4 or later</em> logging
-     * is available.  Also checks that the <code>Throwable</code> class
-     * supports <code>getStackTrace()</code>, which is required by
-     * Jdk14Logger.</p>  
-     * 
-     * @deprecated  Never invoked by this class; subclasses should not assume
-     *              it will be.
-     */
-    protected boolean isJdk14Available() {
-        return isLogLibraryAvailable(
-                "Jdk14",
-                "org.apache.commons.logging.impl.Jdk14Logger");
-    }
-
-
-    /**
-     * Is a <em>Log4J</em> implementation available? 
-     * 
-     * @deprecated  Never invoked by this class; subclasses should not assume
-     *              it will be.
-     */
-    protected boolean isLog4JAvailable() {
-        return isLogLibraryAvailable(
-                "Log4J",
-                LOGGING_IMPL_LOG4J_LOGGER);
-    }
-
-
-    /**
-     * Create and return a new {@link org.apache.commons.logging.Log}
-     * instance for the specified name.
-     *
-     * @param name Name of the new logger
-     *
-     * @exception LogConfigurationException if a new instance cannot
-     *  be created
-     */
-    protected Log newInstance(String name) throws LogConfigurationException {
-
-        Log instance = null;
-        try {
-            if (logConstructor == null) {
-                instance = discoverLogImplementation(name);
-            }
-            else {
-                Object params[] = { name };
-                instance = (Log) logConstructor.newInstance(params);
-            }
-            
-            if (logMethod != null) {
-                Object params[] = { this };
-                logMethod.invoke(instance, params);
-            }
-            
-            return (instance);
-            
-        } catch (LogConfigurationException lce) {
-            
-            // this type of exception means there was a problem in discovery
-            // and we've already output diagnostics about the issue, etc.; 
-            // just pass it on
-            throw (LogConfigurationException) lce;
-            
-        } catch (InvocationTargetException e) {
-            // A problem occurred invoking the Constructor or Method 
-            // previously discovered
-            Throwable c = e.getTargetException();
-            if (c != null) {
-                throw new LogConfigurationException(c);
-            } else {
-                throw new LogConfigurationException(e);
-            }
-        } catch (Throwable t) {
-            // A problem occurred invoking the Constructor or Method 
-            // previously discovered
-            throw new LogConfigurationException(t);
-        }
-    }
-    
-
-    //  ------------------------------------------------------ Private Methods
-    
-    /**
-     * Utility method to check whether a particular logging library is
-     * present and available for use. Note that this does <i>not</i>
-     * affect the future behaviour of this class.
-     */
-    private boolean isLogLibraryAvailable(String name, String classname) {
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("Checking for '" + name + "'.");
-        }
-        try {
-            Log log = createLogFromClass(
-                        classname, 
-                        this.getClass().getName(), // dummy category
-                        false);
-
-            if (log == null) {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic("Did not find '" + name + "'.");
-                }
-                return false;
-            } else {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic("Found '" + name + "'.");
-                }
-                return true;
-            }
-        } catch(LogConfigurationException e) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("Logging system '" + name + "' is available but not useable.");
-            }
-            return false;
-        }
-    }
-
-    /**
-     * Attempt to find an attribute (see method setAttribute) or a 
-     * system property with the provided name and return its value.
-     * <p>
-     * The attributes associated with this object are checked before
-     * system properties in case someone has explicitly called setAttribute,
-     * or a configuration property has been set in a commons-logging.properties
-     * file.
-     * 
-     * @return the value associated with the property, or null.
-     */
-    private String getConfigurationValue(String property) {
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("[ENV] Trying to get configuration for item " + property);
-        }
-
-        Object valueObj =  getAttribute(property);
-        if (valueObj != null) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("[ENV] Found LogFactory attribute [" + valueObj + "] for " + property);
-            }
-            return valueObj.toString();
-        }
-        
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("[ENV] No LogFactory attribute found for " + property);
-        }
-
-        try {
-            String value = System.getProperty(property);
-            if (value != null) {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic("[ENV] Found system property [" + value + "] for " + property);
-                }
-                return value;
-            }
-
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("[ENV] No system property found for property " + property);
-            }
-        } catch (SecurityException e) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("[ENV] Security prevented reading system property " + property);
-            }
-        }
-
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("[ENV] No configuration defined for item " + property);
-        }
-
-        return null;
-    }
-    
-    /**
-     * Get the setting for the user-configurable behaviour specified by key.
-     * If nothing has explicitly been set, then return dflt.  
-     */
-    private boolean getBooleanConfiguration(String key, boolean dflt) {
-        String val = getConfigurationValue(key);
-        if (val == null)
-            return dflt;
-        return Boolean.valueOf(val).booleanValue();
-    }
-
-    /**
-     * Initialize a number of variables that control the behaviour of this
-     * class and that can be tweaked by the user. This is done when the first
-     * logger is created, not in the constructor of this class, because we
-     * need to give the user a chance to call method setAttribute in order to
-     * configure this object.
-     */
-    private void initConfiguration() {
-        allowFlawedContext = getBooleanConfiguration(ALLOW_FLAWED_CONTEXT_PROPERTY, true);
-        allowFlawedDiscovery = getBooleanConfiguration(ALLOW_FLAWED_DISCOVERY_PROPERTY, true);
-        allowFlawedHierarchy = getBooleanConfiguration(ALLOW_FLAWED_HIERARCHY_PROPERTY, true);
-    }
-  
-
-    /**
-     * Attempts to create a Log instance for the given category name.
-     * Follows the discovery process described in the class javadoc.
-     * 
-     * @param logCategory the name of the log category
-     * 
-     * @throws LogConfigurationException if an error in discovery occurs, 
-     * or if no adapter at all can be instantiated
-     */
-    private Log discoverLogImplementation(String logCategory)
-    throws LogConfigurationException
-    {
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("Discovering a Log implementation...");
-        }
-        
-        initConfiguration();
-        
-        Log result = null;
-        
-        // See if the user specified the Log implementation to use
-        String specifiedLogClassName = findUserSpecifiedLogClassName();
-
-        if (specifiedLogClassName != null) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("Attempting to load user-specified log class '" + 
-                    specifiedLogClassName + "'...");
-            }
-            
-            result = createLogFromClass(specifiedLogClassName,
-                                        logCategory,
-                                        true);
-            if (result == null) {
-                StringBuffer messageBuffer =  new StringBuffer("User-specified log class '");
-                messageBuffer.append(specifiedLogClassName);
-                messageBuffer.append("' cannot be found or is not useable.");
-                
-                // Mistyping or misspelling names is a common fault.
-                // Construct a good error message, if we can
-                if (specifiedLogClassName != null) {
-                    informUponSimilarName(messageBuffer, specifiedLogClassName, LOGGING_IMPL_LOG4J_LOGGER);
-                    informUponSimilarName(messageBuffer, specifiedLogClassName, LOGGING_IMPL_JDK14_LOGGER);
-                    informUponSimilarName(messageBuffer, specifiedLogClassName, LOGGING_IMPL_LUMBERJACK_LOGGER);
-                    informUponSimilarName(messageBuffer, specifiedLogClassName, LOGGING_IMPL_SIMPLE_LOGGER);
-                }
-                throw new LogConfigurationException(messageBuffer.toString());
-            }
-            
-            return result;
-        }
-        
-        // No user specified log; try to discover what's on the classpath
-        //
-        // Note that we deliberately loop here over classesToDiscover and
-        // expect method createLogFromClass to loop over the possible source
-        // classloaders. The effect is:
-        //   for each discoverable log adapter
-        //      for each possible classloader
-        //          see if it works
-        //
-        // It appears reasonable at first glance to do the opposite: 
-        //   for each possible classloader
-        //     for each discoverable log adapter
-        //        see if it works
-        //
-        // The latter certainly has advantages for user-installable logging
-        // libraries such as log4j; in a webapp for example this code should
-        // first check whether the user has provided any of the possible
-        // logging libraries before looking in the parent classloader. 
-        // Unfortunately, however, Jdk14Logger will always work in jvm>=1.4,
-        // and SimpleLog will always work in any JVM. So the loop would never
-        // ever look for logging libraries in the parent classpath. Yet many
-        // users would expect that putting log4j there would cause it to be
-        // detected (and this is the historical JCL behaviour). So we go with
-        // the first approach. A user that has bundled a specific logging lib
-        // in a webapp should use a commons-logging.properties file or a
-        // service file in META-INF to force use of that logging lib anyway,
-        // rather than relying on discovery.
-        
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic(
-                "No user-specified Log implementation; performing discovery" +
-            	" using the standard supported logging implementations...");
-        }
-        for(int i=0; (i<classesToDiscover.length) && (result == null); ++i) {
-            result = createLogFromClass(classesToDiscover[i], logCategory, true);
-        }
-        
-        if (result == null) {
-            throw new LogConfigurationException
-                        ("No suitable Log implementation");
-        }
-        
-        return result;        
-    }
-
-
-    /**
-     * Appends message if the given name is similar to the candidate.
-     * @param messageBuffer <code>StringBuffer</code> the message should be appended to, 
-     * not null
-     * @param name the (trimmed) name to be test against the candidate, not null
-     * @param candidate the candidate name (not null)
-     */
-    private void informUponSimilarName(final StringBuffer messageBuffer, final String name, 
-            final String candidate) {
-        if (name.equals(candidate)) {
-            // Don't suggest a name that is exactly the same as the one the
-            // user tried...
-            return;
-        }
-
-        // If the user provides a name that is in the right package, and gets
-        // the first 5 characters of the adapter class right (ignoring case),
-        // then suggest the candidate adapter class name.
-        if (name.regionMatches(true, 0, candidate, 0, PKG_LEN + 5)) {
-            messageBuffer.append(" Did you mean '");
-            messageBuffer.append(candidate);
-            messageBuffer.append("'?");
-        }
-    }
-    
-    
-    /**
-     * Checks system properties and the attribute map for 
-     * a Log implementation specified by the user under the 
-     * property names {@link #LOG_PROPERTY} or {@link #LOG_PROPERTY_OLD}.
-     * 
-     * @return classname specified by the user, or <code>null</code>
-     */
-    private String findUserSpecifiedLogClassName()
-    {
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("Trying to get log class from attribute '" + LOG_PROPERTY + "'");
-        }
-        String specifiedClass = (String) getAttribute(LOG_PROPERTY);
-
-        if (specifiedClass == null) { // @deprecated
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("Trying to get log class from attribute '" + 
-                              LOG_PROPERTY_OLD + "'");
-            }
-            specifiedClass = (String) getAttribute(LOG_PROPERTY_OLD);
-        }
-
-        if (specifiedClass == null) {
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("Trying to get log class from system property '" + 
-                          LOG_PROPERTY + "'");
-            }
-            try {
-                specifiedClass = System.getProperty(LOG_PROPERTY);
-            } catch (SecurityException e) {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic("No access allowed to system property '" + 
-                        LOG_PROPERTY + "' - " + e.getMessage());
-                }
-            }
-        }
-
-        if (specifiedClass == null) { // @deprecated
-            if (isDiagnosticsEnabled()) {
-                logDiagnostic("Trying to get log class from system property '" + 
-                          LOG_PROPERTY_OLD + "'");
-            }
-            try {
-                specifiedClass = System.getProperty(LOG_PROPERTY_OLD);
-            } catch (SecurityException e) {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic("No access allowed to system property '" + 
-                        LOG_PROPERTY_OLD + "' - " + e.getMessage());
-                }
-            }
-        }
-        
-        // Remove any whitespace; it's never valid in a classname so its
-        // presence just means a user mistake. As we know what they meant,
-        // we may as well strip the spaces.
-        if (specifiedClass != null) {
-            specifiedClass = specifiedClass.trim();
-        }
-
-        return specifiedClass;
-    }
-
-    
-    /**
-     * Attempts to load the given class, find a suitable constructor,
-     * and instantiate an instance of Log.
-     * 
-     * @param logAdapterClassName classname of the Log implementation
-     * 
-     * @param logCategory  argument to pass to the Log implementation's
-     * constructor
-     * 
-     * @param affectState  <code>true</code> if this object's state should
-     * be affected by this method call, <code>false</code> otherwise.
-     * 
-     * @return  an instance of the given class, or null if the logging
-     * library associated with the specified adapter is not available.
-     *                          
-     * @throws LogConfigurationException if there was a serious error with
-     * configuration and the handleFlawedDiscovery method decided this
-     * problem was fatal.
-     */                                  
-    private Log createLogFromClass(String logAdapterClassName,
-                                   String logCategory,
-                                   boolean affectState) 
-            throws LogConfigurationException {       
-
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("Attempting to instantiate '" + logAdapterClassName + "'");
-        }
-        
-        Object[] params = { logCategory };
-        Log logAdapter = null;
-        Constructor constructor = null;
-        
-        Class logAdapterClass = null;
-        ClassLoader currentCL = getBaseClassLoader();
-        
-        for(;;) {
-            // Loop through the classloader hierarchy trying to find
-            // a viable classloader.
-            logDiagnostic(
-                    "Trying to load '"
-                    + logAdapterClassName
-                    + "' from classloader "
-                    + objectId(currentCL));
-            try {
-                if (isDiagnosticsEnabled()) {
-                    // Show the location of the first occurrence of the .class file
-                    // in the classpath. This is the location that ClassLoader.loadClass
-                    // will load the class from -- unless the classloader is doing
-                    // something weird. 
-                    URL url;
-                    String resourceName = logAdapterClassName.replace('.', '/') + ".class";
-                    if (currentCL != null) {
-                        url = currentCL.getResource(resourceName );
-                    } else {
-                        url = ClassLoader.getSystemResource(resourceName + ".class");
-                    }
-
-                    if (url == null) {
-                        logDiagnostic("Class '" + logAdapterClassName + "' [" + resourceName + "] cannot be found.");
-                    } else {
-                        logDiagnostic("Class '" + logAdapterClassName + "' was found at '" + url + "'");
-                    }
-                }
-
-                Class c = null;
-                try {
-                    c = Class.forName(logAdapterClassName, true, currentCL);
-                } catch (ClassNotFoundException originalClassNotFoundException) {
-                    // The current classloader was unable to find the log adapter 
-                    // in this or any ancestor classloader. There's no point in
-                    // trying higher up in the hierarchy in this case..
-                    String msg = "" + originalClassNotFoundException.getMessage();
-                    logDiagnostic(
-                        "The log adapter '"
-                        + logAdapterClassName
-                        + "' is not available via classloader " 
-                        + objectId(currentCL)
-                        + ": "
-                        + msg.trim());
-                    try {
-                        // Try the class classloader.
-                        // This may work in cases where the TCCL
-                        // does not contain the code executed or JCL.
-                        // This behaviour indicates that the application 
-                        // classloading strategy is not consistent with the
-                        // Java 1.2 classloading guidelines but JCL can
-                        // and so should handle this case.
-                        c = Class.forName(logAdapterClassName);
-                    } catch (ClassNotFoundException secondaryClassNotFoundException) {
-                        // no point continuing: this adapter isn't available
-                        msg = "" + secondaryClassNotFoundException.getMessage();
-                        logDiagnostic(
-                            "The log adapter '"
-                            + logAdapterClassName
-                            + "' is not available via the LogFactoryImpl class classloader: "
-                            + msg.trim());
-                        break;
-                    }
-                }
-                
-                constructor = c.getConstructor(logConstructorSignature);
-                Object o = constructor.newInstance(params);
-
-                // Note that we do this test after trying to create an instance
-                // [rather than testing Log.class.isAssignableFrom(c)] so that
-                // we don't complain about Log hierarchy problems when the
-                // adapter couldn't be instantiated anyway.
-                if (o instanceof Log) {
-                    logAdapterClass = c;
-                    logAdapter = (Log) o;
-                    break;
-                }
-                
-                // Oops, we have a potential problem here. An adapter class
-                // has been found and its underlying lib is present too, but
-                // there are multiple Log interface classes available making it
-                // impossible to cast to the type the caller wanted. We 
-                // certainly can't use this logger, but we need to know whether
-                // to keep on discovering or terminate now.
-                //
-                // The handleFlawedHierarchy method will throw 
-                // LogConfigurationException if it regards this problem as
-                // fatal, and just return if not.
-                handleFlawedHierarchy(currentCL, c);
-            } catch (NoClassDefFoundError e) {
-                // We were able to load the adapter but it had references to
-                // other classes that could not be found. This simply means that
-                // the underlying logger library is not present in this or any
-                // ancestor classloader. There's no point in trying higher up
-                // in the hierarchy in this case..
-                String msg = "" + e.getMessage();
-                logDiagnostic(
-                    "The log adapter '"
-                    + logAdapterClassName
-                    + "' is missing dependencies when loaded via classloader "
-                    + objectId(currentCL)
-                    + ": "
-                    + msg.trim());
-                break;
-            } catch (ExceptionInInitializerError e) {
-                // A static initializer block or the initializer code associated 
-                // with a static variable on the log adapter class has thrown
-                // an exception.
-                //
-                // We treat this as meaning the adapter's underlying logging
-                // library could not be found.
-                String msg = "" + e.getMessage();
-                logDiagnostic(
-                    "The log adapter '"
-                    + logAdapterClassName
-                    + "' is unable to initialize itself when loaded via classloader "
-                    + objectId(currentCL)
-                    + ": "
-                    + msg.trim());
-                break;
-            } catch(LogConfigurationException e) {
-                // call to handleFlawedHierarchy above must have thrown
-                // a LogConfigurationException, so just throw it on                
-                throw e;
-            } catch(Throwable t) {
-                // handleFlawedDiscovery will determine whether this is a fatal
-                // problem or not. If it is fatal, then a LogConfigurationException
-                // will be thrown.
-                handleFlawedDiscovery(logAdapterClassName, currentCL, t);
-            }
-                        
-            if (currentCL == null) {
-                break;
-            }
-            
-            // try the parent classloader
-            currentCL = currentCL.getParent();
-        }
-
-        if ((logAdapter != null) && affectState) {
-            // We've succeeded, so set instance fields
-            this.logClassName   = logAdapterClassName;
-            this.logConstructor = constructor;
-            
-            // Identify the <code>setLogFactory</code> method (if there is one)
-            try {
-                this.logMethod = logAdapterClass.getMethod("setLogFactory",
-                                               logMethodSignature);
-                logDiagnostic("Found method setLogFactory(LogFactory) in '" 
-                              + logAdapterClassName + "'");
-            } catch (Throwable t) {
-                this.logMethod = null;
-                logDiagnostic(
-                    "[INFO] '" + logAdapterClassName 
-                    + "' from classloader " + objectId(currentCL)
-                    + " does not declare optional method "
-                    + "setLogFactory(LogFactory)");
-            }
-            
-            logDiagnostic(
-                "Log adapter '" + logAdapterClassName 
-                + "' from classloader " + objectId(logAdapterClass.getClassLoader())
-                + " has been selected for use.");
-        }
-        
-        return logAdapter;
-    }
-    
-    
-    /**
-     * Return the classloader from which we should try to load the logging
-     * adapter classes.
-     * <p>
-     * This method usually returns the context classloader. However if it
-     * is discovered that the classloader which loaded this class is a child
-     * of the context classloader <i>and</i> the allowFlawedContext option
-     * has been set then the classloader which loaded this class is returned
-     * instead.
-     * <p>
-     * The only time when the classloader which loaded this class is a
-     * descendant (rather than the same as or an ancestor of the context
-     * classloader) is when an app has created custom classloaders but
-     * failed to correctly set the context classloader. This is a bug in
-     * the calling application; however we provide the option for JCL to
-     * simply generate a warning rather than fail outright.
-     * 
-     */
-    private ClassLoader getBaseClassLoader() throws LogConfigurationException {
-        ClassLoader thisClassLoader = getClassLoader(LogFactoryImpl.class);
-        
-        if (useTCCL == false) {
-            return thisClassLoader;
-        }
-
-        ClassLoader contextClassLoader = getContextClassLoader();
-
-        ClassLoader baseClassLoader = getLowestClassLoader(
-                contextClassLoader, thisClassLoader);
-        
-        if (baseClassLoader == null) {
-           // The two classloaders are not part of a parent child relationship.
-           // In some classloading setups (e.g. JBoss with its 
-           // UnifiedLoaderRepository) this can still work, so if user hasn't
-           // forbidden it, just return the contextClassLoader.
-           if (allowFlawedContext) {   
-              if (isDiagnosticsEnabled()) {
-                   logDiagnostic(
-                           "[WARNING] the context classloader is not part of a"
-                           + " parent-child relationship with the classloader that"
-                           + " loaded LogFactoryImpl.");
-              }
-              // If contextClassLoader were null, getLowestClassLoader() would
-              // have returned thisClassLoader.  The fact we are here means
-              // contextClassLoader is not null, so we can just return it.
-              return contextClassLoader;
-           }
-           else {
-            throw new LogConfigurationException(
-                "Bad classloader hierarchy; LogFactoryImpl was loaded via"
-                + " a classloader that is not related to the current context"
-                + " classloader.");
-           }           
-        }
-
-        if (baseClassLoader != contextClassLoader) {
-            // We really should just use the contextClassLoader as the starting
-            // point for scanning for log adapter classes. However it is expected
-            // that there are a number of broken systems out there which create
-            // custom classloaders but fail to set the context classloader so
-            // we handle those flawed systems anyway.
-            if (allowFlawedContext) {
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic(
-                            "Warning: the context classloader is an ancestor of the"
-                            + " classloader that loaded LogFactoryImpl; it should be"
-                            + " the same or a descendant. The application using"
-                            + " commons-logging should ensure the context classloader"
-                            + " is used correctly.");
-                }
-            } else {
-                throw new LogConfigurationException(
-                        "Bad classloader hierarchy; LogFactoryImpl was loaded via"
-                        + " a classloader that is not related to the current context"
-                        + " classloader."); 
-            }
-        }
-        
-        return baseClassLoader;
-    }
-
-    /**
-     * Given two related classloaders, return the one which is a child of
-     * the other.
-     * <p>
-     * @param c1 is a classloader (including the null classloader)
-     * @param c2 is a classloader (including the null classloader)
-     * 
-     * @return c1 if it has c2 as an ancestor, c2 if it has c1 as an ancestor,
-     * and null if neither is an ancestor of the other.
-     */
-    private ClassLoader getLowestClassLoader(ClassLoader c1, ClassLoader c2) {
-        // TODO: use AccessController when dealing with classloaders here
-        
-        if (c1 == null)
-            return c2;
-        
-        if (c2 == null)
-            return c1;
-        
-        ClassLoader current;
-
-        // scan c1's ancestors to find c2
-        current = c1;
-        while (current != null) {
-            if (current == c2)
-                return c1;
-            current = current.getParent();
-        }
-       
-        // scan c2's ancestors to find c1
-        current = c2;
-        while (current != null) {
-            if (current == c1)
-                return c2;
-            current = current.getParent();
-        }
-
-        return null;
-    }
-
-    /**
-     * Generates an internal diagnostic logging of the discovery failure and 
-     * then throws a <code>LogConfigurationException</code> that wraps 
-     * the passed <code>Throwable</code>.
-     * 
-     * @param logAdapterClassName is the class name of the Log implementation
-     * that could not be instantiated. Cannot be <code>null</code>.
-     * 
-     * @param classLoader is the classloader that we were trying to load the
-     * logAdapterClassName from when the exception occurred.
-     * 
-     * @param discoveryFlaw is the Throwable created by the classloader
-     * 
-     * @throws LogConfigurationException    ALWAYS
-     */
-    private void handleFlawedDiscovery(String logAdapterClassName,
-                                       ClassLoader classLoader,
-                                       Throwable discoveryFlaw) {
-        
-        if (isDiagnosticsEnabled()) {
-            logDiagnostic("Could not instantiate Log '"
-                      + logAdapterClassName + "' -- "
-                      + discoveryFlaw.getClass().getName() + ": "
-                      + discoveryFlaw.getLocalizedMessage());       
-        }
-        
-        if (!allowFlawedDiscovery) {
-            throw new LogConfigurationException(discoveryFlaw);
-        }
-    }
-
-    
-    /**
-     * Report a problem loading the log adapter, then either return 
-     * (if the situation is considered recoverable) or throw a
-     * LogConfigurationException.
-     *  <p>
-     * There are two possible reasons why we successfully loaded the 
-     * specified log adapter class then failed to cast it to a Log object:
-     * <ol>
-     * <li>the specific class just doesn't implement the Log interface 
-     *     (user screwed up), or
-     * <li> the specified class has bound to a Log class loaded by some other
-     *      classloader; Log@classloaderX cannot be cast to Log@classloaderY.
-     * </ol>
-     * <p>
-     * Here we try to figure out which case has occurred so we can give the
-     * user some reasonable feedback.
-     * 
-     * @param badClassLoader is the classloader we loaded the problem class from,
-     * ie it is equivalent to badClass.getClassLoader().
-     * 
-     * @param badClass is a Class object with the desired name, but which 
-     * does not implement Log correctly.
-     * 
-     * @throws LogConfigurationException when the situation
-     * should not be recovered from.
-     */
-    private void handleFlawedHierarchy(ClassLoader badClassLoader, Class badClass)
-    throws LogConfigurationException {
-
-        boolean implementsLog = false;
-        String logInterfaceName = Log.class.getName();
-        Class interfaces[] = badClass.getInterfaces();
-        for (int i = 0; i < interfaces.length; i++) {
-            if (logInterfaceName.equals(interfaces[i].getName())) {
-                implementsLog = true;
-                break;
-            }
-        }
-        
-        if (implementsLog) {
-            // the class does implement an interface called Log, but
-            // it is in the wrong classloader
-            if (isDiagnosticsEnabled()) {
-                try {
-                    ClassLoader logInterfaceClassLoader = getClassLoader(Log.class);
-                    logDiagnostic(
-                        "Class '" + badClass.getName()
-                        + "' was found in classloader " 
-                        + objectId(badClassLoader)
-                        + ". It is bound to a Log interface which is not"
-                        + " the one loaded from classloader "
-                        + objectId(logInterfaceClassLoader));
-                } catch (Throwable t) {
-                    logDiagnostic(
-                        "Error while trying to output diagnostics about"
-                        + " bad class '" + badClass + "'");
-                }
-            }
-            
-            if (!allowFlawedHierarchy) {
-                StringBuffer msg = new StringBuffer();
-                msg.append("Terminating logging for this context ");
-                msg.append("due to bad log hierarchy. ");
-                msg.append("You have more than one version of '");
-                msg.append(Log.class.getName());
-                msg.append("' visible.");
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic(msg.toString());
-                } 
-                throw new LogConfigurationException(msg.toString());
-            }
-        
-            if (isDiagnosticsEnabled()) {
-                StringBuffer msg = new StringBuffer();
-                msg.append("Warning: bad log hierarchy. ");
-                msg.append("You have more than one version of '");
-                msg.append(Log.class.getName());
-                msg.append("' visible.");
-                logDiagnostic(msg.toString());
-            }
-        } else {
-            // this is just a bad adapter class
-            if (!allowFlawedDiscovery) {
-                StringBuffer msg = new StringBuffer();
-                msg.append("Terminating logging for this context. ");
-                msg.append("Log class '");
-                msg.append(badClass.getName());
-                msg.append("' does not implement the Log interface.");
-                if (isDiagnosticsEnabled()) {
-                    logDiagnostic(msg.toString());
-                }
-                
-                throw new LogConfigurationException(msg.toString());
-            }
-
-            if (isDiagnosticsEnabled()) {
-                StringBuffer msg = new StringBuffer();
-                msg.append("[WARNING] Log class '");
-                msg.append(badClass.getName());
-                msg.append("' does not implement the Log interface.");
-                logDiagnostic(msg.toString());
-            }
-        }
-    }
-}
diff --git a/src/org/apache/commons/logging/impl/NoOpLog.java b/src/org/apache/commons/logging/impl/NoOpLog.java
deleted file mode 100644
index b698813..0000000
--- a/src/org/apache/commons/logging/impl/NoOpLog.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-
-package org.apache.commons.logging.impl;
-
-
-import java.io.Serializable;
-import org.apache.commons.logging.Log;
-
-
-/**
- * <p>Trivial implementation of Log that throws away all messages.  No
- * configurable system properties are supported.</p>
- *
- * @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
- * @author Rod Waldhoff
- * @version $Id: NoOpLog.java 155426 2005-02-26 13:10:49Z dirkv $
- */
-public class NoOpLog implements Log, Serializable {
-
-    /** Convenience constructor */
-    public NoOpLog() { }
-    /** Base constructor */
-    public NoOpLog(String name) { }
-    /** Do nothing */
-    public void trace(Object message) { }
-    /** Do nothing */
-    public void trace(Object message, Throwable t) { }
-    /** Do nothing */
-    public void debug(Object message) { }
-    /** Do nothing */
-    public void debug(Object message, Throwable t) { }
-    /** Do nothing */
-    public void info(Object message) { }
-    /** Do nothing */
-    public void info(Object message, Throwable t) { }
-    /** Do nothing */
-    public void warn(Object message) { }
-    /** Do nothing */
-    public void warn(Object message, Throwable t) { }
-    /** Do nothing */
-    public void error(Object message) { }
-    /** Do nothing */
-    public void error(Object message, Throwable t) { }
-    /** Do nothing */
-    public void fatal(Object message) { }
-    /** Do nothing */
-    public void fatal(Object message, Throwable t) { }
-
-    /**
-     * Debug is never enabled.
-     *
-     * @return false
-     */
-    public final boolean isDebugEnabled() { return false; }
-
-    /**
-     * Error is never enabled.
-     *
-     * @return false
-     */
-    public final boolean isErrorEnabled() { return false; }
-
-    /**
-     * Fatal is never enabled.
-     *
-     * @return false
-     */
-    public final boolean isFatalEnabled() { return false; }
-
-    /**
-     * Info is never enabled.
-     *
-     * @return false
-     */
-    public final boolean isInfoEnabled() { return false; }
-
-    /**
-     * Trace is never enabled.
-     *
-     * @return false
-     */
-    public final boolean isTraceEnabled() { return false; }
-
-    /**
-     * Warn is never enabled.
-     *
-     * @return false
-     */
-    public final boolean isWarnEnabled() { return false; }
-
-}
diff --git a/src/org/apache/commons/logging/impl/SimpleLog.java b/src/org/apache/commons/logging/impl/SimpleLog.java
deleted file mode 100644
index 6b643d3..0000000
--- a/src/org/apache/commons/logging/impl/SimpleLog.java
+++ /dev/null
@@ -1,709 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-
-package org.apache.commons.logging.impl;
-
-import java.io.InputStream;
-import java.io.Serializable;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogConfigurationException;
-
-/**
- * <p>Simple implementation of Log that sends all enabled log messages,
- * for all defined loggers, to System.err.  The following system properties
- * are supported to configure the behavior of this logger:</p>
- * <ul>
- * <li><code>org.apache.commons.logging.simplelog.defaultlog</code> -
- *     Default logging detail level for all instances of SimpleLog.
- *     Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
- *     If not specified, defaults to "info". </li>
- * <li><code>org.apache.commons.logging.simplelog.log.xxxxx</code> -
- *     Logging detail level for a SimpleLog instance named "xxxxx".
- *     Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
- *     If not specified, the default logging detail level is used.</li>
- * <li><code>org.apache.commons.logging.simplelog.showlogname</code> -
- *     Set to <code>true</code> if you want the Log instance name to be
- *     included in output messages. Defaults to <code>false</code>.</li>
- * <li><code>org.apache.commons.logging.simplelog.showShortLogname</code> -
- *     Set to <code>true</code> if you want the last component of the name to be
- *     included in output messages. Defaults to <code>true</code>.</li>
- * <li><code>org.apache.commons.logging.simplelog.showdatetime</code> -
- *     Set to <code>true</code> if you want the current date and time
- *     to be included in output messages. Default is <code>false</code>.</li>
- * <li><code>org.apache.commons.logging.simplelog.dateTimeFormat</code> -
- *     The date and time format to be used in the output messages.
- *     The pattern describing the date and time format is the same that is
- *     used in <code>java.text.SimpleDateFormat</code>. If the format is not
- *     specified or is invalid, the default format is used.
- *     The default format is <code>yyyy/MM/dd HH:mm:ss:SSS zzz</code>.</li>
- * </ul>
- *
- * <p>In addition to looking for system properties with the names specified
- * above, this implementation also checks for a class loader resource named
- * <code>"simplelog.properties"</code>, and includes any matching definitions
- * from this resource (if it exists).</p>
- *
- * @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
- * @author Rod Waldhoff
- * @author Robert Burrell Donkin
- *
- * @version $Id: SimpleLog.java 399221 2006-05-03 09:20:24Z dennisl $
- */
-public class SimpleLog implements Log, Serializable {
-
-
-    // ------------------------------------------------------- Class Attributes
-
-    /** All system properties used by <code>SimpleLog</code> start with this */
-    static protected final String systemPrefix =
-        "org.apache.commons.logging.simplelog.";
-
-    /** Properties loaded from simplelog.properties */
-    static protected final Properties simpleLogProps = new Properties();
-
-    /** The default format to use when formating dates */
-    static protected final String DEFAULT_DATE_TIME_FORMAT =
-        "yyyy/MM/dd HH:mm:ss:SSS zzz";
-
-    /** Include the instance name in the log message? */
-    static protected boolean showLogName = false;
-    /** Include the short name ( last component ) of the logger in the log
-     *  message. Defaults to true - otherwise we'll be lost in a flood of
-     *  messages without knowing who sends them.
-     */
-    static protected boolean showShortName = true;
-    /** Include the current time in the log message */
-    static protected boolean showDateTime = false;
-    /** The date and time format to use in the log message */
-    static protected String dateTimeFormat = DEFAULT_DATE_TIME_FORMAT;
-    /** Used to format times */
-    static protected DateFormat dateFormatter = null;
-
-    // ---------------------------------------------------- Log Level Constants
-
-
-    /** "Trace" level logging. */
-    public static final int LOG_LEVEL_TRACE  = 1;
-    /** "Debug" level logging. */
-    public static final int LOG_LEVEL_DEBUG  = 2;
-    /** "Info" level logging. */
-    public static final int LOG_LEVEL_INFO   = 3;
-    /** "Warn" level logging. */
-    public static final int LOG_LEVEL_WARN   = 4;
-    /** "Error" level logging. */
-    public static final int LOG_LEVEL_ERROR  = 5;
-    /** "Fatal" level logging. */
-    public static final int LOG_LEVEL_FATAL  = 6;
-
-    /** Enable all logging levels */
-    public static final int LOG_LEVEL_ALL    = (LOG_LEVEL_TRACE - 1);
-
-    /** Enable no logging levels */
-    public static final int LOG_LEVEL_OFF    = (LOG_LEVEL_FATAL + 1);
-
-    // ------------------------------------------------------------ Initializer
-
-    private static String getStringProperty(String name) {
-        String prop = null;
-	try {
-	    prop = System.getProperty(name);
-	} catch (SecurityException e) {
-	    ; // Ignore
-	}
-        return (prop == null) ? simpleLogProps.getProperty(name) : prop;
-    }
-
-    private static String getStringProperty(String name, String dephault) {
-        String prop = getStringProperty(name);
-        return (prop == null) ? dephault : prop;
-    }
-
-    private static boolean getBooleanProperty(String name, boolean dephault) {
-        String prop = getStringProperty(name);
-        return (prop == null) ? dephault : "true".equalsIgnoreCase(prop);
-    }
-
-    // Initialize class attributes.
-    // Load properties file, if found.
-    // Override with system properties.
-    static {
-        // Add props from the resource simplelog.properties
-        InputStream in = getResourceAsStream("simplelog.properties");
-        if(null != in) {
-            try {
-                simpleLogProps.load(in);
-                in.close();
-            } catch(java.io.IOException e) {
-                // ignored
-            }
-        }
-
-        showLogName = getBooleanProperty( systemPrefix + "showlogname", showLogName);
-        showShortName = getBooleanProperty( systemPrefix + "showShortLogname", showShortName);
-        showDateTime = getBooleanProperty( systemPrefix + "showdatetime", showDateTime);
-
-        if(showDateTime) {
-            dateTimeFormat = getStringProperty(systemPrefix + "dateTimeFormat",
-                                               dateTimeFormat);
-            try {
-                dateFormatter = new SimpleDateFormat(dateTimeFormat);
-            } catch(IllegalArgumentException e) {
-                // If the format pattern is invalid - use the default format
-                dateTimeFormat = DEFAULT_DATE_TIME_FORMAT;
-                dateFormatter = new SimpleDateFormat(dateTimeFormat);
-            }
-        }
-    }
-
-
-    // ------------------------------------------------------------- Attributes
-
-    /** The name of this simple log instance */
-    protected String logName = null;
-    /** The current log level */
-    protected int currentLogLevel;
-    /** The short name of this simple log instance */
-    private String shortLogName = null;
-
-
-    // ------------------------------------------------------------ Constructor
-
-    /**
-     * Construct a simple log with given name.
-     *
-     * @param name log name
-     */
-    public SimpleLog(String name) {
-
-        logName = name;
-
-        // Set initial log level
-        // Used to be: set default log level to ERROR
-        // IMHO it should be lower, but at least info ( costin ).
-        setLevel(SimpleLog.LOG_LEVEL_INFO);
-
-        // Set log level from properties
-        String lvl = getStringProperty(systemPrefix + "log." + logName);
-        int i = String.valueOf(name).lastIndexOf(".");
-        while(null == lvl && i > -1) {
-            name = name.substring(0,i);
-            lvl = getStringProperty(systemPrefix + "log." + name);
-            i = String.valueOf(name).lastIndexOf(".");
-        }
-
-        if(null == lvl) {
-            lvl =  getStringProperty(systemPrefix + "defaultlog");
-        }
-
-        if("all".equalsIgnoreCase(lvl)) {
-            setLevel(SimpleLog.LOG_LEVEL_ALL);
-        } else if("trace".equalsIgnoreCase(lvl)) {
-            setLevel(SimpleLog.LOG_LEVEL_TRACE);
-        } else if("debug".equalsIgnoreCase(lvl)) {
-            setLevel(SimpleLog.LOG_LEVEL_DEBUG);
-        } else if("info".equalsIgnoreCase(lvl)) {
-            setLevel(SimpleLog.LOG_LEVEL_INFO);
-        } else if("warn".equalsIgnoreCase(lvl)) {
-            setLevel(SimpleLog.LOG_LEVEL_WARN);
-        } else if("error".equalsIgnoreCase(lvl)) {
-            setLevel(SimpleLog.LOG_LEVEL_ERROR);
-        } else if("fatal".equalsIgnoreCase(lvl)) {
-            setLevel(SimpleLog.LOG_LEVEL_FATAL);
-        } else if("off".equalsIgnoreCase(lvl)) {
-            setLevel(SimpleLog.LOG_LEVEL_OFF);
-        }
-
-    }
-
-
-    // -------------------------------------------------------- Properties
-
-    /**
-     * <p> Set logging level. </p>
-     *
-     * @param currentLogLevel new logging level
-     */
-    public void setLevel(int currentLogLevel) {
-
-        this.currentLogLevel = currentLogLevel;
-
-    }
-
-
-    /**
-     * <p> Get logging level. </p>
-     */
-    public int getLevel() {
-
-        return currentLogLevel;
-    }
-
-
-    // -------------------------------------------------------- Logging Methods
-
-
-    /**
-     * <p> Do the actual logging.
-     * This method assembles the message
-     * and then calls <code>write()</code> to cause it to be written.</p>
-     *
-     * @param type One of the LOG_LEVEL_XXX constants defining the log level
-     * @param message The message itself (typically a String)
-     * @param t The exception whose stack trace should be logged
-     */
-    protected void log(int type, Object message, Throwable t) {
-        // Use a string buffer for better performance
-        StringBuffer buf = new StringBuffer();
-
-        // Append date-time if so configured
-        if(showDateTime) {
-            buf.append(dateFormatter.format(new Date()));
-            buf.append(" ");
-        }
-
-        // Append a readable representation of the log level
-        switch(type) {
-            case SimpleLog.LOG_LEVEL_TRACE: buf.append("[TRACE] "); break;
-            case SimpleLog.LOG_LEVEL_DEBUG: buf.append("[DEBUG] "); break;
-            case SimpleLog.LOG_LEVEL_INFO:  buf.append("[INFO] ");  break;
-            case SimpleLog.LOG_LEVEL_WARN:  buf.append("[WARN] ");  break;
-            case SimpleLog.LOG_LEVEL_ERROR: buf.append("[ERROR] "); break;
-            case SimpleLog.LOG_LEVEL_FATAL: buf.append("[FATAL] "); break;
-        }
-
-        // Append the name of the log instance if so configured
- 	if( showShortName) {
-            if( shortLogName==null ) {
-                // Cut all but the last component of the name for both styles
-                shortLogName = logName.substring(logName.lastIndexOf(".") + 1);
-                shortLogName =
-                    shortLogName.substring(shortLogName.lastIndexOf("/") + 1);
-            }
-            buf.append(String.valueOf(shortLogName)).append(" - ");
-        } else if(showLogName) {
-            buf.append(String.valueOf(logName)).append(" - ");
-        }
-
-        // Append the message
-        buf.append(String.valueOf(message));
-
-        // Append stack trace if not null
-        if(t != null) {
-            buf.append(" <");
-            buf.append(t.toString());
-            buf.append(">");
-
-            java.io.StringWriter sw= new java.io.StringWriter(1024);
-            java.io.PrintWriter pw= new java.io.PrintWriter(sw);
-            t.printStackTrace(pw);
-            pw.close();
-            buf.append(sw.toString());
-        }
-
-        // Print to the appropriate destination
-        write(buf);
-
-    }
-
-
-    /**
-     * <p>Write the content of the message accumulated in the specified
-     * <code>StringBuffer</code> to the appropriate output destination.  The
-     * default implementation writes to <code>System.err</code>.</p>
-     *
-     * @param buffer A <code>StringBuffer</code> containing the accumulated
-     *  text to be logged
-     */
-    protected void write(StringBuffer buffer) {
-
-        System.err.println(buffer.toString());
-
-    }
-
-
-    /**
-     * Is the given log level currently enabled?
-     *
-     * @param logLevel is this level enabled?
-     */
-    protected boolean isLevelEnabled(int logLevel) {
-        // log level are numerically ordered so can use simple numeric
-        // comparison
-        return (logLevel >= currentLogLevel);
-    }
-
-
-    // -------------------------------------------------------- Log Implementation
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_DEBUG</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#debug(Object)
-     */
-    public final void debug(Object message) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_DEBUG)) {
-            log(SimpleLog.LOG_LEVEL_DEBUG, message, null);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_DEBUG</code>.
-     *
-     * @param message to log
-     * @param t log this cause
-     * @see org.apache.commons.logging.Log#debug(Object, Throwable)
-     */
-    public final void debug(Object message, Throwable t) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_DEBUG)) {
-            log(SimpleLog.LOG_LEVEL_DEBUG, message, t);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_TRACE</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#trace(Object)
-     */
-    public final void trace(Object message) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_TRACE)) {
-            log(SimpleLog.LOG_LEVEL_TRACE, message, null);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_TRACE</code>.
-     *
-     * @param message to log
-     * @param t log this cause
-     * @see org.apache.commons.logging.Log#trace(Object, Throwable)
-     */
-    public final void trace(Object message, Throwable t) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_TRACE)) {
-            log(SimpleLog.LOG_LEVEL_TRACE, message, t);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_INFO</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#info(Object)
-     */
-    public final void info(Object message) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_INFO)) {
-            log(SimpleLog.LOG_LEVEL_INFO,message,null);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_INFO</code>.
-     *
-     * @param message to log
-     * @param t log this cause
-     * @see org.apache.commons.logging.Log#info(Object, Throwable)
-     */
-    public final void info(Object message, Throwable t) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_INFO)) {
-            log(SimpleLog.LOG_LEVEL_INFO, message, t);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_WARN</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#warn(Object)
-     */
-    public final void warn(Object message) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_WARN)) {
-            log(SimpleLog.LOG_LEVEL_WARN, message, null);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_WARN</code>.
-     *
-     * @param message to log
-     * @param t log this cause
-     * @see org.apache.commons.logging.Log#warn(Object, Throwable)
-     */
-    public final void warn(Object message, Throwable t) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_WARN)) {
-            log(SimpleLog.LOG_LEVEL_WARN, message, t);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_ERROR</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#error(Object)
-     */
-    public final void error(Object message) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_ERROR)) {
-            log(SimpleLog.LOG_LEVEL_ERROR, message, null);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_ERROR</code>.
-     *
-     * @param message to log
-     * @param t log this cause
-     * @see org.apache.commons.logging.Log#error(Object, Throwable)
-     */
-    public final void error(Object message, Throwable t) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_ERROR)) {
-            log(SimpleLog.LOG_LEVEL_ERROR, message, t);
-        }
-    }
-
-
-    /**
-     * Log a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_FATAL</code>.
-     *
-     * @param message to log
-     * @see org.apache.commons.logging.Log#fatal(Object)
-     */
-    public final void fatal(Object message) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_FATAL)) {
-            log(SimpleLog.LOG_LEVEL_FATAL, message, null);
-        }
-    }
-
-
-    /**
-     * Logs a message with 
-     * <code>org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_FATAL</code>.
-     *
-     * @param message to log
-     * @param t log this cause
-     * @see org.apache.commons.logging.Log#fatal(Object, Throwable)
-     */
-    public final void fatal(Object message, Throwable t) {
-
-        if (isLevelEnabled(SimpleLog.LOG_LEVEL_FATAL)) {
-            log(SimpleLog.LOG_LEVEL_FATAL, message, t);
-        }
-    }
-
-
-    /**
-     * <p> Are debug messages currently enabled? </p>
-     *
-     * <p> This allows expensive operations such as <code>String</code>
-     * concatenation to be avoided when the message will be ignored by the
-     * logger. </p>
-     */
-    public final boolean isDebugEnabled() {
-
-        return isLevelEnabled(SimpleLog.LOG_LEVEL_DEBUG);
-    }
-
-
-    /**
-     * <p> Are error messages currently enabled? </p>
-     *
-     * <p> This allows expensive operations such as <code>String</code>
-     * concatenation to be avoided when the message will be ignored by the
-     * logger. </p>
-     */
-    public final boolean isErrorEnabled() {
-
-        return isLevelEnabled(SimpleLog.LOG_LEVEL_ERROR);
-    }
-
-
-    /**
-     * <p> Are fatal messages currently enabled? </p>
-     *
-     * <p> This allows expensive operations such as <code>String</code>
-     * concatenation to be avoided when the message will be ignored by the
-     * logger. </p>
-     */
-    public final boolean isFatalEnabled() {
-
-        return isLevelEnabled(SimpleLog.LOG_LEVEL_FATAL);
-    }
-
-
-    /**
-     * <p> Are info messages currently enabled? </p>
-     *
-     * <p> This allows expensive operations such as <code>String</code>
-     * concatenation to be avoided when the message will be ignored by the
-     * logger. </p>
-     */
-    public final boolean isInfoEnabled() {
-
-        return isLevelEnabled(SimpleLog.LOG_LEVEL_INFO);
-    }
-
-
-    /**
-     * <p> Are trace messages currently enabled? </p>
-     *
-     * <p> This allows expensive operations such as <code>String</code>
-     * concatenation to be avoided when the message will be ignored by the
-     * logger. </p>
-     */
-    public final boolean isTraceEnabled() {
-
-        return isLevelEnabled(SimpleLog.LOG_LEVEL_TRACE);
-    }
-
-
-    /**
-     * <p> Are warn messages currently enabled? </p>
-     *
-     * <p> This allows expensive operations such as <code>String</code>
-     * concatenation to be avoided when the message will be ignored by the
-     * logger. </p>
-     */
-    public final boolean isWarnEnabled() {
-
-        return isLevelEnabled(SimpleLog.LOG_LEVEL_WARN);
-    }
-
-
-    /**
-     * Return the thread context class loader if available.
-     * Otherwise return null.
-     *
-     * The thread context class loader is available for JDK 1.2
-     * or later, if certain security conditions are met.
-     *
-     * @exception LogConfigurationException if a suitable class loader
-     * cannot be identified.
-     */
-    private static ClassLoader getContextClassLoader()
-    {
-        ClassLoader classLoader = null;
-
-        if (classLoader == null) {
-            try {
-                // Are we running on a JDK 1.2 or later system?
-                Method method = Thread.class.getMethod("getContextClassLoader",
-                        (Class[]) null);
-
-                // Get the thread context class loader (if there is one)
-                try {
-                    classLoader = (ClassLoader)method.invoke(Thread.currentThread(), 
-                            (Object[]) null);
-
-                } catch (IllegalAccessException e) {
-                    ;  // ignore
-                } catch (InvocationTargetException e) {
-                    /**
-                     * InvocationTargetException is thrown by 'invoke' when
-                     * the method being invoked (getContextClassLoader) throws
-                     * an exception.
-                     *
-                     * getContextClassLoader() throws SecurityException when
-                     * the context class loader isn't an ancestor of the
-                     * calling class's class loader, or if security
-                     * permissions are restricted.
-                     *
-                     * In the first case (not related), we want to ignore and
-                     * keep going.  We cannot help but also ignore the second
-                     * with the logic below, but other calls elsewhere (to
-                     * obtain a class loader) will trigger this exception where
-                     * we can make a distinction.
-                     */
-                    if (e.getTargetException() instanceof SecurityException) {
-                        ;  // ignore
-                    } else {
-                        // Capture 'e.getTargetException()' exception for details
-                        // alternate: log 'e.getTargetException()', and pass back 'e'.
-                        throw new LogConfigurationException
-                            ("Unexpected InvocationTargetException", e.getTargetException());
-                    }
-                }
-            } catch (NoSuchMethodException e) {
-                // Assume we are running on JDK 1.1
-                ;  // ignore
-            }
-        }
-
-        if (classLoader == null) {
-            classLoader = SimpleLog.class.getClassLoader();
-        }
-
-        // Return the selected class loader
-        return classLoader;
-    }
-
-    private static InputStream getResourceAsStream(final String name)
-    {
-        return (InputStream)AccessController.doPrivileged(
-            new PrivilegedAction() {
-                public Object run() {
-                    ClassLoader threadCL = getContextClassLoader();
-
-                    if (threadCL != null) {
-                        return threadCL.getResourceAsStream(name);
-                    } else {
-                        return ClassLoader.getSystemResourceAsStream(name);
-                    }
-                }
-            });
-    }
-}
-
diff --git a/src/org/apache/commons/logging/impl/WeakHashtable.java b/src/org/apache/commons/logging/impl/WeakHashtable.java
deleted file mode 100644
index e4749b6..0000000
--- a/src/org/apache/commons/logging/impl/WeakHashtable.java
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- * Copyright 2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */ 
-
-
-package org.apache.commons.logging.impl;
-
-import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
-import java.util.*;
-
-/**
- * <p>Implementation of <code>Hashtable</code> that uses <code>WeakReference</code>'s
- * to hold its keys thus allowing them to be reclaimed by the garbage collector.
- * The associated values are retained using strong references.</p>
- *
- * <p>This class follows the symantics of <code>Hashtable</code> as closely as
- * possible. It therefore does not accept null values or keys.</p>
- *
- * <p><strong>Note:</strong>
- * This is <em>not</em> intended to be a general purpose hash table replacement.
- * This implementation is also tuned towards a particular purpose: for use as a replacement
- * for <code>Hashtable</code> in <code>LogFactory</code>. This application requires
- * good liveliness for <code>get</code> and <code>put</code>. Various tradeoffs
- * have been made with this in mind.
- * </p>
- * <p>
- * <strong>Usage:</strong> typical use case is as a drop-in replacement 
- * for the <code>Hashtable</code> used in <code>LogFactory</code> for J2EE enviroments
- * running 1.3+ JVMs. Use of this class <i>in most cases</i> (see below) will
- * allow classloaders to be collected by the garbage collector without the need 
- * to call {@link org.apache.commons.logging.LogFactory#release(ClassLoader) LogFactory.release(ClassLoader)}.
- * </p>
- *
- * <p><code>org.apache.commons.logging.LogFactory</code> checks whether this class
- * can be supported by the current JVM, and if so then uses it to store
- * references to the <code>LogFactory</code> implementationd it loads 
- * (rather than using a standard Hashtable instance). 
- * Having this class used instead of <code>Hashtable</code> solves
- * certain issues related to dynamic reloading of applications in J2EE-style
- * environments. However this class requires java 1.3 or later (due to its use
- * of <code>java.lang.ref.WeakReference</code> and associates).
- * And by the way, this extends <code>Hashtable</code> rather than <code>HashMap</code>
- * for backwards compatibility reasons. See the documentation
- * for method <code>LogFactory.createFactoryStore</code> for more details.</p>
- *
- * <p>The reason all this is necessary is due to a issue which
- * arises during hot deploy in a J2EE-like containers. 
- * Each component running in the container owns one or more classloaders; when
- * the component loads a LogFactory instance via the component classloader
- * a reference to it gets stored in the static LogFactory.factories member,
- * keyed by the component's classloader so different components don't
- * stomp on each other. When the component is later unloaded, the container
- * sets the component's classloader to null with the intent that all the 
- * component's classes get garbage-collected. However there's still a
- * reference to the component's classloader from a key in the "global"
- * <code>LogFactory</code>'s factories member! If <code>LogFactory.release()</code>
- * is called whenever component is unloaded, the classloaders will be correctly
- * garbage collected; this <i>should</i> be done by any container that 
- * bundles commons-logging by default. However, holding the classloader
- * references weakly ensures that the classloader will be garbage collected
- * without the container performing this step. </p>
- *
- * <p>
- * <strong>Limitations:</strong>
- * There is still one (unusual) scenario in which a component will not 
- * be correctly unloaded without an explicit release. Though weak references
- * are used for its keys, it is necessary to use strong references for its values.
- * </p>
- * 
- * <p> If the abstract class <code>LogFactory</code> is 
- * loaded by the container classloader but a subclass of 
- * <code>LogFactory</code> [LogFactory1] is loaded by the component's 
- * classloader and an instance stored in the static map associated with the
- * base LogFactory class, then there is a strong reference from the LogFactory
- * class to the LogFactory1 instance (as normal) and a strong reference from
- * the LogFactory1 instance to the component classloader via
- * <code>getClass().getClassLoader()</code>. This chain of references will prevent 
- * collection of the child classloader.</p>
- *
- * <p>
- * Such a situation occurs when the commons-logging.jar is
- * loaded by a parent classloader (e.g. a server level classloader in a
- * servlet container) and a custom <code>LogFactory</code> implementation is
- * loaded by a child classloader (e.g. a web app classloader).</p>
- * 
- * <p>To avoid this scenario, ensure
- * that any custom LogFactory subclass is loaded by the same classloader as 
- * the base <code>LogFactory</code>. Creating custom LogFactory subclasses is,
- * however, rare. The standard LogFactoryImpl class should be sufficient
- * for most or all users.</p>
- *
- *
- * @author Brian Stansberry
- * 
- * @since 1.1
- */
-public final class WeakHashtable extends Hashtable {
-
-    /** 
-     * The maximum number of times put() or remove() can be called before
-     * the map will be purged of all cleared entries.
-     */
-    private static final int MAX_CHANGES_BEFORE_PURGE = 100;
-    
-    /** 
-     * The maximum number of times put() or remove() can be called before
-     * the map will be purged of one cleared entry.
-     */
-    private static final int PARTIAL_PURGE_COUNT     = 10;
-    
-    /* ReferenceQueue we check for gc'd keys */
-    private ReferenceQueue queue = new ReferenceQueue();
-    /* Counter used to control how often we purge gc'd entries */
-    private int changeCount = 0;
-    
-    /**
-     * Constructs a WeakHashtable with the Hashtable default
-     * capacity and load factor.
-     */
-    public WeakHashtable() {}
-    
-    
-    /**
-     *@see Hashtable
-     */
-    public boolean containsKey(Object key) {
-        // purge should not be required
-        Referenced referenced = new Referenced(key);
-        return super.containsKey(referenced);
-    }
-    
-    /**
-     *@see Hashtable
-     */
-    public Enumeration elements() {
-        purge();
-        return super.elements();
-    }
-    
-    /**
-     *@see Hashtable
-     */
-    public Set entrySet() {
-        purge();
-        Set referencedEntries = super.entrySet();
-        Set unreferencedEntries = new HashSet();
-        for (Iterator it=referencedEntries.iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            Referenced referencedKey = (Referenced) entry.getKey();
-            Object key = referencedKey.getValue();
-            Object value = entry.getValue();
-            if (key != null) {
-                Entry dereferencedEntry = new Entry(key, value);
-                unreferencedEntries.add(dereferencedEntry);
-            }
-        }
-        return unreferencedEntries;
-    }
-    
-    /**
-     *@see Hashtable
-     */
-    public Object get(Object key) {
-        // for performance reasons, no purge
-        Referenced referenceKey = new Referenced(key);
-        return super.get(referenceKey);
-    }
-    
-    /**
-     *@see Hashtable
-     */
-    public Enumeration keys() {
-        purge();
-        final Enumeration enumer = super.keys();
-        return new Enumeration() {
-            public boolean hasMoreElements() {
-                return enumer.hasMoreElements();
-            }
-            public Object nextElement() {
-                 Referenced nextReference = (Referenced) enumer.nextElement();
-                 return nextReference.getValue();
-            }
-        };
-    }
-    
-        
-    /**
-     *@see Hashtable
-     */
-    public Set keySet() {
-        purge();
-        Set referencedKeys = super.keySet();
-        Set unreferencedKeys = new HashSet();
-        for (Iterator it=referencedKeys.iterator(); it.hasNext();) {
-            Referenced referenceKey = (Referenced) it.next();
-            Object keyValue = referenceKey.getValue();
-            if (keyValue != null) {
-                unreferencedKeys.add(keyValue);
-            }
-        }
-        return unreferencedKeys;
-    }
-    
-    /**
-     *@see Hashtable
-     */    
-    public Object put(Object key, Object value) {
-        // check for nulls, ensuring symantics match superclass
-        if (key == null) {
-            throw new NullPointerException("Null keys are not allowed");
-        }
-        if (value == null) {
-            throw new NullPointerException("Null values are not allowed");
-        }
-
-        // for performance reasons, only purge every 
-        // MAX_CHANGES_BEFORE_PURGE times
-        if (changeCount++ > MAX_CHANGES_BEFORE_PURGE) {
-            purge();
-            changeCount = 0;
-        }
-        // do a partial purge more often
-        else if ((changeCount % PARTIAL_PURGE_COUNT) == 0) {
-            purgeOne();
-        }
-        
-        Object result = null;
-        Referenced keyRef = new Referenced(key, queue);
-        return super.put(keyRef, value);
-    }
-    
-    /**
-     *@see Hashtable
-     */    
-    public void putAll(Map t) {
-        if (t != null) {
-            Set entrySet = t.entrySet();
-            for (Iterator it=entrySet.iterator(); it.hasNext();) {
-                Map.Entry entry = (Map.Entry) it.next();
-                put(entry.getKey(), entry.getValue());
-            }
-        }
-    }
-    
-    /**
-     *@see Hashtable
-     */      
-    public Collection values() {
-        purge();
-        return super.values();
-    }
-    
-    /**
-     *@see Hashtable
-     */     
-    public Object remove(Object key) {
-        // for performance reasons, only purge every 
-        // MAX_CHANGES_BEFORE_PURGE times
-        if (changeCount++ > MAX_CHANGES_BEFORE_PURGE) {
-            purge();
-            changeCount = 0;
-        }
-        // do a partial purge more often
-        else if ((changeCount % PARTIAL_PURGE_COUNT) == 0) {
-            purgeOne();
-        }
-        return super.remove(new Referenced(key));
-    }
-    
-    /**
-     *@see Hashtable
-     */    
-    public boolean isEmpty() {
-        purge();
-        return super.isEmpty();
-    }
-    
-    /**
-     *@see Hashtable
-     */    
-    public int size() {
-        purge();
-        return super.size();
-    }
-    
-    /**
-     *@see Hashtable
-     */        
-    public String toString() {
-        purge();
-        return super.toString();
-    }
-    
-    /**
-     * @see Hashtable
-     */
-    protected void rehash() {
-        // purge here to save the effort of rehashing dead entries
-        purge();
-        super.rehash();
-    }
-    
-    /**
-     * Purges all entries whose wrapped keys
-     * have been garbage collected.
-     */
-    private void purge() {
-        synchronized (queue) {
-            WeakKey key;
-            while ((key = (WeakKey) queue.poll()) != null) {
-                super.remove(key.getReferenced());
-            }
-        }
-    }
-    
-    /**
-     * Purges one entry whose wrapped key 
-     * has been garbage collected.
-     */
-    private void purgeOne() {
-        
-        synchronized (queue) {
-            WeakKey key = (WeakKey) queue.poll();
-            if (key != null) {
-                super.remove(key.getReferenced());
-            }
-        }
-    }
-    
-    /** Entry implementation */
-    private final static class Entry implements Map.Entry {
-    
-        private final Object key;
-        private final Object value;
-        
-        private Entry(Object key, Object value) {
-            this.key = key;
-            this.value = value;
-        }
-    
-        public boolean equals(Object o) {
-            boolean result = false;
-            if (o != null && o instanceof Map.Entry) {
-                Map.Entry entry = (Map.Entry) o;
-                result =    (getKey()==null ?
-                                            entry.getKey() == null : 
-                                            getKey().equals(entry.getKey()))
-                            &&
-                            (getValue()==null ?
-                                            entry.getValue() == null : 
-                                            getValue().equals(entry.getValue()));
-            }
-            return result;
-        } 
-        
-        public int hashCode() {
-
-            return (getKey()==null ? 0 : getKey().hashCode()) ^
-                (getValue()==null ? 0 : getValue().hashCode());
-        }
-
-        public Object setValue(Object value) {
-            throw new UnsupportedOperationException("Entry.setValue is not supported.");
-        }
-        
-        public Object getValue() {
-            return value;
-        }
-        
-        public Object getKey() {
-            return key;
-        }
-    }
-    
-    
-    /** Wrapper giving correct symantics for equals and hashcode */
-    private final static class Referenced {
-        
-        private final WeakReference reference;
-        private final int           hashCode;
-
-        /**
-         * 
-         * @throws NullPointerException if referant is <code>null</code>
-         */        
-        private Referenced(Object referant) {
-            reference = new WeakReference(referant);
-            // Calc a permanent hashCode so calls to Hashtable.remove()
-            // work if the WeakReference has been cleared
-            hashCode  = referant.hashCode();
-        }
-        
-        /**
-         * 
-         * @throws NullPointerException if key is <code>null</code>
-         */
-        private Referenced(Object key, ReferenceQueue queue) {
-            reference = new WeakKey(key, queue, this);
-            // Calc a permanent hashCode so calls to Hashtable.remove()
-            // work if the WeakReference has been cleared
-            hashCode  = key.hashCode();
-
-        }
-        
-        public int hashCode() {
-            return hashCode;
-        }
-        
-        private Object getValue() {
-            return reference.get();
-        }
-        
-        public boolean equals(Object o) {
-            boolean result = false;
-            if (o instanceof Referenced) {
-                Referenced otherKey = (Referenced) o;
-                Object thisKeyValue = getValue();
-                Object otherKeyValue = otherKey.getValue();
-                if (thisKeyValue == null) {                     
-                    result = (otherKeyValue == null);
-                    
-                    // Since our hashcode was calculated from the original
-                    // non-null referant, the above check breaks the 
-                    // hashcode/equals contract, as two cleared Referenced
-                    // objects could test equal but have different hashcodes.
-                    // We can reduce (not eliminate) the chance of this
-                    // happening by comparing hashcodes.
-                    if (result == true) {
-                        result = (this.hashCode() == otherKey.hashCode());
-                    }
-                    // In any case, as our c'tor does not allow null referants
-                    // and Hashtable does not do equality checks between 
-                    // existing keys, normal hashtable operations should never 
-                    // result in an equals comparison between null referants
-                }
-                else
-                {
-                    result = thisKeyValue.equals(otherKeyValue);
-                }
-            }
-            return result;
-        }
-    }
-    
-    /**
-     * WeakReference subclass that holds a hard reference to an
-     * associated <code>value</code> and also makes accessible
-     * the Referenced object holding it.
-     */
-    private final static class WeakKey extends WeakReference {
-
-        private final Referenced referenced;
-        
-        private WeakKey(Object key, 
-                        ReferenceQueue queue,
-                        Referenced referenced) {
-            super(key, queue);
-            this.referenced = referenced;
-        }
-        
-        private Referenced getReferenced() {
-            return referenced;
-        }
-     }
-}
diff --git a/src/org/apache/commons/logging/impl/package.html b/src/org/apache/commons/logging/impl/package.html
deleted file mode 100644
index eb26b76..0000000
--- a/src/org/apache/commons/logging/impl/package.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-
- Copyright 2001-2004 The Apache Software Foundation.
- 
- Licensed 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.
-
--->
-
-<body>
-<p>Concrete implementations of commons-logging wrapper APIs.</p>
-</body>
diff --git a/src/org/apache/commons/logging/package.html b/src/org/apache/commons/logging/package.html
deleted file mode 100644
index cfde4f0..0000000
--- a/src/org/apache/commons/logging/package.html
+++ /dev/null
@@ -1,254 +0,0 @@
-<!--
-
- Copyright 2001-2004 The Apache Software Foundation.
- 
- Licensed 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.
-
--->
-
-<body>
-<p>Simple wrapper API around multiple logging APIs.</p>
-
-
-<h3>Overview</h3>
-
-<p>This package provides an API for logging in server-based applications that
-can be used around a variety of different logging implementations, including
-prebuilt support for the following:</p>
-<ul>
-<li><a href="http://logging.apache.org/log4j/">Log4J</a> (version 1.2 or later)
-    from Apache's Jakarta project.  Each named <a href="Log.html">Log</a>
-    instance is connected to a corresponding Log4J Logger.</li>
-<li><a href="http://java.sun.com/j2se/1.4/docs/guide/util/logging/index.html">
-    JDK Logging API</a>, included in JDK 1.4 or later systems.  Each named
-    <a href="Log.html">Log</a> instance is connected to a corresponding
-    <code>java.util.logging.Logger</code> instance.</li>
-<li><a href="http://avalon.apache.org/logkit/">LogKit</a> from Apache's
-    Avalon project.  Each named <a href="Log.html">Log</a> instance is
-    connected to a corresponding LogKit <code>Logger</code>.</li>
-<li><a href="impl/NoOpLog.html">NoOpLog</a> implementation that simply swallows
-    all log output, for all named <a href="Log.html">Log</a> instances.</li>
-<li><a href="impl/SimpleLog.html">SimpleLog</a> implementation that writes all
-    log output, for all named <a href="Log.html">Log</a> instances, to
-    System.err.</li>
-</ul>
-
-
-<h3>Quick Start Guide</h3>
-
-<p>For those impatient to just get on with it, the following example
-illustrates the typical declaration and use of a logger that is named (by
-convention) after the calling class:
-
-<pre>
-    import org.apache.commons.logging.Log;
-    import org.apache.commons.logging.LogFactory;
-
-    public class Foo {
-
-        private Log log = LogFactory.getLog(Foo.class);
-
-        public void foo() {
-            ...
-            try {
-                if (log.isDebugEnabled()) {
-                    log.debug("About to do something to object " + name);
-                }
-                name.bar();
-            } catch (IllegalStateException e) {
-                log.error("Something bad happened to " + name, e);
-            }
-            ...
-        }
-</pre>
-
-<p>Unless you configure things differently, all log output will be written
-to System.err.  Therefore, you really will want to review the remainder of
-this page in order to understand how to configure logging for your
-application.</p>
-
-
-<h3>Configuring the Commons Logging Package</h3>
-
-
-<h4>Choosing a <code>LogFactory</code> Implementation</h4>
-
-<p>From an application perspective, the first requirement is to retrieve an
-object reference to the <code>LogFactory</code> instance that will be used
-to create <code><a href="Log.html">Log</a></code> instances for this
-application.  This is normally accomplished by calling the static
-<code>getFactory()</code> method.  This method implements the following
-discovery algorithm to select the name of the <code>LogFactory</code>
-implementation class this application wants to use:</p>
-<ul>
-<li>Check for a system property named
-   <code>org.apache.commons.logging.LogFactory</code>.</li>
-<li>Use the JDK 1.3 JAR Services Discovery mechanism (see
-    <a href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html">
-    http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html</a> for
-    more information) to look for a resource named
-    <code>META-INF/services/org.apache.commons.logging.LogFactory</code>
-    whose first line is assumed to contain the desired class name.</li>
-<li>Look for a properties file named <code>commons-logging.properties</code>
-    visible in the application class path, with a property named
-    <code>org.apache.commons.logging.LogFactory</code> defining the
-    desired implementation class name.</li>
-<li>Fall back to a default implementation, which is described
-    further below.</li>
-</ul>
-
-<p>If a <code>commons-logging.properties</code> file is found, all of the
-properties defined there are also used to set configuration attributes on
-the instantiated <code>LogFactory</code> instance.</p>
-
-<p>Once an implementation class name is selected, the corresponding class is
-loaded from the current Thread context class loader (if there is one), or
-from the class loader that loaded the <code>LogFactory</code> class itself
-otherwise.  This allows a copy of <code>commons-logging.jar</code> to be
-shared in a multiple class loader environment (such as a servlet container),
-but still allow each web application to provide its own <code>LogFactory</code>
-implementation, if it so desires.  An instance of this class will then be
-created, and cached per class loader.
-
-
-<h4>The Default <code>LogFactory</code> Implementation</h4>
-
-<p>The Logging Package APIs include a default <code>LogFactory</code>
-implementation class (<a href="impl/LogFactoryImpl.html">
-org.apache.commons.logging.impl.LogFactoryImpl</a>) that is selected if no
-other implementation class name can be discovered.  Its primary purpose is
-to create (as necessary) and return <a href="Log.html">Log</a> instances
-in response to calls to the <code>getInstance()</code> method.  The default
-implementation uses the following rules:</p>
-<ul>
-<li>At most one <code>Log</code> instance of the same name will be created.
-    Subsequent <code>getInstance()</code> calls to the same
-    <code>LogFactory</code> instance, with the same name or <code>Class</code>
-    parameter, will return the same <code>Log</code> instance.</li>
-<li>When a new <code>Log</code> instance must be created, the default
-    <code>LogFactory</code> implementation uses the following discovery
-    process:
-    <ul>
-    <li>Look for a configuration attribute of this factory named
-        <code>org.apache.commons.logging.Log</code> (for backwards
-        compatibility to pre-1.0 versions of this API, an attribute
-        <code>org.apache.commons.logging.log</code> is also consulted).</li>
-    <li>Look for a system property named
-        <code>org.apache.commons.logging.Log</code> (for backwards
-        compatibility to pre-1.0 versions of this API, a system property
-        <code>org.apache.commons.logging.log</code> is also consulted).</li>
-    <li>If the Log4J logging system is available in the application
-        class path, use the corresponding wrapper class
-        (<a href="impl/Log4JLogger.html">Log4JLogger</a>).</li>
-    <li>If the application is executing on a JDK 1.4 system, use
-        the corresponding wrapper class
-        (<a href="impl/Jdk14Logger.html">Jdk14Logger</a>).</li>
-    <li>Fall back to the default simple logging implementation
-        (<a href="impl/SimpleLog.html">SimpleLog</a>).</li>
-    </ul></li>
-<li>Load the class of the specified name from the thread context class
-    loader (if any), or from the class loader that loaded the
-    <code>LogFactory</code> class otherwise.</li>
-<li>Instantiate an instance of the selected <code>Log</code>
-    implementation class, passing the specified name as the single
-    argument to its constructor.</li>
-</ul>
-
-<p>See the <a href="impl/SimpleLog.html">SimpleLog</a> JavaDocs for detailed
-configuration information for this default implementation.</p>
-
-
-<h4>Configuring the Underlying Logging System</h4>
-
-<p>The basic principle is that the user is totally responsible for the
-configuration of the underlying logging system.
-Commons-logging should not change the existing configuration.</p>
-
-<p>Each individual <a href="Log.html">Log</a> implementation may
-support its own configuration properties.  These will be documented in the
-class descriptions for the corresponding implementation class.</p>
-
-<p>Finally, some <code>Log</code> implementations (such as the one for Log4J)
-require an external configuration file for the entire logging environment.
-This file should be prepared in a manner that is specific to the actual logging
-technology being used.</p>
-
-
-<h3>Using the Logging Package APIs</h3>
-
-<p>Use of the Logging Package APIs, from the perspective of an application
-component, consists of the following steps:</p>
-<ol>
-<li>Acquire a reference to an instance of
-    <a href="Log.html">org.apache.commons.logging.Log</a>, by calling the
-    factory method
-    <a href="LogFactory.html#getInstance(java.lang.String)">
-    LogFactory.getInstance(String name)</a>.  Your application can contain
-    references to multiple loggers that are used for different
-    purposes.  A typical scenario for a server application is to have each
-    major component of the server use its own Log instance.</li>
-<li>Cause messages to be logged (if the corresponding detail level is enabled)
-    by calling appropriate methods (<code>trace()</code>, <code>debug()</code>,
-    <code>info()</code>, <code>warn()</code>, <code>error</code>, and
-    <code>fatal()</code>).</li>
-</ol>
-
-<p>For convenience, <code>LogFactory</code> also offers a static method
-<code>getLog()</code> that combines the typical two-step pattern:</p>
-<pre>
-  Log log = LogFactory.getFactory().getInstance(Foo.class);
-</pre>
-<p>into a single method call:</p>
-<pre>
-  Log log = LogFactory.getLog(Foo.class);
-</pre>
-
-<p>For example, you might use the following technique to initialize and
-use a <a href="Log.html">Log</a> instance in an application component:</p>
-<pre>
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class MyComponent {
-
-  protected Log log =
-    LogFactory.getLog(MyComponent.class);
-
-  // Called once at startup time
-  public void start() {
-    ...
-    log.info("MyComponent started");
-    ...
-  }
-
-  // Called once at shutdown time
-  public void stop() {
-    ...
-    log.info("MyComponent stopped");
-    ...
-  }
-
-  // Called repeatedly to process a particular argument value
-  // which you want logged if debugging is enabled
-  public void process(String value) {
-    ...
-    // Do the string concatenation only if logging is enabled
-    if (log.isDebugEnabled())
-      log.debug("MyComponent processing " + value);
-    ...
-  }
-
-}
-</pre>
-
-</body>
diff --git a/src/org/apache/http/ConnectionClosedException.java b/src/org/apache/http/ConnectionClosedException.java
deleted file mode 100644
index fa0e2db..0000000
--- a/src/org/apache/http/ConnectionClosedException.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/ConnectionClosedException.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;
-
-import java.io.IOException;
-
-/**
- * Indicates that a connection has been closed.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618017 $
- * 
- * @since 4.0
- */
-public class ConnectionClosedException extends IOException {
-
-    private static final long serialVersionUID = 617550366255636674L;
-    
-    /**
-     * Creates a new ConnectionClosedException with the specified detail message.
-     * 
-     * @param message The exception detail message
-     */
-    public ConnectionClosedException(final String message) {
-        super(message);
-    }
-
-}
diff --git a/src/org/apache/http/ConnectionReuseStrategy.java b/src/org/apache/http/ConnectionReuseStrategy.java
deleted file mode 100644
index 635cc5c..0000000
--- a/src/org/apache/http/ConnectionReuseStrategy.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/ConnectionReuseStrategy.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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;
-
-import org.apache.http.protocol.HttpContext;
-
-/**
- * Interface for deciding whether a connection should be kept alive.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public interface ConnectionReuseStrategy {
-
-    /**
-     * Decides whether a connection can be kept open after a request.
-     * If this method returns <code>false</code>, the caller MUST
-     * close the connection to correctly implement the HTTP protocol.
-     * If it returns <code>true</code>, the caller SHOULD attempt to
-     * keep the connection open for reuse with another request.
-     * <br/>
-     * One can use the HTTP context to retrieve additional objects that 
-     * may be relevant for the keep-alive strategy: the actual HTTP 
-     * connection, the original HTTP request, target host if known, 
-     * number of times the connection has been reused already and so on.
-     * <br/>
-     * If the connection is already closed, <code>false</code> is returned.
-     * The stale connection check MUST NOT be triggered by a
-     * connection reuse strategy.
-     *
-     * @param response
-     *          The last response received over that connection.
-     * @param context   the context in which the connection is being 
-     *          used.
-     *
-     * @return <code>true</code> if the connection is allowed to be reused, or
-     *         <code>false</code> if it MUST NOT be reused
-     */
-    boolean keepAlive(HttpResponse response, HttpContext context);
-            
-}
diff --git a/src/org/apache/http/FormattedHeader.java b/src/org/apache/http/FormattedHeader.java
deleted file mode 100644
index 04ea279..0000000
--- a/src/org/apache/http/FormattedHeader.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/FormattedHeader.java $
- * $Revision: 569781 $
- * $Date: 2007-08-26 02:05:06 -0700 (Sun, 26 Aug 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;
-
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * An HTTP header which is already formatted.
- * For example when headers are received, the original formatting
- * can be preserved. This allows for the header to be sent without
- * another formatting step.
- *
- *
- * @version $Revision: 569781 $
- */
-public interface FormattedHeader extends Header {
-
-
-    /**
-     * Obtains the buffer with the formatted header.
-     * The returned buffer MUST NOT be modified.
-     *
-     * @return  the formatted header, in a buffer that must not be modified
-     */
-    CharArrayBuffer getBuffer()
-        ;
-
-    /**
-     * Obtains the start of the header value in the {@link #getBuffer buffer}.
-     * By accessing the value in the buffer, creation of a temporary string
-     * can be avoided.
-     *
-     * @return  index of the first character of the header value
-     *          in the buffer returned by {@link #getBuffer getBuffer}.
-     */
-    int getValuePos()
-        ;
-
-}
diff --git a/src/org/apache/http/Header.java b/src/org/apache/http/Header.java
deleted file mode 100644
index 4e04bec..0000000
--- a/src/org/apache/http/Header.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/Header.java $
- * $Revision: 569636 $
- * $Date: 2007-08-25 00:34:47 -0700 (Sat, 25 Aug 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;
-
-/**
- * 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:oleg at ural.ru">Oleg Kalnichevski</a>
- * @version $Revision: 569636 $
- */
-public interface Header {
-
-    String getName();
-    
-    String getValue();
-
-    HeaderElement[] getElements() throws ParseException;
-    
-}
diff --git a/src/org/apache/http/HeaderElement.java b/src/org/apache/http/HeaderElement.java
deleted file mode 100644
index ddc4a9e..0000000
--- a/src/org/apache/http/HeaderElement.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HeaderElement.java $
- * $Revision: 569828 $
- * $Date: 2007-08-26 08:49:38 -0700 (Sun, 26 Aug 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;
-
-/**
- * One element of an HTTP {@link Header header} value.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 569828 $ $Date: 2007-08-26 08:49:38 -0700 (Sun, 26 Aug 2007) $
- * 
- * @since 4.0
- */
-public interface HeaderElement {
-
-    String getName();
-
-    String getValue();
-
-    NameValuePair[] getParameters();
-    
-    NameValuePair getParameterByName(String name);
-
-    int getParameterCount();
-
-    NameValuePair getParameter(int index);
-}
-
diff --git a/src/org/apache/http/HeaderElementIterator.java b/src/org/apache/http/HeaderElementIterator.java
deleted file mode 100644
index 14137f0..0000000
--- a/src/org/apache/http/HeaderElementIterator.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HeaderElementIterator.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;
-
-import java.util.Iterator;
-
-/**
- * A type-safe iterator for {@link HeaderElement HeaderElement} objects.
- * 
- * @version $Revision: 584542 $
- */
-public interface HeaderElementIterator extends Iterator {
-    
-    /**
-     * Indicates whether there is another header element in this 
-     * iteration.
-     *
-     * @return  <code>true</code> if there is another header element,
-     *          <code>false</code> otherwise
-     */
-    boolean hasNext();
-    
-    /**
-     * Obtains the next header element from this iteration.
-     * This method should only be called while {@link #hasNext hasNext}
-     * is true.
-     *
-     * @return  the next header element in this iteration
-     */
-    HeaderElement nextElement();
-    
-}
diff --git a/src/org/apache/http/HeaderIterator.java b/src/org/apache/http/HeaderIterator.java
deleted file mode 100644
index 688b611..0000000
--- a/src/org/apache/http/HeaderIterator.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HeaderIterator.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;
-
-
-import java.util.Iterator;
-
-
-/**
- * A type-safe iterator for {@link Header Header} objects.
- * 
- * @version $Revision: 581981 $
- */
-public interface HeaderIterator extends Iterator {
-
-    /**
-     * Indicates whether there is another header in this iteration.
-     *
-     * @return  <code>true</code> if there is another header,
-     *          <code>false</code> otherwise
-     */
-    boolean hasNext()
-        ;
-
-
-    /**
-     * Obtains the next header from this iteration.
-     * This method should only be called while {@link #hasNext hasNext}
-     * is true.
-     *
-     * @return  the next header in this iteration
-     */
-    Header nextHeader()
-        ;
-}
diff --git a/src/org/apache/http/HttpClientConnection.java b/src/org/apache/http/HttpClientConnection.java
deleted file mode 100644
index a38c8f3..0000000
--- a/src/org/apache/http/HttpClientConnection.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpClientConnection.java $
- * $Revision: 542199 $
- * $Date: 2007-05-28 04:23:46 -0700 (Mon, 28 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/>.
- *
- */
-
-package org.apache.http;
-
-import java.io.IOException;
-
-/**
- * An HTTP connection for use on the client side.
- * It is used for sending requests and receiving responses.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 542199 $
- * 
- * @since 4.0
- */
-public interface HttpClientConnection extends HttpConnection {
-
-    /**
-     * Checks if response data is available from the connection. May wait for
-     * the specified time until some data becomes available. Note that some
-     * implementations may completely ignore the timeout parameter.
-     * 
-     * @param timeout the maximum time in milliseconds to wait for data
-     * @return true if data is available; false if there was no data available
-     *         even after waiting for <code>timeout</code> milliseconds.
-     * @throws IOException if an error happens on the connection
-     */
-    boolean isResponseAvailable(int timeout) 
-        throws IOException; 
-    
-    /**
-     * Sends the request line and all headers over the connection.
-     * @param request the request whose headers to send.
-     * @throws HttpException 
-     * @throws IOException
-     */
-    void sendRequestHeader(HttpRequest request) 
-        throws HttpException, IOException;
-
-    /**
-     * Sends the request entity over the connection.
-     * @param request the request whose entity to send.
-     * @throws HttpException
-     * @throws IOException
-     */
-    void sendRequestEntity(HttpEntityEnclosingRequest request) 
-        throws HttpException, IOException;
-
-    /**
-     * Receives the request line and headers of the next response available from
-     * this connection. The caller should examine the HttpResponse object to
-     * find out if it should try to receive a response entity as well.
-     * 
-     * @return a new HttpResponse object with status line and headers
-     *         initialized.
-     * @throws HttpException
-     * @throws IOException
-     */
-    HttpResponse receiveResponseHeader() 
-        throws HttpException, IOException;
-
-    /**
-     * Receives the next response entity available from this connection and
-     * attaches it to an existing HttpResponse object.
-     * 
-     * @param response the response to attach the entity to
-     * @throws HttpException
-     * @throws IOException
-     */
-    void receiveResponseEntity(HttpResponse response) 
-        throws HttpException, IOException;
-    
-    /**
-     * Writes out all pending buffered data over the open connection.
-     * 
-     * @throws IOException
-     */
-    void flush() throws IOException;
-    
-}
diff --git a/src/org/apache/http/HttpConnection.java b/src/org/apache/http/HttpConnection.java
deleted file mode 100644
index a3311f8..0000000
--- a/src/org/apache/http/HttpConnection.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpConnection.java $
- * $Revision: 548031 $
- * $Date: 2007-06-17 04:28:38 -0700 (Sun, 17 Jun 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;
-
-import java.io.IOException;
-
-/**
- * A generic HTTP connection, useful on client and server side.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 548031 $
- * 
- * @since 4.0
- */
-public interface HttpConnection {
-
-    /**
-     * Closes this connection gracefully.
-     * This method will attempt to  flush the transmitter's
-     * internal buffer prior to closing the underlying socket.
-     * This method MUST NOT be called from a different thread to force 
-     * shutdown of the connection. Use {@link #shutdown shutdown} instead.
-     */
-    public void close() throws IOException;
-    
-    /**
-     * Checks if this connection is open.
-     * @return true if it is open, false if it is closed.
-     */
-    public boolean isOpen();
- 
-    /**
-     * Checks whether this connection has gone down.
-     * Network connections may get closed during some time of inactivity
-     * for several reasons. The next time a read is attempted on such a
-     * connection it will throw an IOException.
-     * This method tries to alleviate this inconvenience by trying to
-     * find out if a connection is still usable. Implementations may do
-     * that by attempting a read with a very small timeout. Thus this
-     * method may block for a small amount of time before returning a result. 
-     * It is therefore an <i>expensive</i> operation.
-     * 
-     * @return  <code>true</code> if attempts to use this connection are
-     *          likely to succeed, or <code>false</code> if they are likely
-     *          to fail and this connection should be closed
-     */
-    public boolean isStale();
-    
-    /**
-     * Sets the socket timeout value.
-     * 
-     * @param timeout timeout value in milliseconds
-     */
-    void setSocketTimeout(int timeout);
-    
-    /**
-     * Returns the socket timeout value.
-     * 
-     * @return positive value in milliseconds if a timeout is set, 
-     * <code>0</code> if timeout is disabled or <code>-1</code> if 
-     * timeout is undefined.
-     */
-    int getSocketTimeout();
-
-    /**
-     * Force-closes this connection.
-     * This is the only method of a connection which may be called
-     * from a different thread to terminate the connection. 
-     * This method will not attempt to flush the transmitter's
-     * internal buffer prior to closing the underlying socket.
-     */
-    public void shutdown() throws IOException;
-    
-    /**
-     * Returns a collection of connection metrcis
-     * @return HttpConnectionMetrics
-     */
-    HttpConnectionMetrics getMetrics();
-    
-}
diff --git a/src/org/apache/http/HttpConnectionMetrics.java b/src/org/apache/http/HttpConnectionMetrics.java
deleted file mode 100644
index 289dd46..0000000
--- a/src/org/apache/http/HttpConnectionMetrics.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpConnectionMetrics.java $
- * $Revision: 548035 $
- * $Date: 2007-06-17 05:17:03 -0700 (Sun, 17 Jun 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;
-
-/**
- * The point of access to the statistics of an {@link HttpConnection}.
- */
-public interface HttpConnectionMetrics {
-
-    /**
-     * Returns the number of requests transferred over the connection, 
-     * 0 if not available.
-     */ 
-    long getRequestCount();
-    
-    /**
-     * Returns the number of responses transferred over the connection, 
-     * 0 if not available.
-     */ 
-    long getResponseCount();
-    
-    /**
-     * Returns the number of bytes transferred over the connection, 
-     * 0 if not available.
-     */ 
-    long getSentBytesCount();
-    
-    /**
-     * Returns the number of bytes transferred over the connection, 
-     * 0 if not available.
-     */ 
-    long getReceivedBytesCount(); 
-    
-    /**
-     * Return the value for the specified metric.
-     *
-     *@param metricName the name of the metric to query.
-     *
-     *@return the object representing the metric requested,
-     *        <code>null</code> if the metric cannot not found.
-     */
-    Object getMetric(String metricName);
-    
-    /**
-     * Resets the counts
-     *
-     */
-    void reset();
-    
-}
diff --git a/src/org/apache/http/HttpEntity.java b/src/org/apache/http/HttpEntity.java
deleted file mode 100644
index 51ddafc..0000000
--- a/src/org/apache/http/HttpEntity.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/HttpEntity.java $
- * $Revision: 645824 $
- * $Date: 2008-04-08 03:12:41 -0700 (Tue, 08 Apr 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;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * An entity that can be sent or received with an HTTP message.
- * Entities can be found in some
- * {@link HttpEntityEnclosingRequest requests} and in
- * {@link HttpResponse responses}, where they are optional.
- * <p>
- * In some places, the JavaDoc distinguishes three kinds of entities,
- * depending on where their {@link #getContent content} originates:
- * <ul>
- * <li><b>streamed</b>: The content is received from a stream, or
- *     generated on the fly. In particular, this category includes
- *     entities being received from a {@link HttpConnection connection}.
- *     {@link #isStreaming Streamed} entities are generally not
- *      {@link #isRepeatable repeatable}.
- *     </li>
- * <li><b>self-contained</b>: The content is in memory or obtained by
- *     means that are independent from a connection or other entity.
- *     Self-contained entities are generally {@link #isRepeatable repeatable}.
- *     </li>
- * <li><b>wrapping</b>: The content is obtained from another entity.
- *     </li>
- * </ul>
- * This distinction is important for connection management with incoming
- * entities. For entities that are created by an application and only sent
- * using the HTTP components framework, the difference between streamed
- * and self-contained is of little importance. In that case, it is suggested
- * to consider non-repeatable entities as streamed, and those that are
- * repeatable (without a huge effort) as self-contained.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 645824 $
- * 
- * @since 4.0
- */
-public interface HttpEntity {
-
-    /**
-     * Tells if the entity is capable to produce its data more than once.
-     * A repeatable entity's getContent() and writeTo(OutputStream) methods
-     * can be called more than once whereas a non-repeatable entity's can not.
-     * @return true if the entity is repeatable, false otherwise.
-     */
-    boolean isRepeatable();
-
-    /**
-     * Tells about chunked encoding for this entity.
-     * The primary purpose of this method is to indicate whether
-     * chunked encoding should be used when the entity is sent.
-     * For entities that are received, it can also indicate whether
-     * the entity was received with chunked encoding.
-     * <br/>
-     * The behavior of wrapping entities is implementation dependent,
-     * but should respect the primary purpose.
-     *
-     * @return  <code>true</code> if chunked encoding is preferred for this
-     *          entity, or <code>false</code> if it is not
-     */
-    boolean isChunked();
-
-    /**
-     * Tells the length of the content, if known.
-     *
-     * @return  the number of bytes of the content, or
-     *          a negative number if unknown. If the content length is known
-     *          but exceeds {@link java.lang.Long#MAX_VALUE Long.MAX_VALUE},
-     *          a negative number is returned.
-     */
-    long getContentLength();
-
-    /**
-     * Obtains the Content-Type header, if known.
-     * This is the header that should be used when sending the entity,
-     * or the one that was received with the entity. It can include a
-     * charset attribute.
-     *
-     * @return  the Content-Type header for this entity, or
-     *          <code>null</code> if the content type is unknown
-     */
-    Header getContentType();
-
-    /**
-     * Obtains the Content-Encoding header, if known.
-     * This is the header that should be used when sending the entity,
-     * or the one that was received with the entity.
-     * Wrapping entities that modify the content encoding should
-     * adjust this header accordingly.
-     *
-     * @return  the Content-Encoding header for this entity, or
-     *          <code>null</code> if the content encoding is unknown
-     */
-    Header getContentEncoding();
-
-    /**
-     * Creates a new InputStream object of the entity.
-     * It is a programming error
-     * to return the same InputStream object more than once.
-     * Entities that are not {@link #isRepeatable repeatable}
-     * will throw an exception if this method is called multiple times.
-     *
-     * @return a new input stream that returns the entity data.
-     *
-     * @throws IOException if the stream could not be created
-     * @throws IllegalStateException
-     *  if this entity is not repeatable and the stream
-     *  has already been obtained previously
-     */
-    InputStream getContent() throws IOException, IllegalStateException;
-
-    /**
-     * Writes the entity content to the output stream.  
-     * 
-     * @param outstream the output stream to write entity content to
-     * 
-     * @throws IOException if an I/O error occurs
-     */
-    void writeTo(OutputStream outstream) throws IOException;
-
-    /**
-     * Tells whether this entity depends on an underlying stream.
-     * Streamed entities should return <code>true</code> until the
-     * content has been consumed, <code>false</code> afterwards.
-     * Self-contained entities should return <code>false</code>.
-     * Wrapping entities should delegate this call to the wrapped entity.
-     * <br/>
-     * The content of a streamed entity is consumed when the stream
-     * returned by {@link #getContent getContent} has been read to EOF,
-     * or after {@link #consumeContent consumeContent} has been called.
-     * If a streamed entity can not detect whether the stream has been
-     * read to EOF, it should return <code>true</code> until
-     * {@link #consumeContent consumeContent} is called.
-     *
-     * @return  <code>true</code> if the entity content is streamed and
-     *          not yet consumed, <code>false</code> otherwise
-     */
-    boolean isStreaming(); // don't expect an exception here
-
-    /**
-     * TODO: The name of this method is misnomer. It will be renamed to
-     * #finish() in the next major release.
-     * <br/>
-     * This method is called to indicate that the content of this entity
-     * is no longer required. All entity implementations are expected to
-     * release all allocated resources as a result of this method 
-     * invocation. Content streaming entities are also expected to 
-     * dispose of the remaining content, if any. Wrapping entities should 
-     * delegate this call to the wrapped entity.
-     * <br/>
-     * This method is of particular importance for entities being
-     * received from a {@link HttpConnection connection}. The entity
-     * needs to be consumed completely in order to re-use the connection
-     * with keep-alive.
-     *
-     * @throws IOException if an I/O error occurs.
-     *          This indicates that connection keep-alive is not possible.
-     */
-    void consumeContent() throws IOException;
-
-} // interface HttpEntity
diff --git a/src/org/apache/http/HttpEntityEnclosingRequest.java b/src/org/apache/http/HttpEntityEnclosingRequest.java
deleted file mode 100644
index c47c32b..0000000
--- a/src/org/apache/http/HttpEntityEnclosingRequest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $Header: $
- * $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;
-
-/**
- * A request with an entity.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618017 $
- * 
- * @since 4.0
- */
-public interface HttpEntityEnclosingRequest extends HttpRequest {
-
-    /**
-     * Tells if this request should use the expect-continue handshake.
-     * The expect continue handshake gives the server a chance to decide
-     * whether to accept the entity enclosing request before the possibly
-     * lengthy entity is sent across the wire.
-     * @return true if the expect continue handshake should be used, false if
-     * not.
-     */
-    boolean expectContinue();
-    
-    /**
-     * Hands the entity to the request.
-     * @param entity the entity to send.
-     */
-    void setEntity(HttpEntity entity);
-    
-    HttpEntity getEntity();
-    
-}
diff --git a/src/org/apache/http/HttpException.java b/src/org/apache/http/HttpException.java
deleted file mode 100644
index 77aacb1..0000000
--- a/src/org/apache/http/HttpException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpException.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;
-
-import org.apache.http.util.ExceptionUtils;
-
-/**
- * Signals that an HTTP exception has occurred.
- * 
- * @author Laura Werner
- * 
- * @version $Revision: 618017 $ $Date: 2008-02-03 08:42:22 -0800 (Sun, 03 Feb 2008) $
- */
-public class HttpException extends Exception {
-
-    private static final long serialVersionUID = -5437299376222011036L;
-    
-    /**
-     * Creates a new HttpException with a <tt>null</tt> detail message.
-     */
-    public HttpException() {
-        super();
-    }
-
-    /**
-     * Creates a new HttpException with the specified detail message.
-     *
-     * @param message the exception detail message
-     */
-    public HttpException(final String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new HttpException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public HttpException(final String message, final Throwable cause) {
-        super(message);
-        ExceptionUtils.initCause(this, cause);
-    }
-
-}
diff --git a/src/org/apache/http/HttpHost.java b/src/org/apache/http/HttpHost.java
deleted file mode 100644
index 869f5af..0000000
--- a/src/org/apache/http/HttpHost.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpHost.java $
- * $Revision: 653058 $
- * $Date: 2008-05-03 05:01:10 -0700 (Sat, 03 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;
-
-import java.util.Locale;
-
-import org.apache.http.util.CharArrayBuffer;
-import org.apache.http.util.LangUtils;
-
-/**
- * Holds all of the variables needed to describe an HTTP connection to a host.
- * This includes remote host name, port and scheme.
- * 
- * @author <a href="mailto:becke@u.washington.edu">Michael Becke</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author Laura Werner
- * 
- * @since 4.0
- */
-public final class HttpHost implements Cloneable {
-
-    /** The default scheme is "http". */
-    public static final String DEFAULT_SCHEME_NAME = "http";
-    
-    /** The host to use. */
-    protected final String hostname;
-
-    /** The lowercase host, for {@link #equals} and {@link #hashCode}. */
-    protected final String lcHostname;
-
-
-    /** The port to use. */
-    protected final int port;
-
-    /** The scheme */
-    protected final String schemeName;
-
-
-    /**
-     * Creates a new {@link HttpHost HttpHost}, specifying all values.
-     * Constructor for HttpHost.
-     *   
-     * @param hostname  the hostname (IP or DNS name)
-     * @param port      the port number.
-     *                  <code>-1</code> indicates the scheme default port.
-     * @param scheme    the name of the scheme.
-     *                  <code>null</code> indicates the
-     *                  {@link #DEFAULT_SCHEME_NAME default scheme}
-     */
-    public HttpHost(final String hostname, int port, final String scheme) {
-        super();
-        if (hostname == null) {
-            throw new IllegalArgumentException("Host name may not be null");
-        }
-        this.hostname   = hostname;
-        this.lcHostname = hostname.toLowerCase(Locale.ENGLISH);
-        if (scheme != null) {
-            this.schemeName = scheme.toLowerCase(Locale.ENGLISH);
-        } else {
-            this.schemeName = DEFAULT_SCHEME_NAME;
-        }
-        this.port = port;
-    }
-
-    /**
-     * Creates a new {@link HttpHost HttpHost}, with default scheme.
-     *   
-     * @param hostname  the hostname (IP or DNS name)
-     * @param port      the port number.
-     *                  <code>-1</code> indicates the scheme default port.
-     */
-    public HttpHost(final String hostname, int port) {
-        this(hostname, port, null);
-    }
-    
-    /**
-     * Creates a new {@link HttpHost HttpHost}, with default scheme and port.
-     *   
-     * @param hostname  the hostname (IP or DNS name)
-     */
-    public HttpHost(final String hostname) {
-        this(hostname, -1, null);
-    }
-    
-    /**
-     * Copy constructor for {@link HttpHost HttpHost}.
-     * 
-     * @param httphost the HTTP host to copy details from
-     */
-    public HttpHost (final HttpHost httphost) {
-        this(httphost.hostname, httphost.port, httphost.schemeName);
-    }
-
-    /**
-     * Returns the host name.
-     * 
-     * @return the host name (IP or DNS name)
-     */
-    public String getHostName() {
-        return this.hostname;
-    }
-
-    /**
-     * Returns the port.
-     * 
-     * @return the host port, or <code>-1</code> if not set
-     */
-    public int getPort() {
-        return this.port;
-    }
-
-    /**
-     * Returns the scheme name.
-     *
-     * @return the scheme name
-     */
-    public String getSchemeName() {
-        return this.schemeName;
-    }
-
-    /**
-     * Return the host URI, as a string.
-     * 
-     * @return the host URI
-     */
-    public String toURI() {
-        CharArrayBuffer buffer = new CharArrayBuffer(32);        
-        buffer.append(this.schemeName);
-        buffer.append("://");
-        buffer.append(this.hostname);
-        if (this.port != -1) {
-            buffer.append(':');
-            buffer.append(Integer.toString(this.port));
-        }
-        return buffer.toString();
-    }
-
-
-    /**
-     * Obtains the host string, without scheme prefix.
-     *
-     * @return  the host string, for example <code>localhost:8080</code>
-     */
-    public String toHostString() {
-        CharArrayBuffer buffer = new CharArrayBuffer(32);        
-        buffer.append(this.hostname);
-        if (this.port != -1) {
-            buffer.append(':');
-            buffer.append(Integer.toString(this.port));
-        }
-        return buffer.toString();
-    }
-
-
-    public String toString() {
-        return toURI();
-    }    
-    
-
-    public boolean equals(final Object obj) {
-        if (obj == null) return false;
-        if (this == obj) return true;
-        if (obj instanceof HttpHost) {
-            HttpHost that = (HttpHost) obj;
-            return this.lcHostname.equals(that.lcHostname) 
-                && this.port == that.port
-                && this.schemeName.equals(that.schemeName);
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        int hash = LangUtils.HASH_SEED;
-        hash = LangUtils.hashCode(hash, this.lcHostname);
-        hash = LangUtils.hashCode(hash, this.port);
-        hash = LangUtils.hashCode(hash, this.schemeName);
-        return hash;
-    }
-
-    public Object clone() throws CloneNotSupportedException {
-        return super.clone();
-    }
-    
-}
diff --git a/src/org/apache/http/HttpInetConnection.java b/src/org/apache/http/HttpInetConnection.java
deleted file mode 100644
index 32ac04a..0000000
--- a/src/org/apache/http/HttpInetConnection.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpInetConnection.java $
- * $Revision: 613298 $
- * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 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;
-
-import java.net.InetAddress;
-
-/**
- * An HTTP connection over the Internet Protocol (IP).
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 613298 $
- * 
- * @since 4.0
- */
-public interface HttpInetConnection extends HttpConnection {
-
-    InetAddress getLocalAddress();
-
-    int getLocalPort();
-    
-    InetAddress getRemoteAddress();
-
-    int getRemotePort();
-    
-}
diff --git a/src/org/apache/http/HttpMessage.java b/src/org/apache/http/HttpMessage.java
deleted file mode 100644
index d24f0b4..0000000
--- a/src/org/apache/http/HttpMessage.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpMessage.java $
- * $Revision: 610823 $
- * $Date: 2008-01-10 07:53:53 -0800 (Thu, 10 Jan 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;
-
-import org.apache.http.params.HttpParams;
-
-/**
- * A generic HTTP message.
- * Holds what is common between requests and responses.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 610823 $
- * 
- * @since 4.0
- */
-public interface HttpMessage {
-    
-    /**
-     * Returns the protocol version this message is compatible with.
-     */
-    ProtocolVersion getProtocolVersion();
-
-    /**
-     * Checks if a certain header is present in this message. Header values are
-     * ignored.
-     * 
-     * @param name the header name to check for.
-     * @return true if at least one header with this name is present.
-     */
-    boolean containsHeader(String name);
-    
-    /**
-     * Returns all the headers with a specified name of this message. Header values
-     * are ignored. Headers are orderd in the sequence they will be sent over a
-     * connection.
-     * 
-     * @param name the name of the headers to return.
-     * @return the headers whose name property equals <code>name</code>.
-     */
-    Header[] getHeaders(String name);
-
-    /**
-     * Returns the first header with a specified name of this message. Header
-     * values are ignored. If there is more than one matching header in the
-     * message the first element of {@link #getHeaders(String)} is returned.
-     * If there is no matching header in the message <code>null</code> is 
-     * returned.
-     * 
-     * @param name the name of the header to return.
-     * @return the first header whose name property equals <code>name</code>
-     *   or <code>null</code> if no such header could be found.
-     */
-    Header getFirstHeader(String name);
-
-    /**
-     * Returns the last header with a specified name of this message. Header values
-     * are ignored. If there is more than one matching header in the message the
-     * last element of {@link #getHeaders(String)} is returned. If there is no 
-     * matching header in the message <code>null</code> is returned.
-     * 
-     * @param name the name of the header to return.
-     * @return the last header whose name property equals <code>name</code>.
-     *   or <code>null</code> if no such header could be found.
-     */
-    Header getLastHeader(String name);
-
-    /**
-     * Returns all the headers of this message. Headers are orderd in the sequence
-     * they will be sent over a connection.
-     * 
-     * @return all the headers of this message
-     */
-    Header[] getAllHeaders();
-
-    /**
-     * Adds a header to this message. The header will be appended to the end of
-     * the list.
-     * 
-     * @param header the header to append.
-     */
-    void addHeader(Header header);
-
-    /**
-     * Adds a header to this message. The header will be appended to the end of
-     * the list.
-     * 
-     * @param name the name of the header.
-     * @param value the value of the header.
-     */
-    void addHeader(String name, String value);
-
-    /**
-     * Overwrites the first header with the same name. The new header will be appended to 
-     * the end of the list, if no header with the given name can be found.
-     * 
-     * @param header the header to set.
-     */
-    void setHeader(Header header);
-
-    /**
-     * Overwrites the first header with the same name. The new header will be appended to 
-     * the end of the list, if no header with the given name can be found.
-     * 
-     * @param name the name of the header.
-     * @param value the value of the header.
-     */
-    void setHeader(String name, String value);
-
-    /**
-     * Overwrites all the headers in the message.
-     * 
-     * @param headers the array of headers to set.
-     */
-    void setHeaders(Header[] headers);
-
-    /**
-     * Removes a header from this message.
-     * 
-     * @param header the header to remove.
-     */
-    void removeHeader(Header header);
-    
-    /**
-     * Removes all headers with a certain name from this message.
-     * 
-     * @param name The name of the headers to remove.
-     */
-    void removeHeaders(String name);
-    
-    /**
-     * Returns an iterator of all the headers.
-     * 
-     * @return Iterator that returns Header objects in the sequence they are
-     *         sent over a connection.
-     */
-    HeaderIterator headerIterator();
-
-    /**
-     * Returns an iterator of the headers with a given name.
-     *
-     * @param name      the name of the headers over which to iterate, or
-     *                  <code>null</code> for all headers
-     *
-     * @return Iterator that returns Header objects with the argument name
-     *         in the sequence they are sent over a connection.
-     */
-    HeaderIterator headerIterator(String name);
-
-    /**
-     * Returns the parameters effective for this message as set by
-     * {@link #setParams(HttpParams)}.
-     */
-    HttpParams getParams();
-
-    /**
-     * Provides parameters to be used for the processing of this message.
-     * @param params the parameters
-     */
-    void setParams(HttpParams params);
-        
-}
diff --git a/src/org/apache/http/HttpRequest.java b/src/org/apache/http/HttpRequest.java
deleted file mode 100644
index 8558a97..0000000
--- a/src/org/apache/http/HttpRequest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpRequest.java $
- * $Revision: 528428 $
- * $Date: 2007-04-13 03:26:04 -0700 (Fri, 13 Apr 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;
-
-/**
- * An HTTP request.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 528428 $
- * 
- * @since 4.0
- */
-public interface HttpRequest extends HttpMessage {
-
-    /**
-     * Returns the request line of this request.
-     * @return the request line.
-     */
-    RequestLine getRequestLine();
-    
-}
diff --git a/src/org/apache/http/HttpRequestFactory.java b/src/org/apache/http/HttpRequestFactory.java
deleted file mode 100644
index d385127..0000000
--- a/src/org/apache/http/HttpRequestFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpRequestFactory.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;
-
-/**
- * A factory for {@link HttpRequest HttpRequest} objects.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618017 $
- * 
- * @since 4.0
- */
-public interface HttpRequestFactory {
-    
-    HttpRequest newHttpRequest(RequestLine requestline) 
-        throws MethodNotSupportedException;
-    
-    HttpRequest newHttpRequest(String method, String uri) 
-            throws MethodNotSupportedException;
-    
-}
diff --git a/src/org/apache/http/HttpRequestInterceptor.java b/src/org/apache/http/HttpRequestInterceptor.java
deleted file mode 100644
index db2194f..0000000
--- a/src/org/apache/http/HttpRequestInterceptor.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpRequestInterceptor.java $
- * $Revision: 618367 $
- * $Date: 2008-02-04 10:26:06 -0800 (Mon, 04 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;
-
-import java.io.IOException;
-
-import org.apache.http.protocol.HttpContext;
-
-
-/**
- * Processes a request.
- * Provides the ability to process a request before it is sent
- * to the server or after it has received on the server side.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 618367 $
- * 
- * @since 4.0
- */
-public interface HttpRequestInterceptor {
-
-    /**
-     * Processes a request.
-     * On the client side, this step is performed before the request is
-     * sent to the server. On the server side, this step is performed
-     * on incoming messages before the message body is evaluated.
-     *
-     * @param request   the request to preprocess
-     * @param context   the context for the request
-     *
-     * @throws IOException      in case of an IO problem
-     * @throws HttpException    in case of a protocol or other problem
-     */
-    void process(HttpRequest request, HttpContext context) 
-        throws HttpException, IOException;
-    
-}
diff --git a/src/org/apache/http/HttpResponse.java b/src/org/apache/http/HttpResponse.java
deleted file mode 100644
index f232f86..0000000
--- a/src/org/apache/http/HttpResponse.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/HttpResponse.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;
-
-
-import java.util.Locale;
-
-
-/**
- * An HTTP response.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 652956 $
- * 
- * @since 4.0
- */
-public interface HttpResponse extends HttpMessage {
-
-    /**
-     * Obtains the status line of this response.
-     * The status line can be set using one of the
-     * {@link #setStatusLine setStatusLine} methods,
-     * or it can be initialized in a constructor.
-     *
-     * @return  the status line, or <code>null</code> if not yet set
-     */
-    StatusLine getStatusLine();
-
-    /**
-     * Sets the status line of this response.
-     *
-     * @param statusline the status line of this response
-     */
-    void setStatusLine(StatusLine statusline);
-
-    /**
-     * Sets the status line of this response.
-     * The reason phrase will be determined based on the current
-     * {@link #getLocale locale}.
-     *
-     * @param ver       the HTTP version
-     * @param code      the status code
-     */
-    void setStatusLine(ProtocolVersion ver, int code);
-
-    /**
-     * Sets the status line of this response with a reason phrase.
-     *
-     * @param ver       the HTTP version
-     * @param code      the status code
-     * @param reason    the reason phrase, or <code>null</code> to omit
-     */
-    void setStatusLine(ProtocolVersion ver, int code, String reason);
-    
-    /**
-     * Updates the status line of this response with a new status code.
-     * The status line can only be updated if it is available. It must
-     * have been set either explicitly or in a constructor.
-     * <br/>
-     * The reason phrase will be updated according to the new status code,
-     * based on the current {@link #getLocale locale}. It can be set
-     * explicitly using {@link #setReasonPhrase setReasonPhrase}.
-     * 
-     * @param code the HTTP status code.
-     *
-     * @throws IllegalStateException
-     *          if the status line has not be set
-     *
-     * @see HttpStatus
-     * @see #setStatusLine(StatusLine)
-     * @see #setStatusLine(ProtocolVersion,int)
-     */
-    void setStatusCode(int code)
-        throws IllegalStateException;
-
-    /**
-     * Updates the status line of this response with a new reason phrase.
-     * The status line can only be updated if it is available. It must
-     * have been set either explicitly or in a constructor.
-     *
-     * @param reason    the new reason phrase as a single-line string, or
-     *                  <code>null</code> to unset the reason phrase
-     *
-     * @throws IllegalStateException
-     *          if the status line has not be set
-     *
-     * @see #setStatusLine(StatusLine)
-     * @see #setStatusLine(ProtocolVersion,int)
-     */
-    void setReasonPhrase(String reason)
-        throws IllegalStateException;
-
-    /**
-     * Obtains the message entity of this response, if any.
-     * The entity is provided by calling {@link #setEntity setEntity}.
-     *
-     * @return  the response entity, or
-     *          <code>null</code> if there is none
-     */
-    HttpEntity getEntity();
-    
-    /**
-     * Associates a response entity with this response.
-     *
-     * @param entity    the entity to associate with this response, or
-     *                  <code>null</code> to unset
-     */
-    void setEntity(HttpEntity entity);
-
-    /**
-     * Obtains the locale of this response.
-     * The locale is used to determine the reason phrase
-     * for the {@link #setStatusCode status code}.
-     * It can be changed using {@link #setLocale setLocale}.
-     *
-     * @return  the locale of this response, never <code>null</code>
-     */
-    Locale getLocale();
-
-    /**
-     * Changes the locale of this response.
-     * If there is a status line, it's reason phrase will be updated
-     * according to the status code and new locale.
-     *
-     * @param loc       the new locale
-     *
-     * @see #getLocale getLocale
-     * @see #setStatusCode setStatusCode
-     */
-    void setLocale(Locale loc);
-}
diff --git a/src/org/apache/http/HttpResponseFactory.java b/src/org/apache/http/HttpResponseFactory.java
deleted file mode 100644
index 3ed06ff..0000000
--- a/src/org/apache/http/HttpResponseFactory.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpResponseFactory.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;
-
-import org.apache.http.protocol.HttpContext;
-
-
-/**
- * A factory for {@link HttpResponse HttpResponse} objects.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 573864 $
- * 
- * @since 4.0
- */
-public interface HttpResponseFactory {
-
-    /**
-     * Creates a new response from status line elements.
-     *
-     * @param ver       the protocol version
-     * @param status    the status code
-     * @param context   the context from which to determine the locale
-     *                  for looking up a reason phrase to the status code, or
-     *                  <code>null</code> to use the default locale
-     *
-     * @return  the new response with an initialized status line
-     */    
-    HttpResponse newHttpResponse(ProtocolVersion ver, int status,
-                                 HttpContext context);
-    
-    /**
-     * Creates a new response from a status line.
-     *
-     * @param statusline the status line
-     * @param context    the context from which to determine the locale
-     *                   for looking up a reason phrase if the status code
-     *                   is updated, or
-     *                   <code>null</code> to use the default locale
-     *
-     * @return  the new response with the argument status line
-     */    
-    HttpResponse newHttpResponse(StatusLine statusline,
-                                 HttpContext context);
-    
-}
diff --git a/src/org/apache/http/HttpResponseInterceptor.java b/src/org/apache/http/HttpResponseInterceptor.java
deleted file mode 100644
index cae1526..0000000
--- a/src/org/apache/http/HttpResponseInterceptor.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpResponseInterceptor.java $
- * $Revision: 618367 $
- * $Date: 2008-02-04 10:26:06 -0800 (Mon, 04 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;
-
-import java.io.IOException;
-
-import org.apache.http.protocol.HttpContext;
-
-/**
- * Processes a response.
- * Provides the ability to process a response before it is sent
- * to the client or after it has been received on the client side.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 618367 $
- * 
- * @since 4.0
- */
-public interface HttpResponseInterceptor {
-
-    /**
-     * Processes a response.
-     * On the server side, this step is performed before the response is
-     * sent to the client. On the client side, this step is performed
-     * on incoming messages before the message body is evaluated.
-     *
-     * @param response  the response to postprocess
-     * @param context   the context for the request
-     *
-     * @throws IOException      in case of an IO problem
-     * @throws HttpException    in case of a protocol or other problem
-     */
-    void process(HttpResponse response, HttpContext context) 
-        throws HttpException, IOException;
-
-}
diff --git a/src/org/apache/http/HttpServerConnection.java b/src/org/apache/http/HttpServerConnection.java
deleted file mode 100644
index 8cea544..0000000
--- a/src/org/apache/http/HttpServerConnection.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpServerConnection.java $
- * $Revision: 542199 $
- * $Date: 2007-05-28 04:23:46 -0700 (Mon, 28 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/>.
- *
- */
-
-package org.apache.http;
-
-import java.io.IOException;
-
-/**
- * An HTTP connection for use on the server side.
- * Requests are received, responses are sent.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 542199 $
- * 
- * @since 4.0
- */
-public interface HttpServerConnection extends HttpConnection {
-
-    /**
-     * Receives the request line and all headers available from this connection.
-     * The caller should examine the returned request and decide if to receive a
-     * request entity as well.
-     * 
-     * @return a new HttpRequest object whose request line and headers are
-     *         initialized.
-     * @throws HttpException
-     * @throws IOException
-     */
-    HttpRequest receiveRequestHeader() 
-        throws HttpException, IOException;
-
-    /**
-     * Receives the next request entity available from this connection and attaches it to 
-     * an existing request. 
-     * @param request the request to attach the entity to.
-     * @throws HttpException
-     * @throws IOException
-     */
-    void receiveRequestEntity(HttpEntityEnclosingRequest request) 
-        throws HttpException, IOException;
-
-    /**
-     * Sends the response line and headers of a response over this connection.
-     * @param response the response whose headers to send.
-     * @throws HttpException
-     * @throws IOException
-     */
-    void sendResponseHeader(HttpResponse response) 
-        throws HttpException, IOException;
-    
-    /**
-     * Sends the response entity of a response over this connection.
-     * @param response the response whose entity to send.
-     * @throws HttpException
-     * @throws IOException
-     */
-    void sendResponseEntity(HttpResponse response) 
-        throws HttpException, IOException;
-    
-    /**
-     * Sends all pending buffered data over this connection.
-     * @throws IOException
-     */
-    void flush()
-        throws IOException;
-    
-}
diff --git a/src/org/apache/http/HttpStatus.java b/src/org/apache/http/HttpStatus.java
deleted file mode 100644
index f8f7f5d..0000000
--- a/src/org/apache/http/HttpStatus.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpStatus.java $
- * $Revision: 503381 $
- * $Date: 2007-02-04 02:59:10 -0800 (Sun, 04 Feb 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;
-
-/**
- * Constants enumerating the HTTP status codes.
- * All status codes defined in RFC1945 (HTTP/1.0), RFC2616 (HTTP/1.1), and
- * RFC2518 (WebDAV) are listed.
- * 
- * @see StatusLine
- * @author Unascribed
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- * 
- * @version $Revision: 503381 $
- */
-public interface HttpStatus {
-
-    // --- 1xx Informational ---
-
-    /** <tt>100 Continue</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_CONTINUE = 100;
-    /** <tt>101 Switching Protocols</tt> (HTTP/1.1 - RFC 2616)*/
-    public static final int SC_SWITCHING_PROTOCOLS = 101;
-    /** <tt>102 Processing</tt> (WebDAV - RFC 2518) */
-    public static final int SC_PROCESSING = 102;
-
-    // --- 2xx Success ---
-
-    /** <tt>200 OK</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_OK = 200;
-    /** <tt>201 Created</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_CREATED = 201;
-    /** <tt>202 Accepted</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_ACCEPTED = 202;
-    /** <tt>203 Non Authoritative Information</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
-    /** <tt>204 No Content</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_NO_CONTENT = 204;
-    /** <tt>205 Reset Content</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_RESET_CONTENT = 205;
-    /** <tt>206 Partial Content</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_PARTIAL_CONTENT = 206;
-    /** 
-     * <tt>207 Multi-Status</tt> (WebDAV - RFC 2518) or <tt>207 Partial Update
-     * OK</tt> (HTTP/1.1 - draft-ietf-http-v11-spec-rev-01?)
-     */
-    public static final int SC_MULTI_STATUS = 207;
-
-    // --- 3xx Redirection ---
-
-    /** <tt>300 Mutliple Choices</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_MULTIPLE_CHOICES = 300;
-    /** <tt>301 Moved Permanently</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_MOVED_PERMANENTLY = 301;
-    /** <tt>302 Moved Temporarily</tt> (Sometimes <tt>Found</tt>) (HTTP/1.0 - RFC 1945) */
-    public static final int SC_MOVED_TEMPORARILY = 302;
-    /** <tt>303 See Other</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_SEE_OTHER = 303;
-    /** <tt>304 Not Modified</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_NOT_MODIFIED = 304;
-    /** <tt>305 Use Proxy</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_USE_PROXY = 305;
-    /** <tt>307 Temporary Redirect</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_TEMPORARY_REDIRECT = 307;
-
-    // --- 4xx Client Error ---
-
-    /** <tt>400 Bad Request</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_BAD_REQUEST = 400;
-    /** <tt>401 Unauthorized</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_UNAUTHORIZED = 401;
-    /** <tt>402 Payment Required</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_PAYMENT_REQUIRED = 402;
-    /** <tt>403 Forbidden</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_FORBIDDEN = 403;
-    /** <tt>404 Not Found</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_NOT_FOUND = 404;
-    /** <tt>405 Method Not Allowed</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_METHOD_NOT_ALLOWED = 405;
-    /** <tt>406 Not Acceptable</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_NOT_ACCEPTABLE = 406;
-    /** <tt>407 Proxy Authentication Required</tt> (HTTP/1.1 - RFC 2616)*/
-    public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
-    /** <tt>408 Request Timeout</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_REQUEST_TIMEOUT = 408;
-    /** <tt>409 Conflict</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_CONFLICT = 409;
-    /** <tt>410 Gone</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_GONE = 410;
-    /** <tt>411 Length Required</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_LENGTH_REQUIRED = 411;
-    /** <tt>412 Precondition Failed</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_PRECONDITION_FAILED = 412;
-    /** <tt>413 Request Entity Too Large</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_REQUEST_TOO_LONG = 413;
-    /** <tt>414 Request-URI Too Long</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_REQUEST_URI_TOO_LONG = 414;
-    /** <tt>415 Unsupported Media Type</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
-    /** <tt>416 Requested Range Not Satisfiable</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
-    /** <tt>417 Expectation Failed</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_EXPECTATION_FAILED = 417;
-
-    /**
-     * Static constant for a 418 error.
-     * <tt>418 Unprocessable Entity</tt> (WebDAV drafts?)
-     * or <tt>418 Reauthentication Required</tt> (HTTP/1.1 drafts?)
-     */
-    // not used
-    // public static final int SC_UNPROCESSABLE_ENTITY = 418;
-
-    /**
-     * Static constant for a 419 error.
-     * <tt>419 Insufficient Space on Resource</tt>
-     * (WebDAV - draft-ietf-webdav-protocol-05?)
-     * or <tt>419 Proxy Reauthentication Required</tt>
-     * (HTTP/1.1 drafts?)
-     */
-    public static final int SC_INSUFFICIENT_SPACE_ON_RESOURCE = 419;
-    /**
-     * Static constant for a 420 error.
-     * <tt>420 Method Failure</tt>
-     * (WebDAV - draft-ietf-webdav-protocol-05?)
-     */
-    public static final int SC_METHOD_FAILURE = 420;
-    /** <tt>422 Unprocessable Entity</tt> (WebDAV - RFC 2518) */
-    public static final int SC_UNPROCESSABLE_ENTITY = 422;
-    /** <tt>423 Locked</tt> (WebDAV - RFC 2518) */
-    public static final int SC_LOCKED = 423;
-    /** <tt>424 Failed Dependency</tt> (WebDAV - RFC 2518) */
-    public static final int SC_FAILED_DEPENDENCY = 424;
-
-    // --- 5xx Server Error ---
-
-    /** <tt>500 Server Error</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_INTERNAL_SERVER_ERROR = 500;
-    /** <tt>501 Not Implemented</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_NOT_IMPLEMENTED = 501;
-    /** <tt>502 Bad Gateway</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_BAD_GATEWAY = 502;
-    /** <tt>503 Service Unavailable</tt> (HTTP/1.0 - RFC 1945) */
-    public static final int SC_SERVICE_UNAVAILABLE = 503;
-    /** <tt>504 Gateway Timeout</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_GATEWAY_TIMEOUT = 504;
-    /** <tt>505 HTTP Version Not Supported</tt> (HTTP/1.1 - RFC 2616) */
-    public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
-
-    /** <tt>507 Insufficient Storage</tt> (WebDAV - RFC 2518) */
-    public static final int SC_INSUFFICIENT_STORAGE = 507;
-
-}
diff --git a/src/org/apache/http/HttpVersion.java b/src/org/apache/http/HttpVersion.java
deleted file mode 100644
index 243f199..0000000
--- a/src/org/apache/http/HttpVersion.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpVersion.java $
- * $Revision: 609106 $
- * $Date: 2008-01-05 01:15:42 -0800 (Sat, 05 Jan 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;
-
-import java.io.Serializable;
-
-/**
- * Represents an HTTP version, as specified in RFC 2616.
- * 
- * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 609106 $ $Date: 2008-01-05 01:15:42 -0800 (Sat, 05 Jan 2008) $
- */
-public final class HttpVersion extends ProtocolVersion
-    implements Serializable {
-
-    private static final long serialVersionUID = -5856653513894415344L;
-
-    /** The protocol name. */
-    public static final String HTTP = "HTTP";
-    
-    /** HTTP protocol version 0.9 */
-    public static final HttpVersion HTTP_0_9 = new HttpVersion(0, 9);  
-
-    /** HTTP protocol version 1.0 */
-    public static final HttpVersion HTTP_1_0 = new HttpVersion(1, 0);  
-
-    /** HTTP protocol version 1.1 */
-    public static final HttpVersion HTTP_1_1 = new HttpVersion(1, 1);  
-
-    
-    /**
-     * Create an HTTP protocol version designator.
-     *
-     * @param major   the major version number of the HTTP protocol
-     * @param minor   the minor version number of the HTTP protocol
-     * 
-     * @throws IllegalArgumentException if either major or minor version number is negative
-     */
-    public HttpVersion(int major, int minor) {
-        super(HTTP, major, minor);
-    }
-
-
-    /**
-     * Obtains a specific HTTP version.
-     *
-     * @param major     the major version
-     * @param minor     the minor version
-     *
-     * @return  an instance of {@link HttpVersion} with the argument version
-     */
-    public ProtocolVersion forVersion(int major, int minor) {
-
-        if ((major == this.major) && (minor == this.minor)) {
-            return this;
-        }
-
-        if (major == 1) {
-            if (minor == 0) {
-                return HTTP_1_0;
-            }
-            if (minor == 1) {
-                return HTTP_1_1;
-            }
-        }
-        if ((major == 0) && (minor == 9)) {
-            return HTTP_0_9;
-        }
-
-        // argument checking is done in the constructor
-        return new HttpVersion(major, minor);
-    }
-
-}
diff --git a/src/org/apache/http/MalformedChunkCodingException.java b/src/org/apache/http/MalformedChunkCodingException.java
deleted file mode 100644
index 2267a2e..0000000
--- a/src/org/apache/http/MalformedChunkCodingException.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/MalformedChunkCodingException.java $
- * $Revision: 609106 $
- * $Date: 2008-01-05 01:15:42 -0800 (Sat, 05 Jan 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;
-
-import java.io.IOException;
-
-/**
- * Signals a malformed chunked stream.
- */
-public class MalformedChunkCodingException extends IOException {
-
-    private static final long serialVersionUID = 2158560246948994524L;
-
-    /**
-     * Creates a MalformedChunkCodingException without a detail message.
-     */
-    public MalformedChunkCodingException() {
-        super();
-    }
-
-    /**
-     * Creates a MalformedChunkCodingException with the specified detail message.
-     * 
-     * @param message The exception detail message 
-     */
-    public MalformedChunkCodingException(final String message) {
-        super(message);
-    }
-
-}
diff --git a/src/org/apache/http/MethodNotSupportedException.java b/src/org/apache/http/MethodNotSupportedException.java
deleted file mode 100644
index 3ccf72d..0000000
--- a/src/org/apache/http/MethodNotSupportedException.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/MethodNotSupportedException.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;
-
-
-/**
- * Indicates that an HTTP method is not supported.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618017 $
- * 
- * @since 4.0
- */
-public class MethodNotSupportedException extends HttpException {
-
-    private static final long serialVersionUID = 3365359036840171201L;
-    
-    /**
-     * Creates a new MethodNotSupportedException with the specified detail message.
-     * 
-     * @param message The exception detail message
-     */
-    public MethodNotSupportedException(final String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new MethodNotSupportedException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public MethodNotSupportedException(final String message, final Throwable cause) {
-        super(message, cause);
-    }
-}
diff --git a/src/org/apache/http/NameValuePair.java b/src/org/apache/http/NameValuePair.java
deleted file mode 100644
index 1ab861a..0000000
--- a/src/org/apache/http/NameValuePair.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/NameValuePair.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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;
-
-/**
- * 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 interface NameValuePair {
-
-    String getName();
-
-    String getValue();
-      
-}
diff --git a/src/org/apache/http/NoHttpResponseException.java b/src/org/apache/http/NoHttpResponseException.java
deleted file mode 100644
index a02ef5a..0000000
--- a/src/org/apache/http/NoHttpResponseException.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/NoHttpResponseException.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;
-
-import java.io.IOException;
-
-/**
- * <p>
- * Signals that the target server failed to respond with a valid HTTP response.
- * </p>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 618017 $
- */
-public class NoHttpResponseException extends IOException {
-
-    private static final long serialVersionUID = -7658940387386078766L;
-    
-    /**
-     * Creates a new NoHttpResponseException with the specified detail message.
-     *
-     * @param message exception message
-     */
-    public NoHttpResponseException(String message) {
-        super(message);
-    }
-
-}
diff --git a/src/org/apache/http/ParseException.java b/src/org/apache/http/ParseException.java
deleted file mode 100644
index 97083b2..0000000
--- a/src/org/apache/http/ParseException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/ParseException.java $
- * $Revision: 609106 $
- * $Date: 2008-01-05 01:15:42 -0800 (Sat, 05 Jan 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;
-
-/**
- * Indicates a parse error.
- * Parse errors when receiving a message will typically trigger
- * {@link ProtocolException}. Parse errors that do not occur during
- * protocol execution may be handled differently.
- * This is an unchecked exceptions, since there are cases where
- * the data to be parsed has been generated and is therefore
- * known to be parseable.
- * 
- * @since 4.0
- */
-public class ParseException extends RuntimeException {
-
-    private static final long serialVersionUID = -7288819855864183578L;
-
-    /**
-     * Creates a {@link ParseException} without details.
-     */
-    public ParseException() {
-        super();
-    }
-
-    /**
-     * Creates a {@link ParseException} with a detail message.
-     * 
-     * @param message the exception detail message, or <code>null</code>
-     */
-    public ParseException(String message) {
-        super(message);
-    }
-
-}
diff --git a/src/org/apache/http/ProtocolException.java b/src/org/apache/http/ProtocolException.java
deleted file mode 100644
index b4c34ee..0000000
--- a/src/org/apache/http/ProtocolException.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/ProtocolException.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;
-
-/**
- * Signals that an HTTP protocol violation has occurred.
- * For example a malformed status line or headers, a missing message body, etc.
- * 
- * @author <a href="mailto:laura@lwerner.org">Laura Werner</a>
- * 
- * @since 4.0
- */
-public class ProtocolException extends HttpException {
-
-    private static final long serialVersionUID = -2143571074341228994L;
-    
-    /**
-     * Creates a new ProtocolException with a <tt>null</tt> detail message. 
-     */
-    public ProtocolException() {
-        super();
-    }
-
-    /**
-     * Creates a new ProtocolException with the specified detail message.
-     * 
-     * @param message The exception detail message
-     */
-    public ProtocolException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new ProtocolException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public ProtocolException(String message, Throwable cause) {
-        super(message, cause);
-    }
-}
diff --git a/src/org/apache/http/ProtocolVersion.java b/src/org/apache/http/ProtocolVersion.java
deleted file mode 100644
index ced76a5..0000000
--- a/src/org/apache/http/ProtocolVersion.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/ProtocolVersion.java $
- * $Revision: 609106 $
- * $Date: 2008-01-05 01:15:42 -0800 (Sat, 05 Jan 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;
-
-import java.io.Serializable;
-import org.apache.http.util.CharArrayBuffer;
-
-
-/**
- * Represents a protocol version, as specified in RFC 2616.
- * RFC 2616 specifies only HTTP versions, like "HTTP/1.1" and "HTTP/1.0".
- * RFC 3261 specifies a message format that is identical to HTTP except
- * for the protocol name. It defines a protocol version "SIP/2.0".
- * There are some nitty-gritty differences between the interpretation
- * of versions in HTTP and SIP. In those cases, HTTP takes precedence.
- * <p>
- * This class defines a protocol version as a combination of
- * protocol name, major version number, and minor version number.
- * Note that {@link #equals} and {@link #hashCode} are defined as
- * final here, they cannot be overridden in derived classes.
- * 
- * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * 
- * @version $Revision: 609106 $
- */
-public class ProtocolVersion implements Serializable, Cloneable {
-
-    private static final long serialVersionUID = 8950662842175091068L;
-
-
-    /** Name of the protocol. */
-    protected final String protocol;
-
-    /** Major version number of the protocol */
-    protected final int major;
-
-    /** Minor version number of the protocol */
-    protected final int minor;
-
-    
-    /**
-     * Create a protocol version designator.
-     *
-     * @param protocol   the name of the protocol, for example "HTTP"
-     * @param major      the major version number of the protocol
-     * @param minor      the minor version number of the protocol
-     */
-    public ProtocolVersion(String protocol, int major, int minor) {
-        if (protocol == null) {
-            throw new IllegalArgumentException
-                ("Protocol name must not be null.");
-        }
-        if (major < 0) {
-            throw new IllegalArgumentException
-                ("Protocol major version number must not be negative.");
-        }
-        if (minor < 0) {
-            throw new IllegalArgumentException
-                ("Protocol minor version number may not be negative");
-        }
-        this.protocol = protocol;
-        this.major = major;
-        this.minor = minor;
-    }
-
-    /**
-     * Returns the name of the protocol.
-     * 
-     * @return the protocol name
-     */
-    public final String getProtocol() {
-        return protocol;
-    }
-
-    /**
-     * Returns the major version number of the protocol.
-     * 
-     * @return the major version number.
-     */
-    public final int getMajor() {
-        return major;
-    }
-
-    /**
-     * Returns the minor version number of the HTTP protocol.
-     * 
-     * @return the minor version number.
-     */
-    public final int getMinor() {
-        return minor;
-    }
-
-
-    /**
-     * Obtains a specific version of this protocol.
-     * This can be used by derived classes to instantiate themselves instead
-     * of the base class, and to define constants for commonly used versions.
-     * <br/>
-     * The default implementation in this class returns <code>this</code>
-     * if the version matches, and creates a new {@link ProtocolVersion}
-     * otherwise.
-     *
-     * @param major     the major version
-     * @param minor     the minor version
-     *
-     * @return  a protocol version with the same protocol name
-     *          and the argument version
-     */
-    public ProtocolVersion forVersion(int major, int minor) {
-
-        if ((major == this.major) && (minor == this.minor)) {
-            return this;
-        }
-
-        // argument checking is done in the constructor
-        return new ProtocolVersion(this.protocol, major, minor);
-    }
-
-
-    /**
-     * Obtains a hash code consistent with {@link #equals}.
-     *
-     * @return  the hashcode of this protocol version
-     */
-    public final int hashCode() {
-        return this.protocol.hashCode() ^ (this.major * 100000) ^ this.minor;
-    }
-
-        
-    /**
-     * Checks equality of this protocol version with an object.
-     * The object is equal if it is a protocl version with the same
-     * protocol name, major version number, and minor version number.
-     * The specific class of the object is <i>not</i> relevant,
-     * instances of derived classes with identical attributes are
-     * equal to instances of the base class and vice versa.
-     *
-     * @param obj       the object to compare with
-     *
-     * @return  <code>true</code> if the argument is the same protocol version,
-     *          <code>false</code> otherwise
-     */
-    public final boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof ProtocolVersion)) {
-            return false;
-        }
-        ProtocolVersion that = (ProtocolVersion) obj;
-
-        return ((this.protocol.equals(that.protocol)) &&
-                (this.major == that.major) &&
-                (this.minor == that.minor));
-    }
-
-
-    /**
-     * Checks whether this protocol can be compared to another one.
-     * Only protocol versions with the same protocol name can be
-     * {@link #compareToVersion compared}.
-     *
-     * @param that      the protocol version to consider
-     *
-     * @return  <code>true</code> if {@link #compareToVersion compareToVersion}
-     *          can be called with the argument, <code>false</code> otherwise
-     */
-    public boolean isComparable(ProtocolVersion that) {
-        return (that != null) && this.protocol.equals(that.protocol);
-    }
-
-
-    /**
-     * Compares this protocol version with another one.
-     * Only protocol versions with the same protocol name can be compared.
-     * This method does <i>not</i> define a total ordering, as it would be
-     * required for {@link java.lang.Comparable}.
-     *
-     * @param that      the protocl version to compare with
-     *  
-     * @return   a negative integer, zero, or a positive integer
-     *           as this version is less than, equal to, or greater than
-     *           the argument version.
-     *
-     * @throws IllegalArgumentException
-     *         if the argument has a different protocol name than this object,
-     *         or if the argument is <code>null</code>
-     */
-    public int compareToVersion(ProtocolVersion that) {
-        if (that == null) {
-            throw new IllegalArgumentException
-                ("Protocol version must not be null."); 
-        }
-        if (!this.protocol.equals(that.protocol)) {
-            throw new IllegalArgumentException
-                ("Versions for different protocols cannot be compared. " +
-                 this + " " + that);
-        }
-
-        int delta = getMajor() - that.getMajor();
-        if (delta == 0) {
-            delta = getMinor() - that.getMinor();
-        }
-        return delta;
-    }
-
-
-    /**
-     * Tests if this protocol version is greater or equal to the given one.
-     *
-     * @param version   the version against which to check this version
-     *
-     * @return  <code>true</code> if this protocol version is
-     *          {@link #isComparable comparable} to the argument
-     *          and {@link #compareToVersion compares} as greater or equal,
-     *          <code>false</code> otherwise
-     */
-    public final boolean greaterEquals(ProtocolVersion version) {
-        return isComparable(version) && (compareToVersion(version) >= 0);
-    }
-
-
-    /**
-     * Tests if this protocol version is less or equal to the given one.
-     *
-     * @param version   the version against which to check this version
-     *
-     * @return  <code>true</code> if this protocol version is
-     *          {@link #isComparable comparable} to the argument
-     *          and {@link #compareToVersion compares} as less or equal,
-     *          <code>false</code> otherwise
-     */
-    public final boolean lessEquals(ProtocolVersion version) {
-        return isComparable(version) && (compareToVersion(version) <= 0);
-    }
-
-
-    /**
-     * Converts this protocol version to a string.
-     *
-     * @return  a protocol version string, like "HTTP/1.1"
-     */
-    public String toString() {
-        CharArrayBuffer buffer = new CharArrayBuffer(16);
-        buffer.append(this.protocol); 
-        buffer.append('/'); 
-        buffer.append(Integer.toString(this.major)); 
-        buffer.append('.'); 
-        buffer.append(Integer.toString(this.minor)); 
-        return buffer.toString();
-    }
-
-    public Object clone() throws CloneNotSupportedException {
-        return super.clone();
-    }
-    
-}
diff --git a/src/org/apache/http/ReasonPhraseCatalog.java b/src/org/apache/http/ReasonPhraseCatalog.java
deleted file mode 100644
index 12ad6d9..0000000
--- a/src/org/apache/http/ReasonPhraseCatalog.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/ReasonPhraseCatalog.java $
- * $Revision: 505744 $
- * $Date: 2007-02-10 10:58:45 -0800 (Sat, 10 Feb 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;
-
-import java.util.Locale;
-
-
-/**
- * Interface for obtaining reason phrases for HTTP status codes.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 505744 $
- * 
- * @since 4.0
- */
-public interface ReasonPhraseCatalog {
-
-    /**
-     * Obtains the reason phrase for a status code.
-     * The optional context allows for catalogs that detect
-     * the language for the reason phrase.
-     *
-     * @param status    the status code, in the range 100-599
-     * @param loc       the preferred locale for the reason phrase
-     *
-     * @return  the reason phrase, or <code>null</code> if unknown
-     */
-    public String getReason(int status, Locale loc)
-        ;
-
-}
diff --git a/src/org/apache/http/RequestLine.java b/src/org/apache/http/RequestLine.java
deleted file mode 100644
index e865929..0000000
--- a/src/org/apache/http/RequestLine.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/RequestLine.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;
-
-/**
- * The first line of an {@link 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>
- *
- * @version $Revision: 573864 $
- * 
- * @since 4.0
- */
-public interface RequestLine {
-
-    String getMethod();
-
-    ProtocolVersion getProtocolVersion();
-
-    String getUri();
-    
-}
diff --git a/src/org/apache/http/StatusLine.java b/src/org/apache/http/StatusLine.java
deleted file mode 100644
index aa8a3bc..0000000
--- a/src/org/apache/http/StatusLine.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/StatusLine.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;
-
-/**
- * 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.
- * Implementations are expected to be 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: StatusLine.java 573864 2007-09-08 15:53:25Z rolandw $
- * 
- * @since 4.0
- */
-public interface StatusLine {
-
-    ProtocolVersion getProtocolVersion();
-
-    int getStatusCode();
-
-    String getReasonPhrase();
-    
-}
diff --git a/src/org/apache/http/TokenIterator.java b/src/org/apache/http/TokenIterator.java
deleted file mode 100644
index bfe3473..0000000
--- a/src/org/apache/http/TokenIterator.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/TokenIterator.java $
- * $Revision: 601000 $
- * $Date: 2007-12-04 09:03:49 -0800 (Tue, 04 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;
-
-
-import java.util.Iterator;
-
-
-/**
- * An iterator for {@link String} tokens.
- * This interface is designed as a complement to
- * {@link HeaderElementIterator}, in cases where the items
- * are plain strings rather than full header elements.
- * 
- * @version $Revision: 601000 $
- */
-public interface TokenIterator extends Iterator {
-
-    /**
-     * Indicates whether there is another token in this iteration.
-     *
-     * @return  <code>true</code> if there is another token,
-     *          <code>false</code> otherwise
-     */
-    boolean hasNext()
-        ;
-
-
-    /**
-     * Obtains the next token from this iteration.
-     * This method should only be called while {@link #hasNext hasNext}
-     * is true.
-     *
-     * @return  the next token in this iteration
-     */
-    String nextToken()
-        ;
-}
diff --git a/src/org/apache/http/UnsupportedHttpVersionException.java b/src/org/apache/http/UnsupportedHttpVersionException.java
deleted file mode 100644
index 716d7a5..0000000
--- a/src/org/apache/http/UnsupportedHttpVersionException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $HeadURL:https://svn.apache.org/repos/asf/jakarta/httpcomponents/trunk/coyote-httpconnector/src/java/org/apache/http/tcconnector/UnsupportedHttpVersionException.java $
- * $Revision:379772 $
- * $Date:2006-02-22 14:52:29 +0100 (Wed, 22 Feb 2006) $
- *
- * ====================================================================
- * 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;
-
-import org.apache.http.ProtocolException;
-
-/**
- * Indicates an unsupported version of the HTTP protocol.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision:379772 $
- */
-public class UnsupportedHttpVersionException extends ProtocolException {
-
-    private static final long serialVersionUID = -1348448090193107031L;
-
-    
-    /**
-     * Creates an exception without a detail message.
-     */
-    public UnsupportedHttpVersionException() {
-        super();
-    }
-
-    /**
-     * Creates an exception with the specified detail message.
-     * 
-     * @param message The exception detail message 
-     */
-    public UnsupportedHttpVersionException(final String message) {
-        super(message);
-    }
-
-}
diff --git a/src/org/apache/http/auth/AUTH.java b/src/org/apache/http/auth/AUTH.java
deleted file mode 100644
index 8ab6dc2..0000000
--- a/src/org/apache/http/auth/AUTH.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/AUTH.java $
- * $Revision: 618365 $
- * $Date: 2008-02-04 10:20:08 -0800 (Mon, 04 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.auth;
-
-/**
- * Constants and static helpers related to the HTTP authentication.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public final class AUTH {
-
-    /**
-     * The www authenticate challange header.
-     */
-    public static final String WWW_AUTH = "WWW-Authenticate";
-
-    /**
-     * The www authenticate response header.
-     */
-    public static final String WWW_AUTH_RESP = "Authorization";
-
-    /**
-     * The proxy authenticate challange header.
-     */
-    public static final String PROXY_AUTH = "Proxy-Authenticate";
-
-    /**
-     * The proxy authenticate response header.
-     */
-    public static final String PROXY_AUTH_RESP = "Proxy-Authorization";
-    
-    private AUTH() {
-    }
-       
-}
diff --git a/src/org/apache/http/auth/AuthScheme.java b/src/org/apache/http/auth/AuthScheme.java
deleted file mode 100644
index bdaebdb..0000000
--- a/src/org/apache/http/auth/AuthScheme.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/AuthScheme.java $
- * $Revision: 537144 $
- * $Date: 2007-05-11 02:30:13 -0700 (Fri, 11 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/>.
- *
- */
-
-package org.apache.http.auth;
-
-import org.apache.http.Header;
-import org.apache.http.HttpRequest;
-
-/**
- * <p>
- * This interface represents an abstract challenge-response oriented 
- * authentication scheme.
- * </p>
- * <p>
- * An authentication scheme should be able to support the following
- * functions:
- * <ul>
- *   <li>Parse and process the challenge sent by the targer server
- *       in response to request for a protected resource
- *   <li>Provide its textual designation
- *   <li>Provide its parameters, if available
- *   <li>Provide the realm this authentication scheme is applicable to,
- *       if available
- *   <li>Generate authorization string for the given set of credentials,
- *       request method and URI as specificed in the HTTP request line
- *       in response to the actual authorization challenge
- * </ul>
- * </p>
- * <p>
- * Authentication schemes may ignore method name and URI parameters
- * if they are not relevant for the given authentication mechanism
- * </p>
- * <p>
- * Authentication schemes may be stateful involving a series of 
- * challenge-response exchanges
- * </p>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:adrian@ephox.com">Adrian Sutton</a>
- *
- * @since 4.0
- */
-
-public interface AuthScheme {
-
-    /**
-     * Processes the given challenge token. Some authentication schemes
-     * may involve multiple challenge-response exchanges. Such schemes must be able 
-     * to maintain the state information when dealing with sequential challenges 
-     * 
-     * @param header the challenge header
-     */
-    void processChallenge(final Header header) throws MalformedChallengeException;
-    
-    /**
-     * Returns textual designation of the given authentication scheme.
-     * 
-     * @return the name of the given authentication scheme
-     */
-    String getSchemeName();
-
-    /**
-     * Returns authentication parameter with the given name, if available.
-     * 
-     * @param name The name of the parameter to be returned
-     * 
-     * @return the parameter with the given name
-     */
-    String getParameter(final String name);
-
-    /**
-     * Returns authentication realm. If the concept of an authentication
-     * realm is not applicable to the given authentication scheme, returns
-     * <code>null</code>.
-     * 
-     * @return the authentication realm
-     */
-    String getRealm();
-    
-    /**
-     * Tests if the authentication scheme is provides authorization on a per
-     * connection basis instead of usual per request basis
-     * 
-     * @return <tt>true</tt> if the scheme is connection based, <tt>false</tt>
-     * if the scheme is request based.
-     */
-    boolean isConnectionBased();    
-    
-    /**
-     * Authentication process may involve a series of challenge-response exchanges.
-     * This method tests if the authorization process has been completed, either
-     * successfully or unsuccessfully, that is, all the required authorization 
-     * challenges have been processed in their entirety.
-     * 
-     * @return <tt>true</tt> if the authentication process has been completed, 
-     * <tt>false</tt> otherwise.
-     */
-    boolean isComplete();    
-
-    /**
-     * Produces an authorization string for the given set of {@link Credentials}.
-     * 
-     * @param credentials The set of credentials to be used for athentication
-     * @param request The request being authenticated
-     * @throws AuthenticationException if authorization string cannot 
-     *   be generated due to an authentication failure
-     * 
-     * @return the authorization string
-     */
-    Header authenticate(Credentials credentials, HttpRequest request) 
-            throws AuthenticationException;
-    
-}
diff --git a/src/org/apache/http/auth/AuthSchemeFactory.java b/src/org/apache/http/auth/AuthSchemeFactory.java
deleted file mode 100644
index 8f985b0..0000000
--- a/src/org/apache/http/auth/AuthSchemeFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/AuthSchemeFactory.java $
- * $Revision: 527900 $
- * $Date: 2007-04-12 05:35:25 -0700 (Thu, 12 Apr 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.auth;
-
-import org.apache.http.params.HttpParams;
-
-/**
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public interface AuthSchemeFactory {    
-
-    AuthScheme newInstance(HttpParams params);
-
-}
diff --git a/src/org/apache/http/auth/AuthSchemeRegistry.java b/src/org/apache/http/auth/AuthSchemeRegistry.java
deleted file mode 100644
index 62a5d4d..0000000
--- a/src/org/apache/http/auth/AuthSchemeRegistry.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/AuthSchemeRegistry.java $
- * $Revision: 652950 $
- * $Date: 2008-05-02 16:49:48 -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.auth;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.http.params.HttpParams;
-
-/**
- * Authentication scheme registry that can be used to obtain the corresponding
- * authentication scheme implementation for a given type of authorization challenge. 
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * @version $Revision: 652950 $
- * @since 4.0
- */
-public final class AuthSchemeRegistry {
-
-    private final Map<String,AuthSchemeFactory> registeredSchemes;
-    
-    public AuthSchemeRegistry() {
-        super();
-        this.registeredSchemes = new LinkedHashMap<String,AuthSchemeFactory>();
-    }
-    
-    /**
-     * Registers a {@link AuthSchemeFactory} with  the given identifier. If a factory with the 
-     * given name already exists it will be overridden. This name is the same one used to 
-     * retrieve the {@link AuthScheme authentication scheme} from {@link #getAuthScheme}.
-     * 
-     * <p>
-     * Please note that custom authentication preferences, if used, need to be updated accordingly 
-     * for the new {@link AuthScheme authentication scheme} to take effect.
-     * </p>    
-     * 
-     * @param name the identifier for this scheme
-     * @param factory the {@link AuthSchemeFactory} class to register
-     * 
-     * @see #getAuthScheme
-     */
-    public synchronized void register(
-            final String name, 
-            final AuthSchemeFactory factory) {
-         if (name == null) {
-             throw new IllegalArgumentException("Name may not be null");
-         }
-        if (factory == null) {
-            throw new IllegalArgumentException("Authentication scheme factory may not be null");
-        }
-        registeredSchemes.put(name.toLowerCase(Locale.ENGLISH), factory);
-    }
-
-    /**
-     * Unregisters the class implementing an {@link AuthScheme authentication scheme} with 
-     * the given name.
-     * 
-     * @param name the identifier of the class to unregister
-     */
-    public synchronized void unregister(final String name) {
-         if (name == null) {
-             throw new IllegalArgumentException("Name may not be null");
-         }
-        registeredSchemes.remove(name.toLowerCase(Locale.ENGLISH));
-    }
-
-    /**
-     * Gets the {@link AuthScheme authentication scheme} with the given name.
-     * 
-     * @param name the {@link AuthScheme authentication scheme} identifier
-     * @param params the {@link HttpParams HTTP parameters} for the authentication
-     *  scheme. 
-     * 
-     * @return {@link AuthScheme authentication scheme}
-     * 
-     * @throws IllegalStateException if a scheme with the given name cannot be found
-     */
-    public synchronized AuthScheme getAuthScheme(final String name, final HttpParams params) 
-        throws IllegalStateException {
-
-        if (name == null) {
-            throw new IllegalArgumentException("Name may not be null");
-        }
-        AuthSchemeFactory factory = registeredSchemes.get(name.toLowerCase(Locale.ENGLISH));
-        if (factory != null) {
-            return factory.newInstance(params);
-        } else {
-            throw new IllegalStateException("Unsupported authentication scheme: " + name);
-        }
-    } 
-
-    /**
-     * Obtains a list containing names of all registered {@link AuthScheme authentication 
-     * schemes} in their default order.
-     * 
-     * @return list of registered scheme names
-     */
-    public synchronized List<String> getSchemeNames() {
-        return new ArrayList<String>(registeredSchemes.keySet()); 
-    } 
- 
-    /**
-     * Populates the internal collection of registered {@link AuthScheme authentication schemes} 
-     * with the content of the map passed as a parameter.
-     * 
-     * @param map authentication schemes
-     */
-    public synchronized void setItems(final Map<String, AuthSchemeFactory> map) {
-        if (map == null) {
-            return;
-        }
-        registeredSchemes.clear();
-        registeredSchemes.putAll(map);
-    }
-    
-}
diff --git a/src/org/apache/http/auth/AuthScope.java b/src/org/apache/http/auth/AuthScope.java
deleted file mode 100644
index c9d7f56..0000000
--- a/src/org/apache/http/auth/AuthScope.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/AuthScope.java $
- * $Revision: 652950 $
- * $Date: 2008-05-02 16:49:48 -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.auth;
-
-import java.util.Locale;
-
-import org.apache.http.util.LangUtils;
-
-/** 
- * The class represents an authentication scope consisting of a host name,
- * a port number, a realm name and an authentication scheme name which 
- * {@link Credentials Credentials} apply to.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:adrian@intencha.com">Adrian Sutton</a>
- * 
- * @since 4.0
- */
-public class AuthScope {
-    
-    /** 
-     * The <tt>null</tt> value represents any host. In the future versions of 
-     * HttpClient the use of this parameter will be discontinued.  
-     */
-    public static final String ANY_HOST = null;
-
-    /** 
-     * The <tt>-1</tt> value represents any port.  
-     */
-    public static final int ANY_PORT = -1;
-
-    /** 
-     * The <tt>null</tt> value represents any realm.  
-     */
-    public static final String ANY_REALM = null;
-
-    /** 
-     * The <tt>null</tt> value represents any authentication scheme.  
-     */
-    public static final String ANY_SCHEME = null;
-    
-    /** 
-     * Default scope matching any host, port, realm and authentication scheme. 
-     * In the future versions of HttpClient the use of this parameter will be 
-     * discontinued.  
-     */
-    public static final AuthScope ANY = new AuthScope(ANY_HOST, ANY_PORT, ANY_REALM, ANY_SCHEME);
-
-    /** The authentication scheme the credentials apply to. */
-    private final String scheme;
-    
-    /** The realm the credentials apply to. */
-    private final String realm;
-    
-    /** The host the credentials apply to. */
-    private final String host;
-        
-    /** The port the credentials apply to. */
-    private final int port;
-        
-    /** Creates a new credentials scope for the given 
-     * <tt>host</tt>, <tt>port</tt>, <tt>realm</tt>, and 
-     * <tt>authentication scheme</tt>.
-     * 
-     * @param host the host the credentials apply to. May be set
-     *   to <tt>null</tt> if credenticals are applicable to
-     *   any host. 
-     * @param port the port the credentials apply to. May be set
-     *   to negative value if credenticals are applicable to
-     *   any port. 
-     * @param realm the realm the credentials apply to. May be set 
-     *   to <tt>null</tt> if credenticals are applicable to
-     *   any realm. 
-     * @param scheme the authentication scheme the credentials apply to. 
-     *   May be set to <tt>null</tt> if credenticals are applicable to
-     *   any authentication scheme. 
-     */
-    public AuthScope(final String host, int port, 
-        final String realm, final String scheme)
-    {
-        this.host =   (host == null)   ? ANY_HOST: host.toLowerCase(Locale.ENGLISH);
-        this.port =   (port < 0)       ? ANY_PORT: port;
-        this.realm =  (realm == null)  ? ANY_REALM: realm;
-        this.scheme = (scheme == null) ? ANY_SCHEME: scheme.toUpperCase(Locale.ENGLISH);
-    }
-    
-    /** Creates a new credentials scope for the given 
-     * <tt>host</tt>, <tt>port</tt>, <tt>realm</tt>, and any
-     * authentication scheme.
-     * 
-     * @param host the host the credentials apply to. May be set
-     *   to <tt>null</tt> if credenticals are applicable to
-     *   any host. 
-     * @param port the port the credentials apply to. May be set
-     *   to negative value if credenticals are applicable to
-     *   any port. 
-     * @param realm the realm the credentials apply to. May be set 
-     *   to <tt>null</tt> if credenticals are applicable to
-     *   any realm. 
-     */
-    public AuthScope(final String host, int port, final String realm) {
-        this(host, port, realm, ANY_SCHEME);
-    }
-    
-    /** Creates a new credentials scope for the given 
-     * <tt>host</tt>, <tt>port</tt>, any realm name, and any
-     * authentication scheme.
-     * 
-     * @param host the host the credentials apply to. May be set
-     *   to <tt>null</tt> if credenticals are applicable to
-     *   any host. 
-     * @param port the port the credentials apply to. May be set
-     *   to negative value if credenticals are applicable to
-     *   any port. 
-     */
-    public AuthScope(final String host, int port) {
-        this(host, port, ANY_REALM, ANY_SCHEME);
-    }
-    
-    /** 
-     * Creates a copy of the given credentials scope.
-     */
-    public AuthScope(final AuthScope authscope) {
-        super();
-        if (authscope == null) {
-            throw new IllegalArgumentException("Scope may not be null");
-        }
-        this.host = authscope.getHost();
-        this.port = authscope.getPort();
-        this.realm = authscope.getRealm();
-        this.scheme = authscope.getScheme();
-    }
-    
-    /**
-     * @return the host
-     */
-    public String getHost() {
-        return this.host;
-    }
-
-    /**
-     * @return the port
-     */
-    public int getPort() {
-        return this.port;
-    }
-
-    /**
-     * @return the realm name
-     */
-    public String getRealm() {
-        return this.realm;
-    }
-
-    /**
-     * @return the scheme type
-     */
-    public String getScheme() {
-        return this.scheme;
-    }
-
-    /**
-     * Tests if the authentication scopes match. 
-     * 
-     * @return the match factor. Negative value signifies no match. 
-     *    Non-negative signifies a match. The greater the returned value 
-     *    the closer the match.
-     */
-    public int match(final AuthScope that) {
-        int factor = 0;
-        if (LangUtils.equals(this.scheme, that.scheme)) {
-            factor += 1;
-        } else {
-            if (this.scheme != ANY_SCHEME && that.scheme != ANY_SCHEME) {
-                return -1;
-            }
-        }
-        if (LangUtils.equals(this.realm, that.realm)) {
-            factor += 2;
-        } else {
-            if (this.realm != ANY_REALM && that.realm != ANY_REALM) {
-                return -1;
-            }
-        }
-        if (this.port == that.port) {
-            factor += 4;
-        } else {
-            if (this.port != ANY_PORT && that.port != ANY_PORT) {
-                return -1;
-            }
-        }
-        if (LangUtils.equals(this.host, that.host)) {
-            factor += 8;
-        } else {
-            if (this.host != ANY_HOST && that.host != ANY_HOST) {
-                return -1;
-            }
-        }
-        return factor;
-    }
-
-    /**
-     * @see java.lang.Object#equals(Object)
-     */
-    @Override
-    public boolean equals(Object o) {
-        if (o == null) {
-            return false;
-        }
-        if (o == this) {
-            return true;
-        }
-        if (!(o instanceof AuthScope)) {
-            return super.equals(o);
-        }
-        AuthScope that = (AuthScope) o;
-        return 
-        LangUtils.equals(this.host, that.host) 
-          && this.port == that.port
-          && LangUtils.equals(this.realm, that.realm)
-          && LangUtils.equals(this.scheme, that.scheme);
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    @Override
-    public String toString() {
-        StringBuffer buffer = new StringBuffer();
-        if (this.scheme != null) {
-            buffer.append(this.scheme.toUpperCase(Locale.ENGLISH));
-            buffer.append(' ');
-        }
-        if (this.realm != null) {
-            buffer.append('\'');
-            buffer.append(this.realm);
-            buffer.append('\'');
-        } else {
-            buffer.append("<any realm>");
-        }
-        if (this.host != null) {
-            buffer.append('@');
-            buffer.append(this.host);
-            if (this.port >= 0) {
-                buffer.append(':');
-                buffer.append(this.port);
-            }
-        }
-        return buffer.toString();
-    }
-    
-    /**
-     * @see java.lang.Object#hashCode()
-     */
-    @Override
-    public int hashCode() {
-        int hash = LangUtils.HASH_SEED;
-        hash = LangUtils.hashCode(hash, this.host);
-        hash = LangUtils.hashCode(hash, this.port);
-        hash = LangUtils.hashCode(hash, this.realm);
-        hash = LangUtils.hashCode(hash, this.scheme);
-        return hash;
-    }
-}
diff --git a/src/org/apache/http/auth/AuthState.java b/src/org/apache/http/auth/AuthState.java
deleted file mode 100644
index f55bf86..0000000
--- a/src/org/apache/http/auth/AuthState.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/AuthState.java $
- * $Revision: 659971 $
- * $Date: 2008-05-25 05:01:22 -0700 (Sun, 25 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.auth;
-
-
-/**
- * This class provides detailed information about the state of the
- * authentication process.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public class AuthState {
-
-    /** Actual authentication scheme */
-    private AuthScheme authScheme;
-
-    /** Actual authentication scope */
-    private AuthScope authScope;
-    
-    /** Credentials selected for authentication */
-    private Credentials credentials;
-    
-    /**
-     * Default constructor.
-     * 
-     */
-    public AuthState() {
-        super();
-    }
-
-    /**
-     * Invalidates the authentication state by resetting its parameters.
-     */
-    public void invalidate() {
-        this.authScheme = null;
-        this.authScope = null;
-        this.credentials = null;
-    }
-
-    public boolean isValid() {
-        return this.authScheme != null;
-    }
-    
-    /**
-     * Assigns the given {@link AuthScheme authentication scheme}.
-     * 
-     * @param authScheme the {@link AuthScheme authentication scheme}
-     */
-    public void setAuthScheme(final AuthScheme authScheme) {
-        if (authScheme == null) {
-            invalidate();
-            return;
-        }
-        this.authScheme = authScheme;
-    }
-
-    /**
-     * Returns the {@link AuthScheme authentication scheme}.
-     * 
-     * @return {@link AuthScheme authentication scheme}
-     */
-    public AuthScheme getAuthScheme() {
-        return this.authScheme;
-    }
-    
-    
-    /** 
-     * Returns user {@link Credentials} selected for authentication if available
-     * 
-     * @return user credentials if available, <code>null</code otherwise
-     */
-    public Credentials getCredentials() {
-        return this.credentials;
-    }
-
-    
-    /** 
-     * Sets user {@link Credentials} to be used for authentication
-     * 
-     * @param credentials User credentials
-     */
-    public void setCredentials(final Credentials credentials) {
-        this.credentials = credentials;
-    }
-
-
-    /** 
-     * Returns actual {@link AuthScope} if available
-     * 
-     * @return actual authentication scope if available, <code>null</code otherwise
-     */
-     public AuthScope getAuthScope() {
-        return this.authScope;
-     }
-
-     /** 
-      * Sets actual {@link AuthScope}.
-      * 
-      * @param authScope Authentication scope
-      */
-     public void setAuthScope(final AuthScope authScope) {
-        this.authScope = authScope;
-     }
-
-     
-    @Override
-    public String toString() {
-        StringBuilder buffer = new StringBuilder();
-        buffer.append("auth scope [");
-        buffer.append(this.authScope);
-        buffer.append("]; credentials set [");
-        buffer.append(this.credentials != null ? "true" : "false");
-        buffer.append("]");
-        return buffer.toString();
-    }
-    
-}
diff --git a/src/org/apache/http/auth/AuthenticationException.java b/src/org/apache/http/auth/AuthenticationException.java
deleted file mode 100644
index 8b307be..0000000
--- a/src/org/apache/http/auth/AuthenticationException.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/AuthenticationException.java $
- * $Revision: 505684 $
- * $Date: 2007-02-10 04:40:02 -0800 (Sat, 10 Feb 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.auth;
-
-import org.apache.http.ProtocolException;
-
-/**
- * Signals a failure in authentication process
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class AuthenticationException extends ProtocolException {
-
-    private static final long serialVersionUID = -6794031905674764776L;
-
-    /**
-     * Creates a new AuthenticationException with a <tt>null</tt> detail message. 
-     */
-    public AuthenticationException() {
-        super();
-    }
-
-    /**
-     * Creates a new AuthenticationException with the specified message.
-     * 
-     * @param message the exception detail message
-     */
-    public AuthenticationException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new AuthenticationException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public AuthenticationException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-}
diff --git a/src/org/apache/http/auth/BasicUserPrincipal.java b/src/org/apache/http/auth/BasicUserPrincipal.java
deleted file mode 100644
index 2485011..0000000
--- a/src/org/apache/http/auth/BasicUserPrincipal.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/BasicUserPrincipal.java $
- * $Revision: 658430 $
- * $Date: 2008-05-20 14:04:27 -0700 (Tue, 20 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.auth;
-
-import java.security.Principal;
-
-import org.apache.http.util.LangUtils;
-
-/**
- * Basic user principal used for HTTP authentication
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public final class BasicUserPrincipal implements Principal {
-
-    private final String username;
-    
-    public BasicUserPrincipal(final String username) {
-        super();
-        if (username == null) {
-            throw new IllegalArgumentException("User name may not be null");
-        }
-        this.username = username;
-    }
-    
-    public String getName() {
-        return this.username;
-    }
-
-    @Override
-    public int hashCode() {
-        int hash = LangUtils.HASH_SEED;
-        hash = LangUtils.hashCode(hash, this.username);
-        return hash;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == null) return false;
-        if (this == o) return true;
-        if (o instanceof BasicUserPrincipal) {
-            BasicUserPrincipal that = (BasicUserPrincipal) o;
-            if (LangUtils.equals(this.username, that.username)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder buffer = new StringBuilder();
-        buffer.append("[principal: ");
-        buffer.append(this.username);
-        buffer.append("]");
-        return buffer.toString();
-    }
-
-}
-
diff --git a/src/org/apache/http/auth/Credentials.java b/src/org/apache/http/auth/Credentials.java
deleted file mode 100644
index 846a23b..0000000
--- a/src/org/apache/http/auth/Credentials.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/Credentials.java $
- * $Revision: 658430 $
- * $Date: 2008-05-20 14:04:27 -0700 (Tue, 20 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.auth;
-
-import java.security.Principal;
-
-/**
- * User name and password based authentication credentials.
- * 
- * @author Unascribed
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * 
- * @version $Revision: 658430 $ $Date: 2008-05-20 14:04:27 -0700 (Tue, 20 May 2008) $
- */
-public interface Credentials {
-
-    Principal getUserPrincipal();
-
-    String getPassword();
-    
-}
diff --git a/src/org/apache/http/auth/InvalidCredentialsException.java b/src/org/apache/http/auth/InvalidCredentialsException.java
deleted file mode 100644
index 50155ec..0000000
--- a/src/org/apache/http/auth/InvalidCredentialsException.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/InvalidCredentialsException.java $
- * $Revision: 505684 $
- * $Date: 2007-02-10 04:40:02 -0800 (Sat, 10 Feb 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.auth;
-
-/**
- * Authentication credentials required to respond to a authentication 
- * challenge are invalid
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class InvalidCredentialsException extends AuthenticationException {
-
-    private static final long serialVersionUID = -4834003835215460648L;
-
-    /**
-     * Creates a new InvalidCredentialsException with a <tt>null</tt> detail message. 
-     */
-    public InvalidCredentialsException() {
-        super();
-    }
-
-    /**
-     * Creates a new InvalidCredentialsException with the specified message.
-     * 
-     * @param message the exception detail message
-     */
-    public InvalidCredentialsException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new InvalidCredentialsException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public InvalidCredentialsException(String message, Throwable cause) {
-        super(message, cause);
-    }
-}
diff --git a/src/org/apache/http/auth/MalformedChallengeException.java b/src/org/apache/http/auth/MalformedChallengeException.java
deleted file mode 100644
index 8c7e373..0000000
--- a/src/org/apache/http/auth/MalformedChallengeException.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/MalformedChallengeException.java $
- * $Revision: 505684 $
- * $Date: 2007-02-10 04:40:02 -0800 (Sat, 10 Feb 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.auth;
-
-import org.apache.http.ProtocolException;
-
-/**
- * Signals that authentication challenge is in some way invalid or 
- * illegal in the given context
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class MalformedChallengeException extends ProtocolException {
-
-    private static final long serialVersionUID = 814586927989932284L;
-
-    /**
-     * Creates a new MalformedChallengeException with a <tt>null</tt> detail message. 
-     */
-    public MalformedChallengeException() {
-        super();
-    }
-
-    /**
-     * Creates a new MalformedChallengeException with the specified message.
-     * 
-     * @param message the exception detail message
-     */
-    public MalformedChallengeException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new MalformedChallengeException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public MalformedChallengeException(String message, Throwable cause) {
-        super(message, cause);
-    }
-}
diff --git a/src/org/apache/http/auth/NTCredentials.java b/src/org/apache/http/auth/NTCredentials.java
deleted file mode 100644
index 6800c42..0000000
--- a/src/org/apache/http/auth/NTCredentials.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/NTCredentials.java $
- * $Revision: 658430 $
- * $Date: 2008-05-20 14:04:27 -0700 (Tue, 20 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.auth;
-
-import java.security.Principal;
-import java.util.Locale;
-
-import org.apache.http.util.LangUtils;
-
-/** {@link Credentials} specific to the Windows platform.
- *
- * @author <a href="mailto:adrian@ephox.com">Adrian Sutton</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 2.0
- */
-public class NTCredentials implements Credentials {
-
-    /** The user principal  */
-    private final NTUserPrincipal principal;
-
-    /** Password */
-    private final String password;
-    
-    /** The host the authentication request is originating from.  */
-    private final String workstation;
-
-    /**
-     * The constructor with the fully qualified username and password combined 
-     * string argument.
-     *
-     * @param usernamePassword the domain/username:password formed string
-     */
-    public NTCredentials(String usernamePassword) {
-        super();
-        if (usernamePassword == null) {
-            throw new IllegalArgumentException("Username:password string may not be null");            
-        }
-        String username;
-        int atColon = usernamePassword.indexOf(':');
-        if (atColon >= 0) {
-            username = usernamePassword.substring(0, atColon);
-            this.password = usernamePassword.substring(atColon + 1);
-        } else {
-            username = usernamePassword;
-            this.password = null;
-        }
-        int atSlash = username.indexOf('/');
-        if (atSlash >= 0) {
-            this.principal = new NTUserPrincipal(
-                    username.substring(0, atSlash).toUpperCase(Locale.ENGLISH),
-                    username.substring(atSlash + 1));
-        } else {
-            this.principal = new NTUserPrincipal(
-                    null,
-                    username.substring(atSlash + 1));
-        }
-        this.workstation = null;
-    }
-
-    /**
-     * Constructor.
-     * @param userName The user name.  This should not include the domain to authenticate with.
-     * For example: "user" is correct whereas "DOMAIN\\user" is not.
-     * @param password The password.
-     * @param workstation The workstation the authentication request is originating from. 
-     * Essentially, the computer name for this machine.
-     * @param domain The domain to authenticate within.
-     */
-    public NTCredentials(
-            final String userName, 
-            final String password, 
-            final String workstation,
-            final String domain) {
-        super();
-        if (userName == null) {
-            throw new IllegalArgumentException("User name may not be null");
-        }
-        this.principal = new NTUserPrincipal(domain, userName);
-        this.password = password;
-        if (workstation != null) {
-            this.workstation = workstation.toUpperCase(Locale.ENGLISH);
-        } else {
-            this.workstation = null;
-        }
-    }
-
-    public Principal getUserPrincipal() {
-        return this.principal;
-    }
-    
-    public String getUserName() {
-        return this.principal.getUsername();
-    }
-    
-    public String getPassword() {
-        return this.password;
-    }
-
-    /**
-     * Retrieves the name to authenticate with.
-     *
-     * @return String the domain these credentials are intended to authenticate with.
-     */
-    public String getDomain() {
-        return this.principal.getDomain();
-    }
-
-    /**
-     * Retrieves the workstation name of the computer originating the request.
-     *
-     * @return String the workstation the user is logged into.
-     */
-    public String getWorkstation() {
-        return this.workstation;
-    }
-    
-    @Override
-    public int hashCode() {
-        int hash = LangUtils.HASH_SEED;
-        hash = LangUtils.hashCode(hash, this.principal);
-        hash = LangUtils.hashCode(hash, this.workstation);
-        return hash;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == null) return false;
-        if (this == o) return true;
-        if (o instanceof NTCredentials) {
-            NTCredentials that = (NTCredentials) o;
-            if (LangUtils.equals(this.principal, that.principal)
-                    && LangUtils.equals(this.workstation, that.workstation)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder buffer = new StringBuilder();
-        buffer.append("[principal: ");
-        buffer.append(this.principal);
-        buffer.append("][workstation: ");
-        buffer.append(this.workstation);
-        buffer.append("]");
-        return buffer.toString();
-    }
-
-}
diff --git a/src/org/apache/http/auth/NTUserPrincipal.java b/src/org/apache/http/auth/NTUserPrincipal.java
deleted file mode 100644
index ac91bb8..0000000
--- a/src/org/apache/http/auth/NTUserPrincipal.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/NTUserPrincipal.java $
- * $Revision: 658430 $
- * $Date: 2008-05-20 14:04:27 -0700 (Tue, 20 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.auth;
-
-import java.security.Principal;
-import java.util.Locale;
-
-import org.apache.http.util.LangUtils;
-
-/**  NT (MS Windows specific) user principal used for HTTP authentication
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class NTUserPrincipal implements Principal {
-
-    private final String username;
-    private final String domain;
-    private final String ntname;
-
-    public NTUserPrincipal(
-            final String domain,
-            final String username) {
-        super();
-        if (username == null) {
-            throw new IllegalArgumentException("User name may not be null");
-        }
-        this.username = username;
-        if (domain != null) {
-            this.domain = domain.toUpperCase(Locale.ENGLISH);
-        } else {
-            this.domain = null;
-        }
-        if (this.domain != null && this.domain.length() > 0) {
-            StringBuilder buffer = new StringBuilder();
-            buffer.append(this.domain);
-            buffer.append('/');
-            buffer.append(this.username);
-            this.ntname = buffer.toString();
-        } else {
-            this.ntname = this.username;
-        }
-    }
-
-    public String getName() {
-        return this.ntname;
-    }
-    
-    public String getDomain() {
-        return this.domain;
-    }
-
-    public String getUsername() {
-        return this.username;
-    }
-
-    @Override
-    public int hashCode() {
-        int hash = LangUtils.HASH_SEED;
-        hash = LangUtils.hashCode(hash, this.username);
-        hash = LangUtils.hashCode(hash, this.domain);
-        return hash;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == null) return false;
-        if (this == o) return true;
-        if (o instanceof NTUserPrincipal) {
-            NTUserPrincipal that = (NTUserPrincipal) o;
-            if (LangUtils.equals(this.username, that.username)
-                    && LangUtils.equals(this.domain, that.domain)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return this.ntname;
-    }
-
-}
diff --git a/src/org/apache/http/auth/UsernamePasswordCredentials.java b/src/org/apache/http/auth/UsernamePasswordCredentials.java
deleted file mode 100644
index f82608c..0000000
--- a/src/org/apache/http/auth/UsernamePasswordCredentials.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/UsernamePasswordCredentials.java $
- * $Revision: 658430 $
- * $Date: 2008-05-20 14:04:27 -0700 (Tue, 20 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.auth;
-
-import java.security.Principal;
-
-import org.apache.http.util.LangUtils;
-
-/**
- * Username and password {@link Credentials}
- *
- * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @author Sean C. Sullivan
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 658430 $ $Date: 2008-05-20 14:04:27 -0700 (Tue, 20 May 2008) $
- * 
- */
-public class UsernamePasswordCredentials implements Credentials {
-
-    private final BasicUserPrincipal principal;
-    private final String password;
-     
-    /**
-     * The constructor with the username and password combined string argument.
-     *
-     * @param usernamePassword the username:password formed string
-     * @see #toString
-     */
-    public UsernamePasswordCredentials(String usernamePassword) {
-        super();
-        if (usernamePassword == null) {
-            throw new IllegalArgumentException("Username:password string may not be null");            
-        }
-        int atColon = usernamePassword.indexOf(':');
-        if (atColon >= 0) {
-            this.principal = new BasicUserPrincipal(usernamePassword.substring(0, atColon));
-            this.password = usernamePassword.substring(atColon + 1);
-        } else {
-            this.principal = new BasicUserPrincipal(usernamePassword);
-            this.password = null;
-        }
-    }
-
-
-    /**
-     * The constructor with the username and password arguments.
-     *
-     * @param userName the user name
-     * @param password the password
-     */
-    public UsernamePasswordCredentials(String userName, String password) {
-        super();
-        if (userName == null) {
-            throw new IllegalArgumentException("Username may not be null");            
-        }
-        this.principal = new BasicUserPrincipal(userName);
-        this.password = password;
-    }
-
-    public Principal getUserPrincipal() {
-        return this.principal;
-    }
-
-    public String getUserName() {
-        return this.principal.getName();
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    @Override
-    public int hashCode() {
-        return this.principal.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == null) return false;
-        if (this == o) return true;
-        if (o instanceof UsernamePasswordCredentials) {
-            UsernamePasswordCredentials that = (UsernamePasswordCredentials) o;
-            if (LangUtils.equals(this.principal, that.principal)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return this.principal.toString();
-    }
-
-}
-
diff --git a/src/org/apache/http/auth/package.html b/src/org/apache/http/auth/package.html
deleted file mode 100644
index 1493dfb..0000000
--- a/src/org/apache/http/auth/package.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-The API for client-side HTTP authentication against a server,
-commonly referred to as <i>HttpAuth</i>.
-
-</body>
-</html>
diff --git a/src/org/apache/http/auth/params/AuthPNames.java b/src/org/apache/http/auth/params/AuthPNames.java
deleted file mode 100644
index a053435..0000000
--- a/src/org/apache/http/auth/params/AuthPNames.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/params/AuthPNames.java $
- * $Revision: 578403 $
- * $Date: 2007-09-22 03:56:04 -0700 (Sat, 22 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.auth.params;
-
-/**
- * Parameter names for HttpAuth.
- * 
- * @version $Revision: 578403 $
- * 
- * @since 4.0
- */
-public interface AuthPNames {
-
-    /**
-     * Defines the charset to be used when encoding 
-     * {@link org.apache.http.auth.Credentials}.
-     * <p>
-     * This parameter expects a value of type {@link String}.
-     * If not defined, then
-     * {@link org.apache.http.params.CoreProtocolPNames#HTTP_ELEMENT_CHARSET
-     *        HttpProtocolParams.HTTP_ELEMENT_CHARSET}
-     * should be used.
-     * </p>
-     */
-    public static final String CREDENTIAL_CHARSET = "http.auth.credential-charset"; 
-
-}
diff --git a/src/org/apache/http/auth/params/AuthParamBean.java b/src/org/apache/http/auth/params/AuthParamBean.java
deleted file mode 100644
index 5b27328..0000000
--- a/src/org/apache/http/auth/params/AuthParamBean.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/params/AuthParamBean.java $
- * $Revision: 632313 $
- * $Date: 2008-02-29 05:19:50 -0800 (Fri, 29 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.auth.params;
-
-import org.apache.http.params.HttpAbstractParamBean;
-import org.apache.http.params.HttpParams;
-
-public class AuthParamBean extends HttpAbstractParamBean {
-
-    public AuthParamBean (final HttpParams params) {
-        super(params);
-    }
-
-    public void setCredentialCharset (final String charset) {
-        AuthParams.setCredentialCharset(params, charset);
-    }
-    
-}
diff --git a/src/org/apache/http/auth/params/AuthParams.java b/src/org/apache/http/auth/params/AuthParams.java
deleted file mode 100644
index a724a8c..0000000
--- a/src/org/apache/http/auth/params/AuthParams.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/params/AuthParams.java $
- * $Revision: 618365 $
- * $Date: 2008-02-04 10:20:08 -0800 (Mon, 04 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.auth.params;
-
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HTTP;
-
-/**
- * This class implements an adaptor around the {@link HttpParams} interface
- * to simplify manipulation of the HTTP authentication specific parameters.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 618365 $
- * 
- * @since 4.0
- *
- * @see AuthPNames
- */
-public final class AuthParams {
-
-    private AuthParams() {
-        super();
-    }
-
-    /**
-     * Obtains the charset for encoding
-     * {@link org.apache.http.auth.Credentials}.
-     * If not configured,
-     * {@link HTTP#DEFAULT_PROTOCOL_CHARSET HTTP.DEFAULT_PROTOCOL_CHARSET}
-     * is used instead.
-     * 
-     * @return The charset
-     *
-     * @see AuthPNames#CREDENTIAL_CHARSET
-     */
-    public static String getCredentialCharset(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        String charset = (String) params.getParameter
-            (AuthPNames.CREDENTIAL_CHARSET);
-        //@@@ TODO: inconsistent with JavaDoc in AuthPNames,
-        //@@@ TODO: check HTTP_ELEMENT_CHARSET first, or fix JavaDocs
-        if (charset == null) {
-            charset = HTTP.DEFAULT_PROTOCOL_CHARSET;
-        }
-        return charset;
-    }
-
-
-    /**
-     * Sets the charset to be used when encoding
-     * {@link org.apache.http.auth.Credentials}.
-     * 
-     * @param charset The charset
-     */
-    public static void setCredentialCharset(final HttpParams params, final String charset) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setParameter(AuthPNames.CREDENTIAL_CHARSET, charset);
-    }
-
-}
diff --git a/src/org/apache/http/auth/params/package.html b/src/org/apache/http/auth/params/package.html
deleted file mode 100644
index f9258fd..0000000
--- a/src/org/apache/http/auth/params/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/params/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-Parameters for configuring <i>HttpAuth</i>.
-
-</body>
-</html>
diff --git a/src/org/apache/http/client/AuthenticationHandler.java b/src/org/apache/http/client/AuthenticationHandler.java
deleted file mode 100644
index dacc1b8..0000000
--- a/src/org/apache/http/client/AuthenticationHandler.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/AuthenticationHandler.java $
- * $Revision: 603318 $
- * $Date: 2007-12-11 10:06:50 -0800 (Tue, 11 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.client;
-
-import java.util.Map;
-
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.auth.AuthenticationException;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public interface AuthenticationHandler {
-
-    boolean isAuthenticationRequested(
-            HttpResponse response, 
-            HttpContext context);
-    
-    Map<String, Header> getChallenges(
-            HttpResponse response, 
-            HttpContext context) throws MalformedChallengeException;
-    
-    AuthScheme selectScheme(
-            Map<String, Header> challenges, 
-            HttpResponse response, 
-            HttpContext context) throws AuthenticationException;
-    
-}
diff --git a/src/org/apache/http/client/CircularRedirectException.java b/src/org/apache/http/client/CircularRedirectException.java
deleted file mode 100644
index 08dca63..0000000
--- a/src/org/apache/http/client/CircularRedirectException.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/CircularRedirectException.java $
- * $Revision: 558123 $
- * $Date: 2007-07-20 13:29:58 -0700 (Fri, 20 Jul 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.client;
-
-/**
- * Signals a circular redirect
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class CircularRedirectException extends RedirectException {
-
-    private static final long serialVersionUID = 6830063487001091803L;
-
-    /**
-     * Creates a new CircularRedirectException with a <tt>null</tt> detail message. 
-     */
-    public CircularRedirectException() {
-        super();
-    }
-
-    /**
-     * Creates a new CircularRedirectException with the specified detail message.
-     * 
-     * @param message The exception detail message
-     */
-    public CircularRedirectException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new CircularRedirectException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public CircularRedirectException(String message, Throwable cause) {
-        super(message, cause);
-    }
-}
diff --git a/src/org/apache/http/client/ClientProtocolException.java b/src/org/apache/http/client/ClientProtocolException.java
deleted file mode 100644
index b5a991a..0000000
--- a/src/org/apache/http/client/ClientProtocolException.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * $HeadURL: $
- * $Revision: $
- * $Date: $
- *
- * ====================================================================
- *
- *  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.client;
-
-import java.io.IOException;
-
-/**
- * Signals an error in the HTTP protocol.
- */
-public class ClientProtocolException extends IOException {
-    
-    private static final long serialVersionUID = -5596590843227115865L;
-
-    public ClientProtocolException() {
-        super();
-    }
-
-    public ClientProtocolException(String s) {
-        super(s);
-    }
-    
-    public ClientProtocolException(Throwable cause) {
-        initCause(cause);
-    }
-    
-    public ClientProtocolException(String message, Throwable cause) {
-        super(message);
-        initCause(cause);
-    }
-    
-
-}
diff --git a/src/org/apache/http/client/CookieStore.java b/src/org/apache/http/client/CookieStore.java
deleted file mode 100644
index bc239ac..0000000
--- a/src/org/apache/http/client/CookieStore.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/CookieStore.java $
- * $Revision: 604434 $
- * $Date: 2007-12-15 06:45:48 -0800 (Sat, 15 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.client;
-
-import java.util.Date;
-import java.util.List;
-
-import org.apache.http.cookie.Cookie;
-
-/**
- * Abstract cookie store.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public interface CookieStore {
-
-    /**
-     * Adds an {@link Cookie HTTP cookie}, replacing any existing equivalent cookies.
-     * If the given cookie has already expired it will not be added, but existing 
-     * values will still be removed.
-     * 
-     * @param cookie the {@link Cookie cookie} to be added
-     */
-    void addCookie(Cookie cookie);
-
-    /**
-     * Returns all cookies contained in this store.
-     * 
-     * @return all cookies
-     */
-    List<Cookie> getCookies();
-
-    /**
-     * Removes all of {@link Cookie cookies} in this store that have expired by 
-     * the specified {@link java.util.Date date}. 
-     * 
-     * @return true if any cookies were purged.
-     */
-    boolean clearExpired(Date date);
-
-    /**
-     * Clears all cookies.
-     */
-    void clear();
-    
-}
diff --git a/src/org/apache/http/client/CredentialsProvider.java b/src/org/apache/http/client/CredentialsProvider.java
deleted file mode 100644
index 8396d84..0000000
--- a/src/org/apache/http/client/CredentialsProvider.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/CredentialsProvider.java $
- * $Revision: 558124 $
- * $Date: 2007-07-20 13:36:47 -0700 (Fri, 20 Jul 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.client;
-
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.Credentials;
-
-/**
- * Abstract credentials provider.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public interface CredentialsProvider {
-
-    /** 
-     * Sets the {@link Credentials credentials} for the given authentication 
-     * scope. Any previous credentials for the given scope will be overwritten.
-     * 
-     * @param authscope the {@link AuthScope authentication scope}
-     * @param credentials the authentication {@link Credentials credentials} 
-     * for the given scope.
-     * 
-     * @see #getCredentials(AuthScope)
-     */
-    void setCredentials(AuthScope authscope, Credentials credentials);
-
-    /**
-     * Get the {@link Credentials credentials} for the given authentication scope.
-     *
-     * @param authscope the {@link AuthScope authentication scope}
-     * @return the credentials 
-     * 
-     * @see #setCredentials(AuthScope, Credentials)
-     */
-    Credentials getCredentials(AuthScope authscope);
-
-    /**
-     * Clears all credentials.
-     */
-    void clear();
-    
-}
diff --git a/src/org/apache/http/client/HttpClient.java b/src/org/apache/http/client/HttpClient.java
deleted file mode 100644
index aaa09e0..0000000
--- a/src/org/apache/http/client/HttpClient.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpClient.java $
- * $Revision: 676020 $
- * $Date: 2008-07-11 09:38:49 -0700 (Fri, 11 Jul 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.client;
-
-import java.io.IOException;
-
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.conn.ClientConnectionManager;
-
-/**
- * Interface for an HTTP client.
- * HTTP clients encapsulate a smorgasbord of objects required to
- * execute HTTP requests while handling cookies, authentication,
- * connection management, and other features.
- * Thread safety of HTTP clients depends on the implementation
- * and configuration of the specific client.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 676020 $
- *
- * @since 4.0
- */
-public interface HttpClient {
-
-
-    /**
-     * Obtains the parameters for this client.
-     * These parameters will become defaults for all requests being
-     * executed with this client, and for the parameters of
-     * dependent objects in this client.
-     *
-     * @return  the default parameters
-     */
-    HttpParams getParams()
-        ;
-
-
-    /**
-     * Obtains the connection manager used by this client.
-     *
-     * @return  the connection manager
-     */
-    ClientConnectionManager getConnectionManager()
-        ;
-
-    /**
-     * Executes a request using the default context.
-     *
-     * @param request   the request to execute
-     *
-     * @return  the response to the request. This is always a final response,
-     *          never an intermediate response with an 1xx status code.
-     *          Whether redirects or authentication challenges will be returned
-     *          or handled automatically depends on the implementation and
-     *          configuration of this client.
-     * @throws IOException in case of a problem or the connection was aborted
-     * @throws ClientProtocolException in case of an http protocol error
-     */
-    HttpResponse execute(HttpUriRequest request)
-        throws IOException, ClientProtocolException
-        ;
-
-
-    /**
-     * Executes a request using the given context.
-     * The route to the target will be determined by the HTTP client.
-     *
-     * @param request   the request to execute
-     * @param context   the context to use for the execution, or
-     *                  <code>null</code> to use the default context
-     *
-     * @return  the response to the request. This is always a final response,
-     *          never an intermediate response with an 1xx status code.
-     *          Whether redirects or authentication challenges will be returned
-     *          or handled automatically depends on the implementation and
-     *          configuration of this client.
-     * @throws IOException in case of a problem or the connection was aborted
-     * @throws ClientProtocolException in case of an http protocol error
-     */
-    HttpResponse execute(HttpUriRequest request, HttpContext context)
-        throws IOException, ClientProtocolException
-        ;
-
-
-    /**
-     * Executes a request to the target using the default context.
-     *
-     * @param target    the target host for the request.
-     *                  Implementations may accept <code>null</code>
-     *                  if they can still determine a route, for example
-     *                  to a default target or by inspecting the request.
-     * @param request   the request to execute
-     *
-     * @return  the response to the request. This is always a final response,
-     *          never an intermediate response with an 1xx status code.
-     *          Whether redirects or authentication challenges will be returned
-     *          or handled automatically depends on the implementation and
-     *          configuration of this client.
-     * @throws IOException in case of a problem or the connection was aborted
-     * @throws ClientProtocolException in case of an http protocol error
-     */
-    HttpResponse execute(HttpHost target, HttpRequest request)
-        throws IOException, ClientProtocolException
-        ;
-
-    /**
-     * Executes a request to the target using the given context.
-     *
-     * @param target    the target host for the request.
-     *                  Implementations may accept <code>null</code>
-     *                  if they can still determine a route, for example
-     *                  to a default target or by inspecting the request.
-     * @param request   the request to execute
-     * @param context   the context to use for the execution, or
-     *                  <code>null</code> to use the default context
-     *
-     * @return  the response to the request. This is always a final response,
-     *          never an intermediate response with an 1xx status code.
-     *          Whether redirects or authentication challenges will be returned
-     *          or handled automatically depends on the implementation and
-     *          configuration of this client.
-     * @throws IOException in case of a problem or the connection was aborted
-     * @throws ClientProtocolException in case of an http protocol error
-     */
-    HttpResponse execute(HttpHost target, HttpRequest request,
-                         HttpContext context)
-        throws IOException, ClientProtocolException
-        ;
-
-    /**
-     * Executes a request using the default context and processes the
-     * response using the given response handler.
-     *
-     * @param request   the request to execute
-     * @param responseHandler the response handler
-     *
-     * @return  the response object as generated by the response handler.
-     * @throws IOException in case of a problem or the connection was aborted
-     * @throws ClientProtocolException in case of an http protocol error
-     */
-    <T> T execute(
-            HttpUriRequest request, 
-            ResponseHandler<? extends T> responseHandler)
-        throws IOException, ClientProtocolException
-        ;
-
-    /**
-     * Executes a request using the given context and processes the
-     * response using the given response handler.
-     *
-     * @param request   the request to execute
-     * @param responseHandler the response handler
-     *
-     * @return  the response object as generated by the response handler.
-     * @throws IOException in case of a problem or the connection was aborted
-     * @throws ClientProtocolException in case of an http protocol error
-     */
-    <T> T execute(
-            HttpUriRequest request, 
-            ResponseHandler<? extends T> responseHandler,
-            HttpContext context)
-        throws IOException, ClientProtocolException
-        ;
-
-    /**
-     * Executes a request to the target using the default context and 
-     * processes the response using the given response handler.
-     *
-     * @param target    the target host for the request.
-     *                  Implementations may accept <code>null</code>
-     *                  if they can still determine a route, for example
-     *                  to a default target or by inspecting the request.
-     * @param request   the request to execute
-     * @param responseHandler the response handler
-     *
-     * @return  the response object as generated by the response handler.
-     * @throws IOException in case of a problem or the connection was aborted
-     * @throws ClientProtocolException in case of an http protocol error
-     */
-    <T> T execute(
-            HttpHost target, 
-            HttpRequest request,
-            ResponseHandler<? extends T> responseHandler)
-        throws IOException, ClientProtocolException
-        ;
-    
-    /**
-     * Executes a request to the target using the given context and 
-     * processes the response using the given response handler.
-     *
-     * @param target    the target host for the request.
-     *                  Implementations may accept <code>null</code>
-     *                  if they can still determine a route, for example
-     *                  to a default target or by inspecting the request.
-     * @param request   the request to execute
-     * @param responseHandler the response handler
-     * @param context   the context to use for the execution, or
-     *                  <code>null</code> to use the default context
-     *
-     * @return  the response object as generated by the response handler.
-     * @throws IOException in case of a problem or the connection was aborted
-     * @throws ClientProtocolException in case of an http protocol error
-     */
-    <T> T execute(
-            HttpHost target, 
-            HttpRequest request,
-            ResponseHandler<? extends T> responseHandler, 
-            HttpContext context)
-        throws IOException, ClientProtocolException
-        ;
-    
-} // interface HttpClient
diff --git a/src/org/apache/http/client/HttpRequestRetryHandler.java b/src/org/apache/http/client/HttpRequestRetryHandler.java
deleted file mode 100644
index 9ef8ef9..0000000
--- a/src/org/apache/http/client/HttpRequestRetryHandler.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpRequestRetryHandler.java $
- * $Revision: 535610 $
- * $Date: 2007-05-06 06:28:13 -0700 (Sun, 06 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/>.
- *
- */
-
-package org.apache.http.client;
-
-import java.io.IOException;
-
-import org.apache.http.protocol.HttpContext;
-
-/**
- * A handler for determining if an HttpRequest should be retried after a 
- * recoverable exception during execution.
- * 
- * <p>
- * Classes implementing this interface must synchronize access to shared
- * data as methods of this interfrace may be executed from multiple threads 
- * </p>
- * 
- * @author Michael Becke
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public interface HttpRequestRetryHandler {
-
-    /**
-     * Determines if a method should be retried after an IOException
-     * occurs during execution.
-     * 
-     * @param exception the exception that occurred
-     * @param executionCount the number of times this method has been 
-     * unsuccessfully executed
-     * @param context the context for the request execution
-     * 
-     * @return <code>true</code> if the method should be retried, <code>false</code>
-     * otherwise
-     */
-    boolean retryRequest(IOException exception, int executionCount, HttpContext context);
-
-}
diff --git a/src/org/apache/http/client/HttpResponseException.java b/src/org/apache/http/client/HttpResponseException.java
deleted file mode 100644
index 4d8de91..0000000
--- a/src/org/apache/http/client/HttpResponseException.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpResponseException.java $
- * $Revision: 672425 $
- * $Date: 2008-06-27 16:33:05 -0700 (Fri, 27 Jun 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.client;
-
-/**
- * Signals a non 2xx HTTP response.
- */
-public class HttpResponseException extends ClientProtocolException {
-    
-    private static final long serialVersionUID = -7186627969477257933L;
-
-    private final int statusCode;
-    
-    public HttpResponseException(int statusCode, final String s) {
-        super(s);
-        this.statusCode = statusCode;
-    }
-
-    public int getStatusCode() {
-        return this.statusCode;
-    }
-    
-}
diff --git a/src/org/apache/http/client/NonRepeatableRequestException.java b/src/org/apache/http/client/NonRepeatableRequestException.java
deleted file mode 100644
index 13ff4d1..0000000
--- a/src/org/apache/http/client/NonRepeatableRequestException.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/NonRepeatableRequestException.java $
- * $Revision: 664326 $
- * $Date: 2008-06-07 04:48:27 -0700 (Sat, 07 Jun 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.client;
-
-import org.apache.http.ProtocolException;
-
-/**
- * Signals failure to retry the request due to non-repeatable request 
- * entity.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class NonRepeatableRequestException extends ProtocolException {
-
-    private static final long serialVersionUID = 82685265288806048L;
-
-    /**
-     * Creates a new NonRepeatableEntityException with a <tt>null</tt> detail message. 
-     */
-    public NonRepeatableRequestException() {
-        super();
-    }
-
-    /**
-     * Creates a new NonRepeatableEntityException with the specified detail message.
-     * 
-     * @param message The exception detail message
-     */
-    public NonRepeatableRequestException(String message) {
-        super(message);
-    }
-
-}
diff --git a/src/org/apache/http/client/RedirectException.java b/src/org/apache/http/client/RedirectException.java
deleted file mode 100644
index 82ea9ea..0000000
--- a/src/org/apache/http/client/RedirectException.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/RedirectException.java $
- * $Revision: 664066 $
- * $Date: 2008-06-06 11:13:18 -0700 (Fri, 06 Jun 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.client;
-
-import org.apache.http.ProtocolException;
-
-/**
- * Signals violation of HTTP specification caused by an invalid redirect
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class RedirectException extends ProtocolException {
-
-    private static final long serialVersionUID = 4418824536372559326L;
-
-    /**
-     * Creates a new RedirectException with a <tt>null</tt> detail message. 
-     */
-    public RedirectException() {
-        super();
-    }
-
-    /**
-     * Creates a new RedirectException with the specified detail message.
-     * 
-     * @param message The exception detail message
-     */
-    public RedirectException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new RedirectException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public RedirectException(String message, Throwable cause) {
-        super(message, cause);
-    }
-}
diff --git a/src/org/apache/http/client/RedirectHandler.java b/src/org/apache/http/client/RedirectHandler.java
deleted file mode 100644
index a98b4ae..0000000
--- a/src/org/apache/http/client/RedirectHandler.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/RedirectHandler.java $
- * $Revision: 538647 $
- * $Date: 2007-05-16 09:41:42 -0700 (Wed, 16 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/>.
- *
- */
-
-package org.apache.http.client;
-
-import java.net.URI;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.ProtocolException;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * A handler for determining if an HTTP request should be redirected to 
- * a new location in response to an HTTP response received from the target
- * server.
- * 
- * <p>
- * Classes implementing this interface must synchronize access to shared
- * data as methods of this interfrace may be executed from multiple threads 
- * </p>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public interface RedirectHandler {
-
-    /**
-     * Determines if a request should be redirected to a new location
-     * given the response from the target server.
-     * 
-     * @param response the response received from the target server
-     * @param context the context for the request execution
-     * 
-     * @return <code>true</code> if the request should be redirected, <code>false</code>
-     * otherwise
-     */
-    boolean isRedirectRequested(HttpResponse response, HttpContext context);
-    
-    /**
-     * Determines the location request is expected to be redirected to 
-     * given the response from the target server and the current request
-     * execution context.
-     * 
-     * @param response the response received from the target server
-     * @param context the context for the request execution
-     * 
-     * @return redirect URI 
-     */
-    URI getLocationURI(HttpResponse response, HttpContext context)
-            throws ProtocolException;
-
-}
diff --git a/src/org/apache/http/client/RequestDirector.java b/src/org/apache/http/client/RequestDirector.java
deleted file mode 100644
index 924c312..0000000
--- a/src/org/apache/http/client/RequestDirector.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/RequestDirector.java $
- * $Revision: 676020 $
- * $Date: 2008-07-11 09:38:49 -0700 (Fri, 11 Jul 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.client;
-
-import java.io.IOException;
-
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpException;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * A client-side request director.
- * The director decides which steps are necessary to execute a request.
- * It establishes connections and optionally processes redirects and
- * authentication challenges. The director may therefore generate and
- * send a sequence of requests in order to execute one initial request.
- *
- * <br/><b>Note:</b>
- * It is most likely that implementations of this interface will
- * allocate connections, and return responses that depend on those
- * connections for reading the response entity. Such connections
- * MUST be released, but that is out of the scope of a request director.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 676020 $
- *
- * @since 4.0
- */
-public interface RequestDirector {
-
-
-    /**
-     * Executes a request.
-     * <br/><b>Note:</b>
-     * For the time being, a new director is instantiated for each request.
-     * This is the same behavior as for <code>HttpMethodDirector</code>
-     * in HttpClient 3.
-     *
-     * @param target    the target host for the request.
-     *                  Implementations may accept <code>null</code>
-     *                  if they can still determine a route, for example
-     *                  to a default target or by inspecting the request.
-     * @param request   the request to execute
-     * @param context   the context for executing the request
-     *
-     * @return  the final response to the request.
-     *          This is never an intermediate response with status code 1xx.
-     *
-     * @throws HttpException            in case of a problem
-     * @throws IOException              in case of an IO problem
-     *                                     or if the connection was aborted
-     */
-    HttpResponse execute(HttpHost target, HttpRequest request,
-                         HttpContext context)
-        throws HttpException, IOException
-        ;
-
-} // class ClientRequestDirector
diff --git a/src/org/apache/http/client/ResponseHandler.java b/src/org/apache/http/client/ResponseHandler.java
deleted file mode 100644
index 33a3391..0000000
--- a/src/org/apache/http/client/ResponseHandler.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/ResponseHandler.java $
- * $Revision: 677240 $
- * $Date: 2008-07-16 04:25:47 -0700 (Wed, 16 Jul 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.client;
-
-import java.io.IOException;
-
-import org.apache.http.HttpResponse;
-
-/**
- * Handler that encapsulates the process of generating a response object 
- * from a {@link HttpResponse}.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public interface ResponseHandler<T> {
-
-    /**
-     * Processes an {@link HttpResponse} and returns some value
-     * corresponding to that response.
-     * 
-     * @param response The response to process
-     * @return A value determined by the response
-     * 
-     * @throws ClientProtocolException in case of an http protocol error
-     * @throws IOException in case of a problem or the connection was aborted
-     */
-    T handleResponse(HttpResponse response) throws ClientProtocolException, IOException;
-    
-}
diff --git a/src/org/apache/http/client/UserTokenHandler.java b/src/org/apache/http/client/UserTokenHandler.java
deleted file mode 100644
index f8e55d8..0000000
--- a/src/org/apache/http/client/UserTokenHandler.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/UserTokenHandler.java $
- * $Revision: 658759 $
- * $Date: 2008-05-21 10:06:17 -0700 (Wed, 21 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.client;
-
-import org.apache.http.protocol.HttpContext;
-
-/**
- * A handler for determining if the given execution context is user specific 
- * or not. The token object returned by this handler is expected to uniquely 
- * identify the current user if the context is user specific or to be 
- * <code>null</code> if the context does not contain any resources or details 
- * specific to the current user.
- * <p/>
- * The user token will be used to ensure that user specific resouces will not
- * shared with or reused by other users.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public interface UserTokenHandler {
-
-    /**
-     * The token object returned by this method is expected to uniquely 
-     * identify the current user if the context is user specific or to be 
-     * <code>null</code> if it is not.
-     * 
-     * @param context the execution context
-     * 
-     * @return user token that uniquely identifies the user or 
-     * <code>null</null> if the context is not user specific.
-     */
-    Object getUserToken(HttpContext context);
-
-}
diff --git a/src/org/apache/http/client/entity/UrlEncodedFormEntity.java b/src/org/apache/http/client/entity/UrlEncodedFormEntity.java
deleted file mode 100644
index 89b9c45..0000000
--- a/src/org/apache/http/client/entity/UrlEncodedFormEntity.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/entity/UrlEncodedFormEntity.java $
- * $Revision: 655107 $
- * $Date: 2008-05-10 08:20:42 -0700 (Sat, 10 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.client.entity;
-
-import java.io.UnsupportedEncodingException;
-import java.util.List;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URLEncodedUtils;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.protocol.HTTP;
-
-/**
- * An entity composed of a list of url-encoded pairs.
- * This is typically useful while sending an HTTP POST request.
- */
-public class UrlEncodedFormEntity extends StringEntity {
-  
-    /**
-     * Constructs a new {@link UrlEncodedFormEntity} with the list
-     * of parameters in the specified encoding.
-     * 
-     * @param parameters list of name/value pairs
-     * @param encoding encoding the name/value pairs be encoded with
-     * @throws UnsupportedEncodingException if the encoding isn't supported
-     */
-    public UrlEncodedFormEntity (
-        final List <? extends NameValuePair> parameters, 
-        final String encoding) throws UnsupportedEncodingException {
-        super(URLEncodedUtils.format(parameters, encoding), 
-            encoding);
-        setContentType(URLEncodedUtils.CONTENT_TYPE);
-    }
-
-    /**
-     * Constructs a new {@link UrlEncodedFormEntity} with the list
-     * of parameters with the default encoding of {@link HTTP#DEFAULT_CONTENT_CHARSET}
-     * 
-     * @param parameters list of name/value pairs
-     * @throws UnsupportedEncodingException if the default encoding isn't supported
-     */
-    public UrlEncodedFormEntity (
-        final List <? extends NameValuePair> parameters) throws UnsupportedEncodingException {
-        super(URLEncodedUtils.format(parameters, HTTP.DEFAULT_CONTENT_CHARSET), 
-            HTTP.DEFAULT_CONTENT_CHARSET);
-        setContentType(URLEncodedUtils.CONTENT_TYPE);
-    }
-    
-}
diff --git a/src/org/apache/http/client/methods/AbortableHttpRequest.java b/src/org/apache/http/client/methods/AbortableHttpRequest.java
deleted file mode 100644
index c402609..0000000
--- a/src/org/apache/http/client/methods/AbortableHttpRequest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/AbortableHttpRequest.java $
- * $Revision: 639600 $
- * $Date: 2008-03-21 04:28:15 -0700 (Fri, 21 Mar 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.client.methods;
-
-import java.io.IOException;
-
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.ClientConnectionRequest;
-import org.apache.http.conn.ConnectionReleaseTrigger;
-import org.apache.http.conn.ManagedClientConnection;
-import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
-
-/**
- * Interface representing an HTTP request that can be aborted by shutting 
- * down the underlying HTTP connection.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 639600 $
- *
- * @since 4.0
- */
-public interface AbortableHttpRequest {
-
-    /**
-     * Sets the {@link ClientConnectionRequest} callback that can be
-     * used to abort a long-lived request for a connection.
-     * If the request is already aborted, throws an {@link IOException}.
-     * 
-     * @see ClientConnectionManager
-     * @see ThreadSafeClientConnManager
-     */
-    void setConnectionRequest(ClientConnectionRequest connRequest) throws IOException;
-    
-    /**
-     * Sets the {@link ConnectionReleaseTrigger} callback that can
-     * be used to abort an active connection.
-     * Typically, this will be the {@link ManagedClientConnection} itself.
-     * If the request is already aborted, throws an {@link IOException}.
-     */
-    void setReleaseTrigger(ConnectionReleaseTrigger releaseTrigger) throws IOException;
-
-    /**
-     * Aborts this http request. Any active execution of this method should
-     * return immediately. If the request has not started, it will abort after
-     * the next execution. Aborting this request will cause all subsequent
-     * executions with this request to fail.
-     * 
-     * @see HttpClient#execute(HttpUriRequest)
-     * @see HttpClient#execute(org.apache.http.HttpHost,
-     *      org.apache.http.HttpRequest)
-     * @see HttpClient#execute(HttpUriRequest,
-     *      org.apache.http.protocol.HttpContext)
-     * @see HttpClient#execute(org.apache.http.HttpHost,
-     *      org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext)
-     */
-    void abort();
-
-}
-
diff --git a/src/org/apache/http/client/methods/HttpDelete.java b/src/org/apache/http/client/methods/HttpDelete.java
deleted file mode 100644
index 4a0fb77..0000000
--- a/src/org/apache/http/client/methods/HttpDelete.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpDelete.java $
- * $Revision: 664505 $
- * $Date: 2008-06-08 06:21:20 -0700 (Sun, 08 Jun 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.client.methods;
-
-import java.net.URI;
-
-/**
- * HTTP DELETE method
- * <p>
- * The HTTP DELETE method is defined in section 9.7 of
- * <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a>:
- * <blockquote>
- * The DELETE method requests that the origin server delete the resource
- * identified by the Request-URI. [...] The client cannot
- * be guaranteed that the operation has been carried out, even if the
- * status code returned from the origin server indicates that the action
- * has been completed successfully.
- * </blockquote>
- */
-public class HttpDelete extends HttpRequestBase {
-
-    public final static String METHOD_NAME = "DELETE";
-
-    
-    public HttpDelete() {
-        super();
-    }
-
-    public HttpDelete(final URI uri) {
-        super();
-        setURI(uri);
-    }
-
-    /**
-     * @throws IllegalArgumentException if the uri is invalid. 
-     */
-    public HttpDelete(final String uri) {
-        super();
-        setURI(URI.create(uri));
-    }
-
-    @Override
-    public String getMethod() {
-        return METHOD_NAME;
-    }
-
-}
diff --git a/src/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.java b/src/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.java
deleted file mode 100644
index 8ac6f01..0000000
--- a/src/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.java $
- * $Revision: 674186 $
- * $Date: 2008-07-05 05:18:54 -0700 (Sat, 05 Jul 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.client.methods;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.client.utils.CloneUtils;
-import org.apache.http.protocol.HTTP;
-
-/**
- * Basic implementation of an HTTP request that can be modified.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 674186 $
- * 
- * @since 4.0
- */
-public abstract class HttpEntityEnclosingRequestBase 
-    extends HttpRequestBase implements HttpEntityEnclosingRequest {
-    
-    private HttpEntity entity;
-    
-    public HttpEntityEnclosingRequestBase() {
-        super();
-    }
-
-    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());
-    }
-
-    @Override
-    public Object clone() throws CloneNotSupportedException {
-        HttpEntityEnclosingRequestBase clone = 
-            (HttpEntityEnclosingRequestBase) super.clone();
-        if (this.entity != null) {
-            clone.entity = (HttpEntity) CloneUtils.clone(this.entity);
-        }
-        return clone;
-    }
-
-}
diff --git a/src/org/apache/http/client/methods/HttpGet.java b/src/org/apache/http/client/methods/HttpGet.java
deleted file mode 100644
index 2908f1d..0000000
--- a/src/org/apache/http/client/methods/HttpGet.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpGet.java $
- * $Revision: 664505 $
- * $Date: 2008-06-08 06:21:20 -0700 (Sun, 08 Jun 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.client.methods;
-
-import java.net.URI;
-
-/**
- * HTTP GET method.
- * <p>
- * The HTTP GET method is defined in section 9.3 of
- * <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a>:
- * <blockquote>
- * The GET method means retrieve whatever information (in the form of an
- * entity) is identified by the Request-URI. If the Request-URI refers
- * to a data-producing process, it is the produced data which shall be
- * returned as the entity in the response and not the source text of the
- * process, unless that text happens to be the output of the process.
- * </blockquote>
- * </p>
- * <p>
- * GetMethods will follow redirect requests from the http server by default.
- * This behavour can be disabled by calling setFollowRedirects(false).</p>
- * 
- * @version $Revision: 664505 $
- * 
- * @since 4.0
- */
-public class HttpGet extends HttpRequestBase {
-
-    public final static String METHOD_NAME = "GET";
-    
-    public HttpGet() {
-        super();
-    }
-
-    public HttpGet(final URI uri) {
-        super();
-        setURI(uri);
-    }
-
-    /**
-     * @throws IllegalArgumentException if the uri is invalid. 
-     */
-    public HttpGet(final String uri) {
-        super();
-        setURI(URI.create(uri));
-    }
-
-    @Override
-    public String getMethod() {
-        return METHOD_NAME;
-    }
-    
-}
diff --git a/src/org/apache/http/client/methods/HttpHead.java b/src/org/apache/http/client/methods/HttpHead.java
deleted file mode 100644
index 29e58a3..0000000
--- a/src/org/apache/http/client/methods/HttpHead.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpHead.java $
- * $Revision: 664505 $
- * $Date: 2008-06-08 06:21:20 -0700 (Sun, 08 Jun 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.client.methods;
-
-import java.net.URI;
-
-/**
- * HTTP HEAD method.
- * <p>
- * The HTTP HEAD method is defined in section 9.4 of 
- * <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a>:
- * <blockquote>
- * The HEAD method is identical to GET except that the server MUST NOT
- * return a message-body in the response. The metainformation contained
- * in the HTTP headers in response to a HEAD request SHOULD be identical
- * to the information sent in response to a GET request. This method can
- * be used for obtaining metainformation about the entity implied by the
- * request without transferring the entity-body itself. This method is
- * often used for testing hypertext links for validity, accessibility,
- * and recent modification.
- * </blockquote>
- * </p>
- *
- * @version $Revision: 664505 $
- * 
- * @since 4.0
- */
-public class HttpHead extends HttpRequestBase {
-
-    public final static String METHOD_NAME = "HEAD";
-    
-    public HttpHead() {
-        super();
-    }
-
-    public HttpHead(final URI uri) {
-        super();
-        setURI(uri);
-    }
-
-    /**
-     * @throws IllegalArgumentException if the uri is invalid. 
-     */
-    public HttpHead(final String uri) {
-        super();
-        setURI(URI.create(uri));
-    }
-
-    @Override
-    public String getMethod() {
-        return METHOD_NAME;
-    }
-    
-}
diff --git a/src/org/apache/http/client/methods/HttpOptions.java b/src/org/apache/http/client/methods/HttpOptions.java
deleted file mode 100644
index 3758360..0000000
--- a/src/org/apache/http/client/methods/HttpOptions.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java $
- * $Revision: 664505 $
- * $Date: 2008-06-08 06:21:20 -0700 (Sun, 08 Jun 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.client.methods;
-
-import java.net.URI;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.HeaderIterator;
-import org.apache.http.HttpResponse;
-
-/**
- * HTTP OPTIONS method.
- * <p>
- * The HTTP OPTIONS method is defined in section 9.2 of 
- * <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a>:
- * <blockquote>
- *  The OPTIONS method represents a request for information about the
- *  communication options available on the request/response chain
- *  identified by the Request-URI. This method allows the client to
- *  determine the options and/or requirements associated with a resource,
- *  or the capabilities of a server, without implying a resource action
- *  or initiating a resource retrieval.
- * </blockquote>
- * </p>
- * 
- * @version $Revision: 664505 $
- * 
- * @since 4.0
- */
-public class HttpOptions extends HttpRequestBase {
-
-    public final static String METHOD_NAME = "OPTIONS";
-    
-    public HttpOptions() {
-        super();
-    }
-
-    public HttpOptions(final URI uri) {
-        super();
-        setURI(uri);
-    }
-
-    /**
-     * @throws IllegalArgumentException if the uri is invalid. 
-     */
-    public HttpOptions(final String uri) {
-        super();
-        setURI(URI.create(uri));
-    }
-
-    @Override
-    public String getMethod() {
-        return METHOD_NAME;
-    }
-    
-    public Set<String> getAllowedMethods(final HttpResponse response) {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        
-        HeaderIterator it = response.headerIterator("Allow");
-        Set<String> methods = new HashSet<String>();
-        while (it.hasNext()) {
-            Header header = it.nextHeader();
-            HeaderElement[] elements = header.getElements();
-            for (HeaderElement element : elements) {
-                methods.add(element.getName());
-            }
-        }
-        return methods;
-    }
-    
-}
diff --git a/src/org/apache/http/client/methods/HttpPost.java b/src/org/apache/http/client/methods/HttpPost.java
deleted file mode 100644
index bc58803..0000000
--- a/src/org/apache/http/client/methods/HttpPost.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPost.java $
- * $Revision: 664505 $
- * $Date: 2008-06-08 06:21:20 -0700 (Sun, 08 Jun 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.client.methods;
-
-import java.net.URI;
-
-/**
- * HTTP POST method.
- * <p>
- * The HTTP POST method is defined in section 9.5 of 
- * <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a>:
- * <blockquote>
- * The POST method is used to request that the origin server accept the entity
- * enclosed in the request as a new subordinate of the resource identified by
- * the Request-URI in the Request-Line. POST is designed to allow a uniform
- * method to cover the following functions:
- * <ul>
- *   <li>Annotation of existing resources</li>
- *   <li>Posting a message to a bulletin board, newsgroup, mailing list, or 
- *     similar group of articles</li>
- *   <li>Providing a block of data, such as the result of submitting a form,
- *     to a data-handling process</li>
- *   <li>Extending a database through an append operation</li>
- * </ul>
- * </blockquote>
- * </p>
- *
- * @version $Revision: 664505 $
- * 
- * @since 4.0
- */
-public class HttpPost extends HttpEntityEnclosingRequestBase {
-
-    public final static String METHOD_NAME = "POST";
-    
-    public HttpPost() {
-        super();
-    }
-    
-    public HttpPost(final URI uri) {
-        super();
-        setURI(uri);
-    }
-    
-    /**
-     * @throws IllegalArgumentException if the uri is invalid. 
-     */
-    public HttpPost(final String uri) {
-        super();
-        setURI(URI.create(uri));
-    }
-
-    @Override
-    public String getMethod() {
-        return METHOD_NAME;
-    }
-    
-}
diff --git a/src/org/apache/http/client/methods/HttpPut.java b/src/org/apache/http/client/methods/HttpPut.java
deleted file mode 100644
index 5b50135..0000000
--- a/src/org/apache/http/client/methods/HttpPut.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpPut.java $
- * $Revision: 664505 $
- * $Date: 2008-06-08 06:21:20 -0700 (Sun, 08 Jun 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.client.methods;
-
-import java.net.URI;
-
-/**
- * HTTP PUT method.
- * <p>
- * The HTTP PUT method is defined in section 9.6 of 
- * <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a>:
- * <blockquote>
- * The PUT method requests that the enclosed entity be stored under the
- * supplied Request-URI. If the Request-URI refers to an already
- * existing resource, the enclosed entity SHOULD be considered as a
- * modified version of the one residing on the origin server. 
- * </blockquote>
- * </p>
- *
- * @version $Revision: 664505 $
- * 
- * @since 4.0
- */
-public class HttpPut extends HttpEntityEnclosingRequestBase {
-
-    public final static String METHOD_NAME = "PUT";
-    
-    public HttpPut() {
-        super();
-    }
-    
-    public HttpPut(final URI uri) {
-        super();
-        setURI(uri);
-    }
-
-    /**
-     * @throws IllegalArgumentException if the uri is invalid. 
-     */
-    public HttpPut(final String uri) {
-        super();
-        setURI(URI.create(uri));
-    }
-
-    @Override
-    public String getMethod() {
-        return METHOD_NAME;
-    }
-    
-}
diff --git a/src/org/apache/http/client/methods/HttpRequestBase.java b/src/org/apache/http/client/methods/HttpRequestBase.java
deleted file mode 100644
index 8938ea0..0000000
--- a/src/org/apache/http/client/methods/HttpRequestBase.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpRequestBase.java $
- * $Revision: 674186 $
- * $Date: 2008-07-05 05:18:54 -0700 (Sat, 05 Jul 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.client.methods;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.http.ProtocolVersion;
-import org.apache.http.RequestLine;
-import org.apache.http.client.utils.CloneUtils;
-import org.apache.http.conn.ClientConnectionRequest;
-import org.apache.http.conn.ConnectionReleaseTrigger;
-import org.apache.http.message.AbstractHttpMessage;
-import org.apache.http.message.BasicRequestLine;
-import org.apache.http.message.HeaderGroup;
-import org.apache.http.params.HttpParams;
-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: 674186 $
- * 
- * @since 4.0
- */
-public abstract class HttpRequestBase extends AbstractHttpMessage 
-    implements HttpUriRequest, AbortableHttpRequest, Cloneable {
-
-    private Lock abortLock;
-
-    private boolean aborted;
-    
-    private URI uri;
-    private ClientConnectionRequest connRequest;
-    private ConnectionReleaseTrigger releaseTrigger;
-    
-    public HttpRequestBase() {
-        super();
-        this.abortLock = new ReentrantLock();
-    }
-
-    public abstract String getMethod();
-
-    public ProtocolVersion getProtocolVersion() {
-        return HttpProtocolParams.getVersion(getParams());
-    }
-
-    public URI getURI() {
-        return this.uri;
-    }
-    
-    public RequestLine getRequestLine() {
-        String method = getMethod();
-        ProtocolVersion ver = getProtocolVersion();
-        URI uri = getURI();
-        String uritext = null;
-        if (uri != null) {
-            uritext = uri.toASCIIString();
-        }
-        if (uritext == null || uritext.length() == 0) {
-            uritext = "/";
-        }
-        return new BasicRequestLine(method, uritext, ver);
-    }
-
-    public void setURI(final URI uri) {
-        this.uri = uri;
-    }
-
-    public void setConnectionRequest(final ClientConnectionRequest connRequest)
-            throws IOException {
-        this.abortLock.lock();
-        try {
-            if (this.aborted) {
-                throw new IOException("Request already aborted");
-            }
-            
-            this.releaseTrigger = null;
-            this.connRequest = connRequest;
-        } finally {
-            this.abortLock.unlock();
-        }
-    }
-
-    public void setReleaseTrigger(final ConnectionReleaseTrigger releaseTrigger)
-            throws IOException {
-        this.abortLock.lock();
-        try {
-            if (this.aborted) {
-                throw new IOException("Request already aborted");
-            }
-            
-            this.connRequest = null;
-            this.releaseTrigger = releaseTrigger;
-        } finally {
-            this.abortLock.unlock();
-        }
-    }
-    
-    public void abort() {
-        ClientConnectionRequest localRequest;
-        ConnectionReleaseTrigger localTrigger;
-        
-        this.abortLock.lock();
-        try {
-            if (this.aborted) {
-                return;
-            }            
-            this.aborted = true;
-            
-            localRequest = connRequest;
-            localTrigger = releaseTrigger;
-        } finally {
-            this.abortLock.unlock();
-        }        
-
-        // Trigger the callbacks outside of the lock, to prevent
-        // deadlocks in the scenario where the callbacks have
-        // their own locks that may be used while calling
-        // setReleaseTrigger or setConnectionRequest.
-        if (localRequest != null) {
-            localRequest.abortRequest();
-        }
-        if (localTrigger != null) {
-            try {
-                localTrigger.abortConnection();
-            } catch (IOException ex) {
-                // ignore
-            }
-        }
-    }
-    
-    public boolean isAborted() {
-        return this.aborted;
-    }
-
-    @Override
-    public Object clone() throws CloneNotSupportedException {
-        HttpRequestBase clone = (HttpRequestBase) super.clone();
-        clone.abortLock = new ReentrantLock();
-        clone.aborted = false;
-        clone.releaseTrigger = null;
-        clone.connRequest = null;
-        clone.headergroup = (HeaderGroup) CloneUtils.clone(this.headergroup);
-        clone.params = (HttpParams) CloneUtils.clone(this.params);
-        return clone;
-    }
-    
-}
diff --git a/src/org/apache/http/client/methods/HttpTrace.java b/src/org/apache/http/client/methods/HttpTrace.java
deleted file mode 100644
index 94f18ff..0000000
--- a/src/org/apache/http/client/methods/HttpTrace.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpTrace.java $
- * $Revision: 664505 $
- * $Date: 2008-06-08 06:21:20 -0700 (Sun, 08 Jun 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.client.methods;
-
-import java.net.URI;
-
-/**
- * HTTP TRACE method.
- * <p>
- * The HTTP TRACE method is defined in section 9.6 of 
- * <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a>:
- * <blockquote>
- *  The TRACE method is used to invoke a remote, application-layer loop-
- *  back of the request message. The final recipient of the request
- *  SHOULD reflect the message received back to the client as the
- *  entity-body of a 200 (OK) response. The final recipient is either the
- *  origin server or the first proxy or gateway to receive a Max-Forwards
- *  value of zero (0) in the request (see section 14.31). A TRACE request
- *  MUST NOT include an entity.
- * </blockquote>
- * </p>
- * 
- * @version $Revision: 664505 $
- * 
- * @since 4.0
- */
-public class HttpTrace extends HttpRequestBase {
-
-    public final static String METHOD_NAME = "TRACE";
-    
-    public HttpTrace() {
-        super();
-    }
-
-    public HttpTrace(final URI uri) {
-        super();
-        setURI(uri);
-    }
-    
-    /**
-     * @throws IllegalArgumentException if the uri is invalid. 
-     */
-    public HttpTrace(final String uri) {
-        super();
-        setURI(URI.create(uri));
-    }
-
-    @Override
-    public String getMethod() {
-        return METHOD_NAME;
-    }
-    
-}
diff --git a/src/org/apache/http/client/methods/HttpUriRequest.java b/src/org/apache/http/client/methods/HttpUriRequest.java
deleted file mode 100644
index 56d064a..0000000
--- a/src/org/apache/http/client/methods/HttpUriRequest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpUriRequest.java $
- * $Revision: 659191 $
- * $Date: 2008-05-22 11:26:53 -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.client.methods;
-
-import java.net.URI;
-
-import org.apache.http.HttpRequest;
-
-/**
- * Extended version of the {@link HttpRequest} interface that provides 
- * convenience methods to access request properties such as request URI
- * and method type.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 659191 $
- *
- * @since 4.0
- */
-public interface HttpUriRequest extends HttpRequest {
-    
-    /**
-     * Returns the HTTP method this request uses, such as <code>GET</code>,
-     * <code>PUT</code>, <code>POST</code>, or other.
-     */
-    String getMethod();
-
-    /**
-     * Returns the URI this request uses, such as
-     * <code>http://example.org/path/to/file</code>.
-     */
-    URI getURI();
-    
-    /**
-     * Aborts execution of the request. 
-     * 
-     * @throws UnsupportedOperationException if the abort operation 
-     *   is not supported / cannot be implemented.
-     */
-    void abort() throws UnsupportedOperationException;
-    
-    /**
-     * Tests if the request execution has been aborted.
-     * 
-     * @return <code>true</code> if the request execution has been aborted,
-     *   <code>false</code> otherwise.
-     */
-    boolean isAborted();
-    
-}
diff --git a/src/org/apache/http/client/methods/package.html b/src/org/apache/http/client/methods/package.html
deleted file mode 100644
index c2a602a..0000000
--- a/src/org/apache/http/client/methods/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-Request implementations for the various HTTP methods like GET and POST.
-
-</body>
-</html>
diff --git a/src/org/apache/http/client/package.html b/src/org/apache/http/client/package.html
deleted file mode 100644
index 64c7287..0000000
--- a/src/org/apache/http/client/package.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-The API for client-side HTTP communication and
-entry point to the <i>HttpClient</i> module.
-
-</body>
-</html>
diff --git a/src/org/apache/http/client/params/AllClientPNames.java b/src/org/apache/http/client/params/AllClientPNames.java
deleted file mode 100644
index e55bca7..0000000
--- a/src/org/apache/http/client/params/AllClientPNames.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/params/AllClientPNames.java $
- * $Revision: 576078 $
- * $Date: 2007-09-16 04:50:41 -0700 (Sun, 16 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.client.params;
-
-
-import org.apache.http.params.CoreConnectionPNames;
-import org.apache.http.params.CoreProtocolPNames;
-import org.apache.http.auth.params.AuthPNames;
-import org.apache.http.cookie.params.CookieSpecPNames;
-import org.apache.http.conn.params.ConnManagerPNames;
-import org.apache.http.conn.params.ConnConnectionPNames;
-import org.apache.http.conn.params.ConnRoutePNames;
-
-
-/**
- * Collected parameter names for the HttpClient module.
- * This interface combines the parameter definitions of the HttpClient
- * module and all dependency modules or informational units.
- * It does not define additional parameter names, but references
- * other interfaces defining parameter names.
- * <br/>
- * This interface is meant as a navigation aid for developers.
- * When referring to parameter names, you should use the interfaces
- * in which the respective constants are actually defined.
- *
- * @version $Revision: 576078 $
- * 
- * @since 4.0
- */
-public interface AllClientPNames extends
-    CoreConnectionPNames, CoreProtocolPNames,
-    ClientPNames, AuthPNames, CookieSpecPNames,
-    ConnConnectionPNames, ConnManagerPNames, ConnRoutePNames {
-
-    // no additional definitions
-}
-
diff --git a/src/org/apache/http/client/params/AuthPolicy.java b/src/org/apache/http/client/params/AuthPolicy.java
deleted file mode 100644
index 5bcdd38..0000000
--- a/src/org/apache/http/client/params/AuthPolicy.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/params/AuthPolicy.java $
- * $Revision: 534839 $
- * $Date: 2007-05-03 06:03:41 -0700 (Thu, 03 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/>.
- *
- */
-
-package org.apache.http.client.params;
-
-public final class AuthPolicy {
-
-    private AuthPolicy() {
-        super();
-    }
-    
-    /**
-     * The NTLM scheme is a proprietary Microsoft Windows Authentication 
-     * protocol (considered to be the most secure among currently supported 
-     * authentication schemes).
-     */
-    public static final String NTLM = "NTLM";
-    
-    /** 
-     * Digest authentication scheme as defined in RFC2617.
-     */
-    public static final String DIGEST = "Digest";
-
-    /** 
-     * Basic authentication scheme as defined in RFC2617 (considered inherently
-     * insecure, but most widely supported)
-     */
-    public static final String BASIC = "Basic";
-    
-}
diff --git a/src/org/apache/http/client/params/ClientPNames.java b/src/org/apache/http/client/params/ClientPNames.java
deleted file mode 100644
index f98eeb7..0000000
--- a/src/org/apache/http/client/params/ClientPNames.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/params/ClientPNames.java $
- * $Revision: 659595 $
- * $Date: 2008-05-23 09:47:14 -0700 (Fri, 23 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.client.params;
-
-
-/**
- * Parameter names for the HttpClient module.
- * This does not include parameters for informational units
- * HttpAuth, HttpCookie, or HttpConn.
- *
- * @version $Revision: 659595 $
- * 
- * @since 4.0
- */
-public interface ClientPNames {
-
-    /**
-     * Defines the class name of the default {@link org.apache.http.conn.ClientConnectionManager}
-     * <p>
-     * This parameter expects a value of type {@link String}.
-     * </p>
-     */ 
-    public static final String CONNECTION_MANAGER_FACTORY_CLASS_NAME = "http.connection-manager.factory-class-name";
-    
-    /**
-     * Defines the factory to create a default {@link org.apache.http.conn.ClientConnectionManager}.
-     * <p>
-     * This parameters expects a value of type {@link org.apache.http.conn.ClientConnectionManagerFactory}.
-     * </p>
-     */
-    public static final String CONNECTION_MANAGER_FACTORY = "http.connection-manager.factory-object";
-    
-    /** 
-     * Defines whether redirects should be handled automatically
-     * <p>
-     * This parameter expects a value of type {@link Boolean}.
-     * </p>
-     */
-    public static final String HANDLE_REDIRECTS = "http.protocol.handle-redirects";
-
-    /**
-     * Defines whether relative redirects should be rejected.
-     * <p>
-     * This parameter expects a value of type {@link Boolean}.
-     * </p>
-     */
-    public static final String REJECT_RELATIVE_REDIRECT = "http.protocol.reject-relative-redirect"; 
-
-    /** 
-     * Defines the maximum number of redirects to be followed. 
-     * The limit on number of redirects is intended to prevent infinite loops. 
-     * <p>
-     * This parameter expects a value of type {@link Integer}.
-     * </p>
-     */
-    public static final String MAX_REDIRECTS = "http.protocol.max-redirects";
-
-    /** 
-     * Defines whether circular redirects (redirects to the same location) should be allowed. 
-     * The HTTP spec is not sufficiently clear whether circular redirects are permitted, 
-     * therefore optionally they can be enabled
-     * <p>
-     * This parameter expects a value of type {@link Boolean}.
-     * </p>
-     */
-    public static final String ALLOW_CIRCULAR_REDIRECTS = "http.protocol.allow-circular-redirects";
-
-    /**
-     * Defines whether authentication should be handled automatically.
-     * <p>
-     * This parameter expects a value of type {@link Boolean}.
-     * </p>
-     */
-    public static final String HANDLE_AUTHENTICATION = "http.protocol.handle-authentication";
-
-    /**
-     * Defines the name of the cookie specification to be used for HTTP state management.
-     * <p>
-     * This parameter expects a value of type {@link String}.
-     * </p>
-     */
-    public static final String COOKIE_POLICY = "http.protocol.cookie-policy";
-    
-    /**
-     * Defines the virtual host name.
-     * <p>
-     * This parameter expects a value of type {@link org.apache.http.HttpHost}. 
-     * </p>
-     */
-    public static final String VIRTUAL_HOST = "http.virtual-host"; 
-
-    /**
-     * Defines the request headers to be sent per default with each request.
-     * <p>
-     * This parameter expects a value of type {@link java.util.Collection}. The 
-     * collection is expected to contain {@link org.apache.http.Header}s. 
-     * </p>
-     */
-    public static final String DEFAULT_HEADERS = "http.default-headers"; 
-    
-    /**
-     * Defines the default host. The default value will be used if the target host is
-     * not explicitly specified in the request URI.
-     * <p>
-     * This parameter expects a value of type {@link org.apache.http.HttpHost}.
-     * </p>
-     */
-    public static final String DEFAULT_HOST = "http.default-host";
-
-}
-
diff --git a/src/org/apache/http/client/params/ClientParamBean.java b/src/org/apache/http/client/params/ClientParamBean.java
deleted file mode 100644
index 76431a7..0000000
--- a/src/org/apache/http/client/params/ClientParamBean.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/params/ClientParamBean.java $
- * $Revision: 659595 $
- * $Date: 2008-05-23 09:47:14 -0700 (Fri, 23 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.client.params;
-
-import java.util.Collection;
-
-import org.apache.http.Header;
-import org.apache.http.HttpHost;
-import org.apache.http.conn.ClientConnectionManagerFactory;
-import org.apache.http.params.HttpAbstractParamBean;
-import org.apache.http.params.HttpParams;
-
-public class ClientParamBean extends HttpAbstractParamBean {
-
-    public ClientParamBean (final HttpParams params) {
-        super(params);
-    }
-
-    public void setConnectionManagerFactoryClassName (final String factory) {
-        params.setParameter(ClientPNames.CONNECTION_MANAGER_FACTORY_CLASS_NAME, factory);
-    }
-    
-    public void setConnectionManagerFactory(ClientConnectionManagerFactory factory) {
-        params.setParameter(ClientPNames.CONNECTION_MANAGER_FACTORY, factory);
-    }
-
-    public void setHandleRedirects (final boolean handle) {
-        params.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, handle);
-    }
-
-    public void setRejectRelativeRedirect (final boolean reject) {
-        params.setBooleanParameter(ClientPNames.REJECT_RELATIVE_REDIRECT, reject);
-    }
-
-    public void setMaxRedirects (final int maxRedirects) {
-        params.setIntParameter(ClientPNames.MAX_REDIRECTS, maxRedirects);
-    }
-
-    public void setAllowCircularRedirects (final boolean allow) {
-        params.setBooleanParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, allow);
-    }
-
-    public void setHandleAuthentication (final boolean handle) {
-        params.setBooleanParameter(ClientPNames.HANDLE_AUTHENTICATION, handle);
-    }
-
-    public void setCookiePolicy (final String policy) {
-        params.setParameter(ClientPNames.COOKIE_POLICY, policy);
-    }
-
-    public void setVirtualHost (final HttpHost host) {
-        params.setParameter(ClientPNames.VIRTUAL_HOST, host);
-    }
-
-    public void setDefaultHeaders (final Collection <Header> headers) {
-        params.setParameter(ClientPNames.DEFAULT_HEADERS, headers);
-    }
-
-    public void setDefaultHost (final HttpHost host) {
-        params.setParameter(ClientPNames.DEFAULT_HOST, host);
-    }
-    
-}
diff --git a/src/org/apache/http/client/params/CookiePolicy.java b/src/org/apache/http/client/params/CookiePolicy.java
deleted file mode 100644
index 04a131d..0000000
--- a/src/org/apache/http/client/params/CookiePolicy.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/params/CookiePolicy.java $
- * $Revision: 613865 $
- * $Date: 2008-01-21 04:04:30 -0800 (Mon, 21 Jan 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.client.params;
-
-public final class CookiePolicy {
-
-    /**
-     * The policy that provides high degree of compatibilty 
-     * with common cookie management of popular HTTP agents.
-     */
-    public static final String BROWSER_COMPATIBILITY = "compatibility";
-    
-    /** 
-     * The Netscape cookie draft compliant policy. 
-     */
-    public static final String NETSCAPE = "netscape";
-
-    /** 
-     * The RFC 2109 compliant policy. 
-     */
-    public static final String RFC_2109 = "rfc2109";
-
-    /**
-     * The RFC 2965 compliant policy.
-     */
-    public static final String RFC_2965 = "rfc2965";
-
-    /**
-     * The default 'best match' policy.
-     */
-    public static final String BEST_MATCH = "best-match";
-
-    private CookiePolicy() {
-        super();
-    }
-    
-}
diff --git a/src/org/apache/http/client/params/HttpClientParams.java b/src/org/apache/http/client/params/HttpClientParams.java
deleted file mode 100644
index c21e2b0..0000000
--- a/src/org/apache/http/client/params/HttpClientParams.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/params/HttpClientParams.java $
- * $Revision: 659595 $
- * $Date: 2008-05-23 09:47:14 -0700 (Fri, 23 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.client.params;
-
-import org.apache.http.params.HttpParams;
-
-/**
- * An adaptor for accessing HTTP client parameters in {@link HttpParams}.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 659595 $
- * 
- * @since 4.0
- */
-public class HttpClientParams {
-
-    private HttpClientParams() {
-        super();
-    }
-
-    public static boolean isRedirecting(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getBooleanParameter
-            (ClientPNames.HANDLE_REDIRECTS, true); 
-    }
-
-    public static void setRedirecting(final HttpParams params, boolean value) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setBooleanParameter
-            (ClientPNames.HANDLE_REDIRECTS, value); 
-    }
-    
-    public static boolean isAuthenticating(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getBooleanParameter
-            (ClientPNames.HANDLE_AUTHENTICATION, true); 
-    }
-
-    public static void setAuthenticating(final HttpParams params, boolean value) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setBooleanParameter
-            (ClientPNames.HANDLE_AUTHENTICATION, value); 
-    }
-    
-    public static String getCookiePolicy(final HttpParams params) { 
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        String cookiePolicy = (String)
-            params.getParameter(ClientPNames.COOKIE_POLICY);
-        if (cookiePolicy == null) {
-            return CookiePolicy.BEST_MATCH;
-        }
-        return cookiePolicy;
-    }
-    
-    public static void setCookiePolicy(final HttpParams params, final String cookiePolicy) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setParameter(ClientPNames.COOKIE_POLICY, cookiePolicy);
-    }
-
-}
diff --git a/src/org/apache/http/client/params/package.html b/src/org/apache/http/client/params/package.html
deleted file mode 100644
index b66cdfb..0000000
--- a/src/org/apache/http/client/params/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/params/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-Parameters for configuring <i>HttpClient</i>.
-
-</body>
-</html>
diff --git a/src/org/apache/http/client/protocol/ClientContext.java b/src/org/apache/http/client/protocol/ClientContext.java
deleted file mode 100644
index 1859f9e..0000000
--- a/src/org/apache/http/client/protocol/ClientContext.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/protocol/ClientContext.java $
- * $Revision: 658759 $
- * $Date: 2008-05-21 10:06:17 -0700 (Wed, 21 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.client.protocol;
-
-
-/**
- * {@link org.apache.http.protocol.HttpContext Context}
- * attribute names for client.
- */
-public interface ClientContext {
-    
-    public static final String COOKIESPEC_REGISTRY   = "http.cookiespec-registry"; 
-    public static final String AUTHSCHEME_REGISTRY   = "http.authscheme-registry"; 
-    public static final String COOKIE_STORE          = "http.cookie-store"; 
-    public static final String COOKIE_SPEC           = "http.cookie-spec"; 
-    public static final String COOKIE_ORIGIN         = "http.cookie-origin"; 
-    public static final String CREDS_PROVIDER        = "http.auth.credentials-provider"; 
-    public static final String TARGET_AUTH_STATE     = "http.auth.target-scope"; 
-    public static final String PROXY_AUTH_STATE      = "http.auth.proxy-scope";
-    public static final String AUTH_SCHEME_PREF      = "http.auth.scheme-pref";
-    public static final String USER_TOKEN            = "http.user-token";
-    
-}
diff --git a/src/org/apache/http/client/protocol/ClientContextConfigurer.java b/src/org/apache/http/client/protocol/ClientContextConfigurer.java
deleted file mode 100644
index f2ced63..0000000
--- a/src/org/apache/http/client/protocol/ClientContextConfigurer.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/protocol/ClientContextConfigurer.java $
- * $Revision: 654886 $
- * $Date: 2008-05-09 10:06:12 -0700 (Fri, 09 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.client.protocol;
-
-import java.util.List;
-
-import org.apache.http.auth.AuthSchemeRegistry;
-import org.apache.http.client.CookieStore;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.cookie.CookieSpecRegistry;
-import org.apache.http.protocol.HttpContext;
-
-public class ClientContextConfigurer implements ClientContext {
-    
-    private final HttpContext context;
-
-    public ClientContextConfigurer (final HttpContext context) {
-        if (context == null)
-            throw new IllegalArgumentException("HTTP context may not be null");
-        this.context = context;
-    }
-
-    public void setCookieSpecRegistry(final CookieSpecRegistry registry) {
-        this.context.setAttribute(COOKIESPEC_REGISTRY, registry);
-    }
-    
-    public void setAuthSchemeRegistry(final AuthSchemeRegistry registry) {
-        this.context.setAttribute(AUTHSCHEME_REGISTRY, registry);
-    }
-    
-    public void setCookieStore(final CookieStore store) {
-        this.context.setAttribute(COOKIE_STORE, store);
-    }
-
-    public void setCredentialsProvider(final CredentialsProvider provider) {
-        this.context.setAttribute(CREDS_PROVIDER, provider);
-    }
-
-    public void setAuthSchemePref(final List<String> list) {
-        this.context.setAttribute(AUTH_SCHEME_PREF, list);
-    }
-
-}
diff --git a/src/org/apache/http/client/protocol/RequestAddCookies.java b/src/org/apache/http/client/protocol/RequestAddCookies.java
deleted file mode 100644
index 0de8c40..0000000
--- a/src/org/apache/http/client/protocol/RequestAddCookies.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.client.protocol;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.Header;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.ProtocolException;
-import org.apache.http.client.CookieStore;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.params.HttpClientParams;
-import org.apache.http.conn.ManagedClientConnection;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecRegistry;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.ExecutionContext;
-
-/**
- * Request interceptor that matches cookies available in the current
- * {@link CookieStore} to the request being executed and generates 
- * corresponding cookierequest headers.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 673450 $
- * 
- * @since 4.0
- */
-public class RequestAddCookies implements HttpRequestInterceptor {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    public RequestAddCookies() {
-        super();
-    }
-    
-    public void process(final HttpRequest request, final HttpContext context) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-        
-        // Obtain cookie store
-        CookieStore cookieStore = (CookieStore) context.getAttribute(
-                ClientContext.COOKIE_STORE);
-        if (cookieStore == null) {
-            this.log.info("Cookie store not available in HTTP context");
-            return;
-        }
-        
-        // Obtain the registry of cookie specs
-        CookieSpecRegistry registry= (CookieSpecRegistry) context.getAttribute(
-                ClientContext.COOKIESPEC_REGISTRY);
-        if (registry == null) {
-            this.log.info("CookieSpec registry not available in HTTP context");
-            return;
-        }
-        
-        // Obtain the target host (required)
-        HttpHost targetHost = (HttpHost) context.getAttribute(
-                ExecutionContext.HTTP_TARGET_HOST);
-        if (targetHost == null) {
-            throw new IllegalStateException("Target host not specified in HTTP context");
-        }
-        
-        // Obtain the client connection (required)
-        ManagedClientConnection conn = (ManagedClientConnection) context.getAttribute(
-                ExecutionContext.HTTP_CONNECTION);
-        if (conn == null) {
-            throw new IllegalStateException("Client connection not specified in HTTP context");
-        }
-
-        String policy = HttpClientParams.getCookiePolicy(request.getParams());
-        if (this.log.isDebugEnabled()) {
-            this.log.debug("CookieSpec selected: " + policy);
-        }
-        
-        URI requestURI;
-        if (request instanceof HttpUriRequest) {
-            requestURI = ((HttpUriRequest) request).getURI();
-        } else {
-            try {
-                requestURI = new URI(request.getRequestLine().getUri());
-            } catch (URISyntaxException ex) {
-                throw new ProtocolException("Invalid request URI: " + 
-                        request.getRequestLine().getUri(), ex);
-            }
-        }
-        
-        String hostName = targetHost.getHostName();
-        int port = targetHost.getPort();
-        if (port < 0) {
-            port = conn.getRemotePort();
-        }
-        
-        CookieOrigin cookieOrigin = new CookieOrigin(
-                hostName, 
-                port, 
-                requestURI.getPath(),
-                conn.isSecure());
-        
-        // Get an instance of the selected cookie policy
-        CookieSpec cookieSpec = registry.getCookieSpec(policy, request.getParams());
-        // Get all cookies available in the HTTP state
-        List<Cookie> cookies = new ArrayList<Cookie>(cookieStore.getCookies());
-        // Find cookies matching the given origin
-        List<Cookie> matchedCookies = new ArrayList<Cookie>();
-        for (Cookie cookie : cookies) {
-            if (cookieSpec.match(cookie, cookieOrigin)) {
-                if (this.log.isDebugEnabled()) {
-                    this.log.debug("Cookie " + cookie + " match " + cookieOrigin);
-                }
-                matchedCookies.add(cookie);
-            }
-        }
-        // Generate Cookie request headers
-        if (!matchedCookies.isEmpty()) {
-            List<Header> headers = cookieSpec.formatCookies(matchedCookies);
-            for (Header header : headers) {
-                request.addHeader(header);
-            }
-        }
-        
-        int ver = cookieSpec.getVersion();
-        if (ver > 0) {
-            boolean needVersionHeader = false;
-            for (Cookie cookie : matchedCookies) {
-                if (ver != cookie.getVersion()) {
-                    needVersionHeader = true;
-                }
-            }
-
-            if (needVersionHeader) {
-                Header header = cookieSpec.getVersionHeader();
-                if (header != null) {
-                    // Advertise cookie version support
-                    request.addHeader(header);
-                }
-            }
-        }
-        
-        // Stick the CookieSpec and CookieOrigin instances to the HTTP context
-        // so they could be obtained by the response interceptor
-        context.setAttribute(ClientContext.COOKIE_SPEC, cookieSpec);
-        context.setAttribute(ClientContext.COOKIE_ORIGIN, cookieOrigin);
-    }
-    
-}
diff --git a/src/org/apache/http/client/protocol/RequestDefaultHeaders.java b/src/org/apache/http/client/protocol/RequestDefaultHeaders.java
deleted file mode 100644
index 27d5cc7..0000000
--- a/src/org/apache/http/client/protocol/RequestDefaultHeaders.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/protocol/RequestDefaultHeaders.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.client.protocol;
-
-import java.io.IOException;
-import java.util.Collection;
-
-import org.apache.http.Header;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.client.params.ClientPNames;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * Request interceptor that adds default request headers.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 653041 $
- * 
- * @since 4.0
- */
-public class RequestDefaultHeaders implements HttpRequestInterceptor {
-
-    public RequestDefaultHeaders() {
-        super();
-    }
-    
-    public void process(final HttpRequest request, final HttpContext context) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        // Add default headers
-        Collection<?> defHeaders = (Collection<?>) request.getParams().getParameter(
-                ClientPNames.DEFAULT_HEADERS);
-        if (defHeaders != null) {
-            for (Object defHeader : defHeaders) {
-                request.addHeader((Header) defHeader);
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/client/protocol/RequestProxyAuthentication.java b/src/org/apache/http/client/protocol/RequestProxyAuthentication.java
deleted file mode 100644
index b4dfe76..0000000
--- a/src/org/apache/http/client/protocol/RequestProxyAuthentication.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/protocol/RequestProxyAuthentication.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.client.protocol;
-
-import java.io.IOException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.auth.AUTH;
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.auth.AuthState;
-import org.apache.http.auth.AuthenticationException;
-import org.apache.http.auth.Credentials;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 673450 $
- * 
- * @since 4.0
- */
-public class RequestProxyAuthentication implements HttpRequestInterceptor {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    public RequestProxyAuthentication() {
-        super();
-    }
-    
-    public void process(final HttpRequest request, final HttpContext context) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-
-        if (request.containsHeader(AUTH.PROXY_AUTH_RESP)) {
-            return;
-        }
-        
-        // Obtain authentication state
-        AuthState authState = (AuthState) context.getAttribute(
-                ClientContext.PROXY_AUTH_STATE);
-        if (authState == null) {
-            return;
-        }
-
-        AuthScheme authScheme = authState.getAuthScheme();
-        if (authScheme == null) {
-            return;
-        }
-        
-        Credentials creds = authState.getCredentials();
-        if (creds == null) {
-            this.log.debug("User credentials not available");
-            return;
-        }
-        if (authState.getAuthScope() != null || !authScheme.isConnectionBased()) {
-            try {
-                request.addHeader(authScheme.authenticate(creds, request));
-            } catch (AuthenticationException ex) {
-                if (this.log.isErrorEnabled()) {
-                    this.log.error("Proxy authentication error: " + ex.getMessage());
-                }
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/client/protocol/RequestTargetAuthentication.java b/src/org/apache/http/client/protocol/RequestTargetAuthentication.java
deleted file mode 100644
index c140183..0000000
--- a/src/org/apache/http/client/protocol/RequestTargetAuthentication.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/protocol/RequestTargetAuthentication.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.client.protocol;
-
-import java.io.IOException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.auth.AUTH;
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.auth.AuthState;
-import org.apache.http.auth.AuthenticationException;
-import org.apache.http.auth.Credentials;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 673450 $
- * 
- * @since 4.0
- */
-public class RequestTargetAuthentication implements HttpRequestInterceptor {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    public RequestTargetAuthentication() {
-        super();
-    }
-    
-    public void process(final HttpRequest request, final HttpContext context) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-
-        if (request.containsHeader(AUTH.WWW_AUTH_RESP)) {
-            return;
-        }
-        
-        // Obtain authentication state
-        AuthState authState = (AuthState) context.getAttribute(
-                ClientContext.TARGET_AUTH_STATE);
-        if (authState == null) {
-            return;
-        }
-
-        AuthScheme authScheme = authState.getAuthScheme();
-        if (authScheme == null) {
-            return;
-        }
-        
-        Credentials creds = authState.getCredentials();
-        if (creds == null) {
-            this.log.debug("User credentials not available");
-            return;
-        }
-
-        if (authState.getAuthScope() != null || !authScheme.isConnectionBased()) {
-            try {
-                request.addHeader(authScheme.authenticate(creds, request));
-            } catch (AuthenticationException ex) {
-                if (this.log.isErrorEnabled()) {
-                    this.log.error("Authentication error: " + ex.getMessage());
-                }
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/client/protocol/ResponseProcessCookies.java b/src/org/apache/http/client/protocol/ResponseProcessCookies.java
deleted file mode 100644
index 0689e93..0000000
--- a/src/org/apache/http/client/protocol/ResponseProcessCookies.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/protocol/ResponseProcessCookies.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.client.protocol;
-
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.HttpException;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.client.CookieStore;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SM;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * Response interceptor that populates the current {@link CookieStore} with data 
- * contained in response cookies received in the given the HTTP response.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 673450 $
- * 
- * @since 4.0
- */
-public class ResponseProcessCookies implements HttpResponseInterceptor {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    public ResponseProcessCookies() {
-        super();
-    }
-    
-    public void process(final HttpResponse response, final HttpContext context) 
-            throws HttpException, IOException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-        
-        // Obtain cookie store
-        CookieStore cookieStore = (CookieStore) context.getAttribute(
-                ClientContext.COOKIE_STORE);
-        if (cookieStore == null) {
-            this.log.info("Cookie store not available in HTTP context");
-            return;
-        }
-        // Obtain actual CookieSpec instance
-        CookieSpec cookieSpec = (CookieSpec) context.getAttribute(
-                ClientContext.COOKIE_SPEC);
-        if (cookieSpec == null) {
-            this.log.info("CookieSpec not available in HTTP context");
-            return;
-        }
-        // Obtain actual CookieOrigin instance
-        CookieOrigin cookieOrigin = (CookieOrigin) context.getAttribute(
-                ClientContext.COOKIE_ORIGIN);
-        if (cookieOrigin == null) {
-            this.log.info("CookieOrigin not available in HTTP context");
-            return;
-        }
-        HeaderIterator it = response.headerIterator(SM.SET_COOKIE);
-        processCookies(it, cookieSpec, cookieOrigin, cookieStore);
-        
-        // see if the cookie spec supports cookie versioning.
-        if (cookieSpec.getVersion() > 0) {
-            // process set-cookie2 headers.
-            // Cookie2 will replace equivalent Cookie instances
-            it = response.headerIterator(SM.SET_COOKIE2);
-            processCookies(it, cookieSpec, cookieOrigin, cookieStore);
-        }
-    }
-     
-    private void processCookies(
-            final HeaderIterator iterator, 
-            final CookieSpec cookieSpec,
-            final CookieOrigin cookieOrigin,
-            final CookieStore cookieStore) {
-        while (iterator.hasNext()) {
-            Header header = iterator.nextHeader();
-            try {
-                List<Cookie> cookies = cookieSpec.parse(header, cookieOrigin);
-                for (Cookie cookie : cookies) {
-                    try {
-                        cookieSpec.validate(cookie, cookieOrigin);
-                        cookieStore.addCookie(cookie);
-
-                        if (this.log.isDebugEnabled()) {
-                            this.log.debug("Cookie accepted: \""
-                                    + cookie + "\". ");
-                        }
-                    } catch (MalformedCookieException ex) {
-                        if (this.log.isWarnEnabled()) {
-                            this.log.warn("Cookie rejected: \""
-                                    + cookie + "\". " + ex.getMessage());
-                        }
-                    }
-                }
-            } catch (MalformedCookieException ex) {
-                if (this.log.isWarnEnabled()) {
-                    this.log.warn("Invalid cookie header: \""
-                            + header + "\". " + ex.getMessage());
-                }
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/client/protocol/package.html b/src/org/apache/http/client/protocol/package.html
deleted file mode 100644
index 43dd0d6..0000000
--- a/src/org/apache/http/client/protocol/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/protocol/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-Additional request and response interceptors.
-
-</body>
-</html>
diff --git a/src/org/apache/http/client/utils/CloneUtils.java b/src/org/apache/http/client/utils/CloneUtils.java
deleted file mode 100644
index fec534b..0000000
--- a/src/org/apache/http/client/utils/CloneUtils.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * $HeadURL:$
- * $Revision:$
- * $Date:$
- *
- * ====================================================================
- *
- *  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.client.utils;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-/**
- * A collection of utilities to workaround limitations of Java clone framework.
- */
-public class CloneUtils {
-
-    public static Object clone(final Object obj) throws CloneNotSupportedException {
-        if (obj == null) {
-            return null;
-        }
-        if (obj instanceof Cloneable) {
-            Class<?> clazz = obj.getClass ();
-            Method m;
-            try {
-                m = clazz.getMethod("clone", (Class[]) null);
-            } catch (NoSuchMethodException ex) {
-                throw new NoSuchMethodError(ex.getMessage());
-            }
-            try {
-                return m.invoke(obj, (Object []) null);
-            } catch (InvocationTargetException ex) {
-                Throwable cause = ex.getCause();
-                if (cause instanceof CloneNotSupportedException) {
-                    throw ((CloneNotSupportedException) cause); 
-                } else {
-                    throw new Error("Unexpected exception", cause);
-                }
-            } catch (IllegalAccessException ex) {
-                throw new IllegalAccessError(ex.getMessage());
-            }
-        } else {
-            throw new CloneNotSupportedException();
-        }
-    }
-    
-    /**
-     * This class should not be instantiated.
-     */
-    private CloneUtils() {
-    }
-
-}
diff --git a/src/org/apache/http/client/utils/URIUtils.java b/src/org/apache/http/client/utils/URIUtils.java
deleted file mode 100644
index 1cbb9af..0000000
--- a/src/org/apache/http/client/utils/URIUtils.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/utils/URIUtils.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.client.utils;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import org.apache.http.HttpHost;
-
-/**
- * A collection of utilities for {@link URI URIs}, to workaround
- * bugs within the class or for ease-of-use features.
- */
-public class URIUtils {
-
-     /**
-         * Constructs a {@link URI} using all the parameters. This should be
-         * used instead of
-         * {@link URI#URI(String, String, String, int, String, String, String)}
-         * or any of the other URI multi-argument URI constructors.
-         * 
-         * See <a
-         * href="https://issues.apache.org/jira/browse/HTTPCLIENT-730">HTTPCLIENT-730</a>
-         * for more information.
-         * 
-         * @param scheme
-         *            Scheme name
-         * @param host
-         *            Host name
-         * @param port
-         *            Port number
-         * @param path
-         *            Path
-         * @param query
-         *            Query
-         * @param fragment
-         *            Fragment
-         * 
-         * @throws URISyntaxException
-         *             If both a scheme and a path are given but the path is
-         *             relative, if the URI string constructed from the given
-         *             components violates RFC&nbsp;2396, or if the authority
-         *             component of the string is present but cannot be parsed
-         *             as a server-based authority
-         */
-    public static URI createURI(
-            final String scheme,
-            final String host,
-            int port,
-            final String path,
-            final String query,
-            final String fragment) throws URISyntaxException {
-        
-        StringBuilder buffer = new StringBuilder();
-        if (host != null) {
-            if (scheme != null) {
-                buffer.append(scheme);
-                buffer.append("://");
-            }
-            buffer.append(host);
-            if (port > 0) {
-                buffer.append(':');
-                buffer.append(port);
-            }
-        }
-        if (path == null || !path.startsWith("/")) {
-            buffer.append('/');
-        }
-        if (path != null) {
-            buffer.append(path);
-        }
-        if (query != null) {
-            buffer.append('?');
-            buffer.append(query);
-        }
-        if (fragment != null) {
-            buffer.append('#');
-            buffer.append(fragment);
-        }
-        return new URI(buffer.toString());
-    }
-
-    /**
-     * A convenience method for creating a new {@link URI} whose scheme, host
-     * and port are taken from the target host, but whose path, query and
-     * fragment are taken from the existing URI. The fragment is only used if
-     * dropFragment is false.
-     * 
-     * @param uri
-     *            Contains the path, query and fragment to use.
-     * @param target
-     *            Contains the scheme, host and port to use.
-     * @param dropFragment
-     *            True if the fragment should not be copied.
-     * 
-     * @throws URISyntaxException
-     *             If the resulting URI is invalid.
-     */
-    public static URI rewriteURI(
-            final URI uri, 
-            final HttpHost target,
-            boolean dropFragment) throws URISyntaxException {
-        if (uri == null) {
-            throw new IllegalArgumentException("URI may nor be null");
-        }
-        if (target != null) {
-            return URIUtils.createURI(
-                    target.getSchemeName(), 
-                    target.getHostName(), 
-                    target.getPort(), 
-                    uri.getRawPath(), 
-                    uri.getRawQuery(), 
-                    dropFragment ? null : uri.getRawFragment());
-        } else {
-            return URIUtils.createURI(
-                    null, 
-                    null, 
-                    -1, 
-                    uri.getRawPath(), 
-                    uri.getRawQuery(), 
-                    dropFragment ? null : uri.getRawFragment());
-        }
-    }
-    
-    /**
-     * A convenience method for
-     * {@link URIUtils#rewriteURI(URI, HttpHost, boolean)} that always keeps the
-     * fragment.
-     */
-    public static URI rewriteURI(
-            final URI uri, 
-            final HttpHost target) throws URISyntaxException {
-        return rewriteURI(uri, target, false);
-    }
-    
-    /**
-     * Resolves a URI reference against a base URI. Work-around for bug in
-     * java.net.URI (<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4708535>)
-     *
-     * @param baseURI the base URI
-     * @param reference the URI reference
-     * @return the resulting URI
-     */
-    public static URI resolve(final URI baseURI, final String reference) {
-        return URIUtils.resolve(baseURI, URI.create(reference));
-    }
-
-    /**
-     * Resolves a URI reference against a base URI. Work-around for bug in
-     * java.net.URI (<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4708535>)
-     *
-     * @param baseURI the base URI
-     * @param reference the URI reference
-     * @return the resulting URI
-     */
-    public static URI resolve(final URI baseURI, URI reference){
-        if (baseURI == null) {
-            throw new IllegalArgumentException("Base URI may nor be null");
-        }
-        if (reference == null) {
-            throw new IllegalArgumentException("Reference URI may nor be null");
-        }
-        boolean emptyReference = reference.toString().length() == 0;
-        if (emptyReference) {
-            reference = URI.create("#");
-        }
-        URI resolved = baseURI.resolve(reference);
-        if (emptyReference) {
-            String resolvedString = resolved.toString();
-            resolved = URI.create(resolvedString.substring(0,
-                resolvedString.indexOf('#')));
-        }
-        return resolved;
-    }
-
-    /**
-     * This class should not be instantiated.
-     */
-    private URIUtils() {
-    }
-
-}
diff --git a/src/org/apache/http/client/utils/URLEncodedUtils.java b/src/org/apache/http/client/utils/URLEncodedUtils.java
deleted file mode 100644
index 8b08f90..0000000
--- a/src/org/apache/http/client/utils/URLEncodedUtils.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/utils/URLEncodedUtils.java $
- * $Revision: 655107 $
- * $Date: 2008-05-10 08:20:42 -0700 (Sat, 10 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.client.utils;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Scanner;
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.NameValuePair;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.EntityUtils;
-
-/**
- * A collection of utilities for encoding URLs.
- */
-public class URLEncodedUtils {
-
-    public static final String CONTENT_TYPE = "application/x-www-form-urlencoded";
-    private static final String PARAMETER_SEPARATOR = "&";
-    private static final String NAME_VALUE_SEPARATOR = "=";
-
-    /**
-     * Returns a list of {@link NameValuePair NameValuePairs} as built from the
-     * URI's query portion. For example, a URI of
-     * http://example.org/path/to/file?a=1&b=2&c=3 would return a list of three
-     * NameValuePairs, one for a=1, one for b=2, and one for c=3.
-     * <p>
-     * This is typically useful while parsing an HTTP PUT.
-     * 
-     * @param uri
-     *            uri to parse
-     * @param encoding
-     *            encoding to use while parsing the query
-     */
-    public static List <NameValuePair> parse (final URI uri, final String encoding) {
-        List <NameValuePair> result = Collections.emptyList();
-        final String query = uri.getRawQuery();
-        if (query != null && query.length() > 0) {
-            result = new ArrayList <NameValuePair>();
-            parse(result, new Scanner(query), encoding);
-        }
-        return result;
-    }
-
-    /**
-     * Returns a list of {@link NameValuePair NameValuePairs} as parsed from an
-     * {@link HttpEntity}. The encoding is taken from the entity's
-     * Content-Encoding header.
-     * <p>
-     * This is typically used while parsing an HTTP POST.
-     * 
-     * @param entity
-     *            The entity to parse
-     * @throws IOException
-     *             If there was an exception getting the entity's data.
-     */
-    public static List <NameValuePair> parse (
-            final HttpEntity entity) throws IOException {
-        List <NameValuePair> result = Collections.emptyList();
-        if (isEncoded(entity)) {
-            final String content = EntityUtils.toString(entity);
-            final Header encoding = entity.getContentEncoding();
-            if (content != null && content.length() > 0) {
-                result = new ArrayList <NameValuePair>();
-                parse(result, new Scanner(content), 
-                        encoding != null ? encoding.getValue() : null);
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Returns true if the entity's Content-Type header is
-     * <code>application/x-www-form-urlencoded</code>.
-     */
-    public static boolean isEncoded (final HttpEntity entity) {
-        final Header contentType = entity.getContentType();
-        return (contentType != null && contentType.getValue().equalsIgnoreCase(CONTENT_TYPE));
-    }
-
-    /**
-     * Adds all parameters within the Scanner to the list of
-     * <code>parameters</code>, as encoded by <code>encoding</code>. For
-     * example, a scanner containing the string <code>a=1&b=2&c=3</code> would
-     * add the {@link NameValuePair NameValuePairs} a=1, b=2, and c=3 to the
-     * list of parameters.
-     * 
-     * @param parameters
-     *            List to add parameters to.
-     * @param scanner
-     *            Input that contains the parameters to parse.
-     * @param encoding
-     *            Encoding to use when decoding the parameters.
-     */
-    public static void parse (
-            final List <NameValuePair> parameters, 
-            final Scanner scanner, 
-            final String encoding) {
-        scanner.useDelimiter(PARAMETER_SEPARATOR);
-        while (scanner.hasNext()) {
-            final String[] nameValue = scanner.next().split(NAME_VALUE_SEPARATOR);
-            if (nameValue.length == 0 || nameValue.length > 2)
-                throw new IllegalArgumentException("bad parameter");
-
-            final String name = decode(nameValue[0], encoding);
-            String value = null;
-            if (nameValue.length == 2)
-                value = decode(nameValue[1], encoding);
-            parameters.add(new BasicNameValuePair(name, value));
-        }
-    }
-
-    /**
-     * Returns a String that is suitable for use as an <code>application/x-www-form-urlencoded</code>
-     * list of parameters in an HTTP PUT or HTTP POST.
-     * 
-     * @param parameters  The parameters to include.
-     * @param encoding The encoding to use.
-     */
-    public static String format (
-            final List <? extends NameValuePair> parameters, 
-            final String encoding) {
-        final StringBuilder result = new StringBuilder();
-        for (final NameValuePair parameter : parameters) {
-            final String encodedName = encode(parameter.getName(), encoding);
-            final String value = parameter.getValue();
-            final String encodedValue = value != null ? encode(value, encoding) : "";
-            if (result.length() > 0)
-                result.append(PARAMETER_SEPARATOR);
-            result.append(encodedName);
-            result.append(NAME_VALUE_SEPARATOR);
-            result.append(encodedValue);
-        }
-        return result.toString();
-    }
-
-    private static String decode (final String content, final String encoding) {
-        try {
-            return URLDecoder.decode(content, 
-                    encoding != null ? encoding : HTTP.DEFAULT_CONTENT_CHARSET);
-        } catch (UnsupportedEncodingException problem) {
-            throw new IllegalArgumentException(problem);
-        }
-    }
-
-    private static String encode (final String content, final String encoding) {
-        try {
-            return URLEncoder.encode(content, 
-                    encoding != null ? encoding : HTTP.DEFAULT_CONTENT_CHARSET);
-        } catch (UnsupportedEncodingException problem) {
-            throw new IllegalArgumentException(problem);
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/client/utils/package.html b/src/org/apache/http/client/utils/package.html
deleted file mode 100644
index 7abeb93..0000000
--- a/src/org/apache/http/client/utils/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/utils/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-Helpers and utility classes for <i>HttpClient</i>.
-
-</body>
-</html>
diff --git a/src/org/apache/http/conn/BasicEofSensorWatcher.java b/src/org/apache/http/conn/BasicEofSensorWatcher.java
deleted file mode 100644
index 9a9f3c5..0000000
--- a/src/org/apache/http/conn/BasicEofSensorWatcher.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/BasicEofSensorWatcher.java $
- * $Revision $
- * $Date: 2008-06-27 12:49:20 -0700 (Fri, 27 Jun 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.conn;
-
-import java.io.InputStream;
-import java.io.IOException;
-
-
-/**
- * Basic implementation of {@link EofSensorWatcher EofSensorWatcher}.
- * The underlying connection is released on close or EOF.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 672367 $
- *
- * @since 4.0
- */
-public class BasicEofSensorWatcher implements EofSensorWatcher {
-
-
-    /** The connection to auto-release. */
-    protected ManagedClientConnection managedConn;
-
-    /** Whether to keep the connection alive. */
-    protected boolean attemptReuse;
-
-
-
-    /**
-     * Creates a new watcher for auto-releasing a connection.
-     *
-     * @param conn      the connection to auto-release
-     * @param reuse     whether the connection should be re-used
-     */
-    public BasicEofSensorWatcher(ManagedClientConnection conn,
-                                 boolean reuse) {
-        if (conn == null)
-            throw new IllegalArgumentException
-                ("Connection may not be null.");
-
-        managedConn = conn;
-        attemptReuse = reuse;
-    }
-
-
-    // non-javadoc, see interface EofSensorWatcher
-    public boolean eofDetected(InputStream wrapped)
-        throws IOException {
-
-        try {
-            if (attemptReuse) {
-                // there may be some cleanup required, such as
-                // reading trailers after the response body:
-                wrapped.close();
-                managedConn.markReusable();
-            }
-        } finally {
-            managedConn.releaseConnection();
-        }
-        return false;
-    }
-
-
-    // non-javadoc, see interface EofSensorWatcher
-    public boolean streamClosed(InputStream wrapped)
-        throws IOException {
-
-        try {
-            if (attemptReuse) {
-                // this assumes that closing the stream will
-                // consume the remainder of the response body:
-                wrapped.close();
-                managedConn.markReusable();
-            }
-        } finally {
-            managedConn.releaseConnection();
-        }
-        return false;
-    }
-
-
-    // non-javadoc, see interface EofSensorWatcher
-    public boolean streamAbort(InputStream wrapped)
-        throws IOException {
-
-        managedConn.abortConnection();
-        return false;
-    }
-
-} // class BasicEofSensorWatcher
diff --git a/src/org/apache/http/conn/BasicManagedEntity.java b/src/org/apache/http/conn/BasicManagedEntity.java
deleted file mode 100644
index 9719e1a..0000000
--- a/src/org/apache/http/conn/BasicManagedEntity.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/BasicManagedEntity.java $
- * $Revision $
- * $Date: 2008-06-27 12:49:20 -0700 (Fri, 27 Jun 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.conn;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.entity.HttpEntityWrapper;
-
-
-/**
- * An entity that releases a {@link ManagedClientConnection connection}.
- * A {@link ManagedClientConnection} will
- * typically <i>not</i> return a managed entity, but you can replace
- * the unmanaged entity in the response with a managed one.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 672367 $
- *
- * @since 4.0
- */
-public class BasicManagedEntity extends HttpEntityWrapper
-    implements ConnectionReleaseTrigger, EofSensorWatcher {
-
-    /** The connection to release. */
-    protected ManagedClientConnection managedConn;
-
-    /** Whether to keep the connection alive. */
-    protected final boolean attemptReuse;
-
-
-    /**
-     * Creates a new managed entity that can release a connection.
-     *
-     * @param entity    the entity of which to wrap the content.
-     *                  Note that the argument entity can no longer be used
-     *                  afterwards, since the content will be taken by this
-     *                  managed entity.
-     * @param conn      the connection to release
-     * @param reuse     whether the connection should be re-used
-     */
-    public BasicManagedEntity(HttpEntity entity,
-                              ManagedClientConnection conn,
-                              boolean reuse) {
-        super(entity);
-
-        if (conn == null)
-            throw new IllegalArgumentException
-                ("Connection may not be null.");
-
-        this.managedConn = conn;
-        this.attemptReuse = reuse;
-    }
-
-
-    // non-javadoc, see interface HttpEntity
-    @Override
-    public boolean isRepeatable() {
-        return false;
-    }
-
-
-    // non-javadoc, see interface HttpEntity
-    @Override
-    public InputStream getContent() throws IOException {
-
-        return new EofSensorInputStream(wrappedEntity.getContent(), this);
-    }
-
-
-    // non-javadoc, see interface HttpEntity
-    @Override
-    public void consumeContent() throws IOException {
-
-        if (managedConn == null)
-            return;
-
-        try {
-            if (attemptReuse) {
-                // this will not trigger a callback from EofSensorInputStream
-                wrappedEntity.consumeContent();
-                managedConn.markReusable();
-            }
-        } finally {
-            releaseManagedConnection();
-        }
-    }
-
-    
-    // non-javadoc, see interface HttpEntity
-    @Override
-    public void writeTo(final OutputStream outstream) throws IOException {
-        super.writeTo(outstream);
-        consumeContent();
-    }
-
-
-    // non-javadoc, see interface ConnectionReleaseTrigger
-    public void releaseConnection()
-        throws IOException {
-
-        this.consumeContent();
-    }
-
-
-    // non-javadoc, see interface ConnectionReleaseTrigger
-    public void abortConnection()
-        throws IOException {
-
-        if (managedConn != null) {
-            try {
-                managedConn.abortConnection();
-            } finally {
-                managedConn = null;
-            }
-        }
-    }
-
-
-    // non-javadoc, see interface EofSensorWatcher
-    public boolean eofDetected(InputStream wrapped)
-        throws IOException {
-
-        try {
-            if (attemptReuse && (managedConn != null)) {
-                // there may be some cleanup required, such as
-                // reading trailers after the response body:
-                wrapped.close();
-                managedConn.markReusable();
-            }
-        } finally {
-            releaseManagedConnection();
-        }
-        return false;
-    }
-
-
-    // non-javadoc, see interface EofSensorWatcher
-    public boolean streamClosed(InputStream wrapped)
-        throws IOException {
-
-        try {
-            if (attemptReuse && (managedConn != null)) {
-                // this assumes that closing the stream will
-                // consume the remainder of the response body:
-                wrapped.close();
-                managedConn.markReusable();
-            }
-        } finally {
-            releaseManagedConnection();
-        }
-        return false;
-    }
-
-
-    // non-javadoc, see interface EofSensorWatcher
-    public boolean streamAbort(InputStream wrapped)
-        throws IOException {
-
-        if (managedConn != null) {
-            managedConn.abortConnection();
-        }
-        return false;
-    }
-
-
-    /**
-     * Releases the connection gracefully.
-     * The connection attribute will be nullified.
-     * Subsequent invocations are no-ops.
-     *
-     * @throws IOException      in case of an IO problem.
-     *         The connection attribute will be nullified anyway.
-     */
-    protected void releaseManagedConnection()
-        throws IOException {
-
-        if (managedConn != null) {
-            try {
-                managedConn.releaseConnection();
-            } finally {
-                managedConn = null;
-            }
-        }
-    }
-
-} // class BasicManagedEntity
diff --git a/src/org/apache/http/conn/ClientConnectionManager.java b/src/org/apache/http/conn/ClientConnectionManager.java
deleted file mode 100644
index e3375e1..0000000
--- a/src/org/apache/http/conn/ClientConnectionManager.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ClientConnectionManager.java $
- * $Revision: 671717 $
- * $Date: 2008-06-25 21:03:24 -0700 (Wed, 25 Jun 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.conn;
-
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.scheme.SchemeRegistry;
-
-/**
- * Management interface for {@link ManagedClientConnection client connections}.
- * 
- * @author Michael Becke
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 671717 $
- *
- * @since 4.0
- */
-public interface ClientConnectionManager {
-
-    /**
-     * Obtains the scheme registry used by this manager.
-     *
-     * @return  the scheme registry, never <code>null</code>
-     */
-    SchemeRegistry getSchemeRegistry()
-        ;
-
-    
-    /**
-     * Returns a new {@link ClientConnectionRequest}, from which a
-     * {@link ManagedClientConnection} can be obtained or the request can be
-     * aborted.
-     */
-    ClientConnectionRequest requestConnection(HttpRoute route, Object state)
-        ;
-
-
-    /**
-     * Releases a connection for use by others.
-     * You may optionally specify how long the connection is valid
-     * to be reused.  Values <= 0 are considered to be valid forever.
-     * If the connection is not marked as reusable, the connection will
-     * not be reused regardless of the valid duration.
-     * 
-     * If the connection has been released before,
-     * the call will be ignored.
-     *
-     * @param conn      the connection to release
-     * @param validDuration the duration of time this connection is valid for reuse
-     * @param timeUnit the unit of time validDuration is measured in
-     * 
-     * @see #closeExpiredConnections()
-     */
-    void releaseConnection(ManagedClientConnection conn, long validDuration, TimeUnit timeUnit)
-        ;
-
-
-    /**
-     * Closes idle connections in the pool.
-     * Open connections in the pool that have not been used for the
-     * timespan given by the argument will be closed.
-     * Currently allocated connections are not subject to this method.
-     * Times will be checked with milliseconds precision
-     * 
-     * All expired connections will also be closed.
-     * 
-     * @param idletime  the idle time of connections to be closed
-     * @param tunit     the unit for the <code>idletime</code>
-     * 
-     * @see #closeExpiredConnections()
-     */
-    void closeIdleConnections(long idletime, TimeUnit tunit)
-        ;
-
-    /**
-     * Closes all expired connections in the pool.
-     * Open connections in the pool that have not been used for
-     * the timespan defined when the connection was released will be closed.
-     * Currently allocated connections are not subject to this method.
-     * Times will be checked with milliseconds precision.
-     */
-    void closeExpiredConnections();
-
-    /**
-     * Shuts down this connection manager and releases allocated resources.
-     * This includes closing all connections, whether they are currently
-     * used or not.
-     */
-    void shutdown()
-        ;
-
-
-} // interface ClientConnectionManager
diff --git a/src/org/apache/http/conn/ClientConnectionManagerFactory.java b/src/org/apache/http/conn/ClientConnectionManagerFactory.java
deleted file mode 100644
index 4bedc4e..0000000
--- a/src/org/apache/http/conn/ClientConnectionManagerFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ClientConnectionManagerFactory.java $
- * $Revision: 652020 $
- * $Date: 2008-04-27 14:23:31 -0700 (Sun, 27 Apr 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.conn;
-
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.params.HttpParams;
-
-/**
- * A factory for creating new {@link ClientConnectionManager} instances.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public interface ClientConnectionManagerFactory {    
-
-    ClientConnectionManager newInstance(
-            HttpParams params, 
-            SchemeRegistry schemeRegistry);
-
-}
diff --git a/src/org/apache/http/conn/ClientConnectionOperator.java b/src/org/apache/http/conn/ClientConnectionOperator.java
deleted file mode 100644
index 980b867..0000000
--- a/src/org/apache/http/conn/ClientConnectionOperator.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ClientConnectionOperator.java $
- * $Revision: 645850 $
- * $Date: 2008-04-08 04:08:52 -0700 (Tue, 08 Apr 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.conn;
-
-import java.io.IOException;
-import java.net.InetAddress;
-
-import org.apache.http.HttpHost;
-import org.apache.http.conn.scheme.SocketFactory;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HttpContext;
-
-
-
-/**
- * Interface for opening {@link OperatedClientConnection connections}.
- * This interface encapsulates the logic to create sockets and to
- * open or update the connection with the new socket.
- * Implementations will most likely make use of
- * {@link SocketFactory socket factories}.
- * <br/>
- * The methods in this interface allow the creation of plain and layered
- * sockets. Creating a tunnelled connection through a proxy, however,
- * is not within the scope of the operator.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 645850 $ $Date: 2008-04-08 04:08:52 -0700 (Tue, 08 Apr 2008) $
- *
- * @since 4.0
- */
-public interface ClientConnectionOperator {
-
-
-    /**
-     * Creates a new connection that can be operated.
-     *
-     * @return  a new, unopened connection for use with this operator
-     */
-    OperatedClientConnection createConnection()
-        ;
-
-
-    /**
-     * Opens a connection to the given target host.
-     *
-     * @param conn      the connection to open
-     * @param target    the target host to connect to
-     * @param local     the local address to route from, or
-     *                  <code>null</code> for the default
-     * @param context   the context for the connection
-     * @param params    the parameters for the connection
-     *
-     * @throws IOException      in case of a problem
-     */
-    void openConnection(OperatedClientConnection conn,
-                        HttpHost target,
-                        InetAddress local,
-                        HttpContext context,
-                        HttpParams params)
-        throws IOException
-        ;
-
-
-    /**
-     * Updates a connection with a layered secure connection.
-     * The typical use of this method is to update a tunnelled plain
-     * connection (HTTP) to a secure TLS/SSL connection (HTTPS).
-     *
-     * @param conn      the open connection to update
-     * @param target    the target host for the updated connection.
-     *                  The connection must already be open or tunnelled
-     *                  to the host and port, but the scheme of the target
-     *                  will be used to create a layered connection.
-     * @param context   the context for the connection
-     * @param params    the parameters for the updated connection
-     *
-     * @throws IOException      in case of a problem
-     */
-    void updateSecureConnection(OperatedClientConnection conn,
-                                HttpHost target,
-                                HttpContext context,
-                                HttpParams params)
-        throws IOException
-        ;
-
-
-} // interface ClientConnectionOperator
-
diff --git a/src/org/apache/http/conn/ClientConnectionRequest.java b/src/org/apache/http/conn/ClientConnectionRequest.java
deleted file mode 100644
index 6ba02d0..0000000
--- a/src/org/apache/http/conn/ClientConnectionRequest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ClientConnectionRequest.java $
- * $Revision: 651815 $
- * $Date: 2008-04-26 04:14:43 -0700 (Sat, 26 Apr 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.conn;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * Encapsulates a request for a {@link ManagedClientConnection}.
- */
-public interface ClientConnectionRequest {
-    
-    /**
-     * Obtains a connection within a given time.
-     * This method will block until a connection becomes available,
-     * the timeout expires, or the connection manager is
-     * {@link ClientConnectionManager#shutdown() shut down}.
-     * Timeouts are handled with millisecond precision.
-     * 
-     * If {@link #abortRequest()} is called while this is blocking or
-     * before this began, an {@link InterruptedException} will
-     * be thrown.
-     * 
-     * @param timeout   the timeout, 0 or negative for no timeout
-     * @param tunit     the unit for the <code>timeout</code>,
-     *                  may be <code>null</code> only if there is no timeout
-     *
-     * @return  a connection that can be used to communicate
-     *          along the given route
-     *
-     * @throws ConnectionPoolTimeoutException
-     *         in case of a timeout
-     * @throws InterruptedException
-     *         if the calling thread is interrupted while waiting
-     */
-    ManagedClientConnection getConnection(long timeout, TimeUnit tunit) 
-        throws InterruptedException, ConnectionPoolTimeoutException;
-    
-    /**
-     * Aborts the call to {@link #getConnection(long, TimeUnit)},
-     * causing it to throw an {@link InterruptedException}.
-     */
-    void abortRequest();
-
-}
diff --git a/src/org/apache/http/conn/ConnectTimeoutException.java b/src/org/apache/http/conn/ConnectTimeoutException.java
deleted file mode 100644
index 83a731a..0000000
--- a/src/org/apache/http/conn/ConnectTimeoutException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ConnectTimeoutException.java $
- * $Revision: 617645 $
- * $Date: 2008-02-01 13:05:31 -0800 (Fri, 01 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.conn;
-
-import java.io.InterruptedIOException;
-
-/**
- * A timeout while connecting to an HTTP server or waiting for an
- * available connection from an HttpConnectionManager.
- * 
- * @author <a href="mailto:laura@lwerner.org">Laura Werner</a>
- * 
- * @since 4.0
- */
-public class ConnectTimeoutException extends InterruptedIOException {
-
-    private static final long serialVersionUID = -4816682903149535989L;
-
-    /**
-     * Creates a ConnectTimeoutException with a <tt>null</tt> detail message.
-     */
-    public ConnectTimeoutException() {
-        super();
-    }
-
-    /**
-     * Creates a ConnectTimeoutException with the specified detail message.
-     * 
-     * @param message The exception detail message 
-     */
-    public ConnectTimeoutException(final String message) {
-        super(message);
-    }
-
-}
diff --git a/src/org/apache/http/conn/ConnectionKeepAliveStrategy.java b/src/org/apache/http/conn/ConnectionKeepAliveStrategy.java
deleted file mode 100644
index 27d56cb..0000000
--- a/src/org/apache/http/conn/ConnectionKeepAliveStrategy.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $HeadURL: $
- * $Revision: $
- * $Date: $
- *
- * ====================================================================
- * 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.conn;
-
-import org.apache.http.ConnectionReuseStrategy;
-import org.apache.http.HttpResponse;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * Interface for deciding how long a connection can remain
- * idle before being reused.
- *
- * @author <a href="mailto:sberlin at gmail.com">Sam Berlin</a>
- *
- *
- * @version $Revision: $
- * 
- * @since 4.0
- */
-public interface ConnectionKeepAliveStrategy {
-    
-    /**
-     * Returns the duration of time which this connection can be safely kept
-     * idle. If the connection is left idle for longer than this period of time,
-     * it MUST not reused. A value of 0 or less may be returned to indicate that
-     * there is no suitable suggestion.
-     * 
-     * When coupled with a {@link ConnectionReuseStrategy}, if
-     * {@link ConnectionReuseStrategy#keepAlive(HttpResponse, HttpContext)
-     * returns true, this allows you to control how long the reuse will last. If
-     * keepAlive returns false, this should have no meaningful impact
-     * 
-     * @param response
-     *            The last response received over the connection.
-     * @param context
-     *            the context in which the connection is being used.
-     * 
-     * @return the duration in ms for which it is safe to keep the connection
-     *         idle, or <=0 if no suggested duration.
-     */
-    long getKeepAliveDuration(HttpResponse response, HttpContext context);
-    
-}
diff --git a/src/org/apache/http/conn/ConnectionPoolTimeoutException.java b/src/org/apache/http/conn/ConnectionPoolTimeoutException.java
deleted file mode 100644
index 7d4985e..0000000
--- a/src/org/apache/http/conn/ConnectionPoolTimeoutException.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ConnectionPoolTimeoutException.java $
- * $Revision: 505684 $
- * $Date: 2007-02-10 04:40:02 -0800 (Sat, 10 Feb 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.conn;
-
-/**
- * A timeout while waiting for an available connection 
- * from a connection manager.
- * 
- * @author <a href="mailto:laura@lwerner.org">Laura Werner</a>
- * 
- * @since 4.0
- */
-public class ConnectionPoolTimeoutException extends ConnectTimeoutException {
-
-    private static final long serialVersionUID = -7898874842020245128L;
-
-    /**
-     * Creates a ConnectTimeoutException with a <tt>null</tt> detail message.
-     */
-    public ConnectionPoolTimeoutException() {
-        super();
-    }
-
-    /**
-     * Creates a ConnectTimeoutException with the specified detail message.
-     * 
-     * @param message The exception detail message 
-     */
-    public ConnectionPoolTimeoutException(String message) {
-        super(message);
-    }
-
-}
diff --git a/src/org/apache/http/conn/ConnectionReleaseTrigger.java b/src/org/apache/http/conn/ConnectionReleaseTrigger.java
deleted file mode 100644
index a9ac12e..0000000
--- a/src/org/apache/http/conn/ConnectionReleaseTrigger.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ConnectionReleaseTrigger.java $
- * $Revision: 672367 $
- * $Date: 2008-06-27 12:49:20 -0700 (Fri, 27 Jun 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.conn;
-
-import java.io.IOException;
-
-
-/**
- * Interface for releasing a connection.
- * This can be implemented by various "trigger" objects which are
- * associated with a connection, for example
- * a {@link EofSensorInputStream stream}
- * or an {@link BasicManagedEntity entity}
- * or the {@link ManagedClientConnection connection} itself.
- * <br/>
- * The methods in this interface can safely be called multiple times.
- * The first invocation releases the connection, subsequent calls
- * are ignored.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 672367 $
- *
- * @since 4.0
- */
-public interface ConnectionReleaseTrigger {
-
-    /**
-     * Releases the connection with the option of keep-alive. This is a
-     * "graceful" release and may cause IO operations for consuming the
-     * remainder of a response entity. Use
-     * {@link #abortConnection abortConnection} for a hard release. The
-     * connection may be reused as specified by the duration.
-     * 
-     * @throws IOException
-     *             in case of an IO problem. The connection will be released
-     *             anyway.
-     */
-    void releaseConnection()
-        throws IOException
-        ;
-
-    /**
-     * Releases the connection without the option of keep-alive.
-     * This is a "hard" release that implies a shutdown of the connection.
-     * Use {@link #releaseConnection releaseConnection} for a graceful release.
-     *
-     * @throws IOException      in case of an IO problem.
-     *         The connection will be released anyway.
-     */
-    void abortConnection()
-        throws IOException
-        ;
-
-
-} // interface ConnectionReleaseTrigger
diff --git a/src/org/apache/http/conn/EofSensorInputStream.java b/src/org/apache/http/conn/EofSensorInputStream.java
deleted file mode 100644
index 0e1b90e..0000000
--- a/src/org/apache/http/conn/EofSensorInputStream.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/EofSensorInputStream.java $
- * $Revision: 672367 $
- * $Date: 2008-06-27 12:49:20 -0700 (Fri, 27 Jun 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.conn;
-
-import java.io.InputStream;
-import java.io.IOException;
-
-
-/**
- * A stream wrapper that triggers actions on {@link #close close()} and EOF.
- * Primarily used to auto-release an underlying
- * {@link ManagedClientConnection connection}
- * when the response body is consumed or no longer needed.
- *
- * <p>
- * This class is based on <code>AutoCloseInputStream</code> in HttpClient 3.1,
- * but has notable differences. It does not allow mark/reset, distinguishes
- * different kinds of event, and does not always close the underlying stream
- * on EOF. That decision is left to the {@link EofSensorWatcher watcher}.
- * </p>
- *
- * @see EofSensorWatcher EofSensorWatcher
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author Ortwin Glueck
- * @author Eric Johnson
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 672367 $
- *
- * @since 4.0
- */
-// don't use FilterInputStream as the base class, we'd have to
-// override markSupported(), mark(), and reset() to disable them
-public class EofSensorInputStream extends InputStream
-    implements ConnectionReleaseTrigger {
-
-    /**
-     * The wrapped input stream, while accessible.
-     * The value changes to <code>null</code> when the wrapped stream
-     * becomes inaccessible.
-     */
-    protected InputStream wrappedStream;
-
-
-    /**
-     * Indicates whether this stream itself is closed.
-     * If it isn't, but {@link #wrappedStream wrappedStream}
-     * is <code>null</code>, we're running in EOF mode.
-     * All read operations will indicate EOF without accessing 
-     * the underlying stream. After closing this stream, read
-     * operations will trigger an {@link IOException IOException}.
-     *
-     * @see #isReadAllowed isReadAllowed
-     */
-    private boolean selfClosed;
-
-    /** The watcher to be notified, if any. */
-    private EofSensorWatcher eofWatcher;
-
-
-    /**
-     * Creates a new EOF sensor.
-     * If no watcher is passed, the underlying stream will simply be
-     * closed when EOF is detected or {@link #close close} is called.
-     * Otherwise, the watcher decides whether the underlying stream
-     * should be closed before detaching from it.
-     *
-     * @param in        the wrapped stream
-     * @param watcher   the watcher for events, or <code>null</code> for
-     *                  auto-close behavior without notification
-     */
-    public EofSensorInputStream(final InputStream in,
-                                final EofSensorWatcher watcher) {
-        if (in == null) {
-            throw new IllegalArgumentException
-                ("Wrapped stream may not be null.");
-        }
-
-        wrappedStream = in;
-        selfClosed = false;
-        eofWatcher = watcher;
-    }
-
-
-    /**
-     * Checks whether the underlying stream can be read from.
-     *
-     * @return  <code>true</code> if the underlying stream is accessible,
-     *          <code>false</code> if this stream is in EOF mode and
-     *          detached from the underlying stream
-     *
-     * @throws IOException      if this stream is already closed
-     */
-    protected boolean isReadAllowed() throws IOException {
-        if (selfClosed) {
-            throw new IOException("Attempted read on closed stream.");
-        }
-        return (wrappedStream != null);
-    }
-
-
-    // non-javadoc, see base class InputStream
-    @Override
-    public int read() throws IOException {
-        int l = -1;
-
-        if (isReadAllowed()) {
-            try {
-                l = wrappedStream.read();
-                checkEOF(l);
-            } catch (IOException ex) {
-                checkAbort();
-                throw ex;
-            }
-        }
-
-        return l;
-    }
-
-
-    // non-javadoc, see base class InputStream
-    @Override
-    public int read(byte[] b, int off, int len) throws IOException {
-        int l = -1;
-
-        if (isReadAllowed()) {
-            try {
-                l = wrappedStream.read(b,  off,  len);
-                checkEOF(l);
-            } catch (IOException ex) {
-                checkAbort();
-                throw ex;
-            }
-        }
-
-        return l;
-    }
-
-
-    // non-javadoc, see base class InputStream
-    @Override
-    public int read(byte[] b) throws IOException {
-        int l = -1;
-
-        if (isReadAllowed()) {
-            try {
-                l = wrappedStream.read(b);
-                checkEOF(l);
-            } catch (IOException ex) {
-                checkAbort();
-                throw ex;
-            }
-        }
-        return l;
-    }
-
-
-    // non-javadoc, see base class InputStream
-    @Override
-    public int available() throws IOException {
-        int a = 0; // not -1
-
-        if (isReadAllowed()) {
-            try {
-                a = wrappedStream.available();
-                // no checkEOF() here, available() can't trigger EOF
-            } catch (IOException ex) {
-                checkAbort();
-                throw ex;
-            }
-        }
-
-        return a;
-    }
-
-
-    // non-javadoc, see base class InputStream
-    @Override
-    public void close() throws IOException {
-        // tolerate multiple calls to close()
-        selfClosed = true;
-        checkClose();
-    }
-
-
-    /**
-     * Detects EOF and notifies the watcher.
-     * This method should only be called while the underlying stream is
-     * still accessible. Use {@link #isReadAllowed isReadAllowed} to
-     * check that condition.
-     * <br/>
-     * If EOF is detected, the watcher will be notified and this stream
-     * is detached from the underlying stream. This prevents multiple
-     * notifications from this stream.
-     *
-     * @param eof       the result of the calling read operation.
-     *                  A negative value indicates that EOF is reached.
-     *
-     * @throws IOException
-     *          in case of an IO problem on closing the underlying stream
-     */
-    protected void checkEOF(int eof) throws IOException {
-
-        if ((wrappedStream != null) && (eof < 0)) {
-            try {
-                boolean scws = true; // should close wrapped stream?
-                if (eofWatcher != null)
-                    scws = eofWatcher.eofDetected(wrappedStream);
-                if (scws)
-                    wrappedStream.close();
-            } finally {
-                wrappedStream = null;
-            }
-        }
-    }
-
-
-    /**
-     * Detects stream close and notifies the watcher.
-     * There's not much to detect since this is called by {@link #close close}.
-     * The watcher will only be notified if this stream is closed
-     * for the first time and before EOF has been detected.
-     * This stream will be detached from the underlying stream to prevent
-     * multiple notifications to the watcher.
-     *
-     * @throws IOException
-     *          in case of an IO problem on closing the underlying stream
-     */
-    protected void checkClose() throws IOException {
-
-        if (wrappedStream != null) {
-            try {
-                boolean scws = true; // should close wrapped stream?
-                if (eofWatcher != null)
-                    scws = eofWatcher.streamClosed(wrappedStream);
-                if (scws)
-                    wrappedStream.close();
-            } finally {
-                wrappedStream = null;
-            }
-        }
-    }
-
-
-    /**
-     * Detects stream abort and notifies the watcher.
-     * There's not much to detect since this is called by
-     * {@link #abortConnection abortConnection}.
-     * The watcher will only be notified if this stream is aborted
-     * for the first time and before EOF has been detected or the
-     * stream has been {@link #close closed} gracefully.
-     * This stream will be detached from the underlying stream to prevent
-     * multiple notifications to the watcher.
-     *
-     * @throws IOException
-     *          in case of an IO problem on closing the underlying stream
-     */
-    protected void checkAbort() throws IOException {
-
-        if (wrappedStream != null) {
-            try {
-                boolean scws = true; // should close wrapped stream?
-                if (eofWatcher != null)
-                    scws = eofWatcher.streamAbort(wrappedStream);
-                if (scws)
-                    wrappedStream.close();
-            } finally {
-                wrappedStream = null;
-            }
-        }
-    }
-
-
-    /**
-     * Same as {@link #close close()}.
-     */
-    public void releaseConnection() throws IOException {
-        this.close();
-    }
-
-    /**
-     * Aborts this stream.
-     * This is a special version of {@link #close close()} which prevents
-     * re-use of the underlying connection, if any. Calling this method
-     * indicates that there should be no attempt to read until the end of
-     * the stream.
-     */
-    public void abortConnection() throws IOException {
-        // tolerate multiple calls
-        selfClosed = true;
-        checkAbort();
-    }
-
-} // class EOFSensorInputStream
-
diff --git a/src/org/apache/http/conn/EofSensorWatcher.java b/src/org/apache/http/conn/EofSensorWatcher.java
deleted file mode 100644
index 837f8d9..0000000
--- a/src/org/apache/http/conn/EofSensorWatcher.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/EofSensorWatcher.java $
- * $Revision: 552264 $
- * $Date: 2007-07-01 02:37:47 -0700 (Sun, 01 Jul 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.conn;
-
-import java.io.InputStream;
-import java.io.IOException;
-
-
-/**
- * A watcher for {@link EofSensorInputStream EofSensorInputStream}.
- * Each stream will notify it's watcher at most once.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 552264 $
- *
- * @since 4.0
- */
-public interface EofSensorWatcher {
-
-    /**
-     * Indicates that EOF is detected.
-     *
-     * @param wrapped   the underlying stream which has reached EOF
-     *
-     * @return  <code>true</code> if <code>wrapped</code> should be closed,
-     *          <code>false</code> if it should be left alone
-     *
-     * @throws IOException
-     *         in case of an IO problem, for example if the watcher itself
-     *         closes the underlying stream. The caller will leave the
-     *         wrapped stream alone, as if <code>false</code> was returned.
-     */
-    boolean eofDetected(InputStream wrapped)
-        throws IOException
-        ;
-
-
-    /**
-     * Indicates that the {@link EofSensorInputStream stream} is closed.
-     * This method will be called only if EOF was <i>not</i> detected
-     * before closing. Otherwise, {@link #eofDetected eofDetected} is called.
-     *
-     * @param wrapped   the underlying stream which has not reached EOF
-     *
-     * @return  <code>true</code> if <code>wrapped</code> should be closed,
-     *          <code>false</code> if it should be left alone
-     *
-     * @throws IOException
-     *         in case of an IO problem, for example if the watcher itself
-     *         closes the underlying stream. The caller will leave the
-     *         wrapped stream alone, as if <code>false</code> was returned.
-     */
-    boolean streamClosed(InputStream wrapped)
-        throws IOException
-        ;
-
-
-    /**
-     * Indicates that the {@link EofSensorInputStream stream} is aborted.
-     * This method will be called only if EOF was <i>not</i> detected
-     * before aborting. Otherwise, {@link #eofDetected eofDetected} is called.
-     * <p/>
-     * This method will also be invoked when an input operation causes an
-     * IOException to be thrown to make sure the input stream gets shut down. 
-     *
-     * @param wrapped   the underlying stream which has not reached EOF
-     *
-     * @return  <code>true</code> if <code>wrapped</code> should be closed,
-     *          <code>false</code> if it should be left alone
-     *
-     * @throws IOException
-     *         in case of an IO problem, for example if the watcher itself
-     *         closes the underlying stream. The caller will leave the
-     *         wrapped stream alone, as if <code>false</code> was returned.
-     */
-    boolean streamAbort(InputStream wrapped)
-        throws IOException
-        ;
-
-
-} // interface EofSensorWatcher
diff --git a/src/org/apache/http/conn/HttpHostConnectException.java b/src/org/apache/http/conn/HttpHostConnectException.java
deleted file mode 100644
index 743ca77..0000000
--- a/src/org/apache/http/conn/HttpHostConnectException.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/HttpHostConnectException.java $
- * $Revision: 652020 $
- * $Date: 2008-04-27 14:23:31 -0700 (Sun, 27 Apr 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.conn;
-
-import java.net.ConnectException;
-
-import org.apache.http.HttpHost;
-
-/**
- * A {@link ConnectException} that specifies the {@link HttpHost} that was
- * being connected to.
- */
-public class HttpHostConnectException extends ConnectException {
-
-    private static final long serialVersionUID = -3194482710275220224L;
-
-    private final HttpHost host;
-    
-    public HttpHostConnectException(final HttpHost host, final ConnectException cause) {
-        super("Connection to " + host + " refused");
-        this.host = host;
-        initCause(cause);
-    }
-
-    public HttpHost getHost() {
-        return this.host;
-    }
-    
-}
diff --git a/src/org/apache/http/conn/ManagedClientConnection.java b/src/org/apache/http/conn/ManagedClientConnection.java
deleted file mode 100644
index f642cb9..0000000
--- a/src/org/apache/http/conn/ManagedClientConnection.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ManagedClientConnection.java $
- * $Revision: 672969 $
- * $Date: 2008-06-30 18:09:50 -0700 (Mon, 30 Jun 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.conn;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import javax.net.ssl.SSLSession;
-
-import org.apache.http.HttpClientConnection;
-import org.apache.http.HttpInetConnection;
-import org.apache.http.HttpHost;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HttpContext;
-
-import org.apache.http.conn.routing.HttpRoute;
-
-
-
-/**
- * A client-side connection with advanced connection logic.
- * Instances are typically obtained from a connection manager.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 672969 $
- *
- * @since 4.0
- */
-public interface ManagedClientConnection extends
-    HttpClientConnection, HttpInetConnection, ConnectionReleaseTrigger {
-
-
-    /**
-     * Indicates whether this connection is secure.
-     * The return value is well-defined only while the connection is open.
-     * It may change even while the connection is open.
-     *
-     * @return  <code>true</code> if this connection is secure,
-     *          <code>false</code> otherwise
-     */
-    boolean isSecure()
-        ;
-
-
-    /**
-     * Obtains the current route of this connection.
-     *
-     * @return  the route established so far, or
-     *          <code>null</code> if not connected
-     */
-    HttpRoute getRoute()
-        ;
-
-
-    /**
-     * Obtains the SSL session of the underlying connection, if any.
-     * If this connection is open, and the underlying socket is an
-     * {@link javax.net.ssl.SSLSocket SSLSocket}, the SSL session of
-     * that socket is obtained. This is a potentially blocking operation.
-     * <br/>
-     * <b>Note:</b> Whether the underlying socket is an SSL socket
-     * can not necessarily be determined via {@link #isSecure}.
-     * Plain sockets may be considered secure, for example if they are
-     * connected to a known host in the same network segment.
-     * On the other hand, SSL sockets may be considered insecure,
-     * for example depending on the chosen cipher suite.
-     *
-     * @return  the underlying SSL session if available,
-     *          <code>null</code> otherwise
-     */
-    SSLSession getSSLSession()
-        ;
-
-
-    /**
-     * Opens this connection according to the given route.
-     *
-     * @param route     the route along which to open. It will be opened to
-     *                  the first proxy if present, or directly to the target.
-     * @param context   the context for opening this connection
-     * @param params    the parameters for opening this connection
-     *
-     * @throws IOException      in case of a problem
-     */
-    void open(HttpRoute route, HttpContext context, HttpParams params)
-        throws IOException
-        ;
-
-
-    /**
-     * Indicates that a tunnel to the target has been established.
-     * The route is the one previously passed to {@link #open open}.
-     * Subsequently, {@link #layerProtocol layerProtocol} can be called
-     * to layer the TLS/SSL protocol on top of the tunnelled connection.
-     * <br/>
-     * <b>Note:</b> In HttpClient 3, a call to the corresponding method
-     * would automatically trigger the layering of the TLS/SSL protocol.
-     * This is not the case anymore, you can establish a tunnel without
-     * layering a new protocol over the connection.
-     *
-     * @param secure    <code>true</code> if the tunnel should be considered
-     *                  secure, <code>false</code> otherwise
-     * @param params    the parameters for tunnelling this connection
-     *
-     * @throws IOException  in case of a problem
-     */
-    void tunnelTarget(boolean secure, HttpParams params)
-        throws IOException
-        ;
-
-
-    /**
-     * Indicates that a tunnel to an intermediate proxy has been established.
-     * This is used exclusively for so-called <i>proxy chains</i>, where
-     * a request has to pass through multiple proxies before reaching the
-     * target. In that case, all proxies but the last need to be tunnelled
-     * when establishing the connection. Tunnelling of the last proxy to the
-     * target is optional and would be indicated via {@link #tunnelTarget}.
-     *
-     * @param next      the proxy to which the tunnel was established.
-     *                  This is <i>not</i> the proxy <i>through</i> which
-     *                  the tunnel was established, but the new end point
-     *                  of the tunnel. The tunnel does <i>not</i> yet
-     *                  reach to the target, use {@link #tunnelTarget}
-     *                  to indicate an end-to-end tunnel.
-     * @param secure    <code>true</code> if the connection should be
-     *                  considered secure, <code>false</code> otherwise
-     * @param params    the parameters for tunnelling this connection
-     *
-     * @throws IOException  in case of a problem
-     */
-    void tunnelProxy(HttpHost next, boolean secure, HttpParams params)
-        throws IOException
-        ;
-
-
-    /**
-     * Layers a new protocol on top of a {@link #tunnelTarget tunnelled}
-     * connection. This is typically used to create a TLS/SSL connection
-     * through a proxy.
-     * The route is the one previously passed to {@link #open open}.
-     * It is not guaranteed that the layered connection is
-     * {@link #isSecure secure}.
-     *
-     * @param context   the context for layering on top of this connection
-     * @param params    the parameters for layering on top of this connection
-     *
-     * @throws IOException      in case of a problem
-     */
-    void layerProtocol(HttpContext context, HttpParams params)
-        throws IOException
-        ;
-
-
-    /**
-     * Marks this connection as being in a reusable communication state.
-     * The checkpoints for reuseable communication states (in the absence
-     * of pipelining) are before sending a request and after receiving
-     * the response in it's entirety.
-     * The connection will automatically clear the checkpoint when
-     * used for communication. A call to this method indicates that
-     * the next checkpoint has been reached.
-     * <br/>
-     * A reusable communication state is necessary but not sufficient
-     * for the connection to be reused.
-     * A {@link #getRoute route} mismatch, the connection being closed,
-     * or other circumstances might prevent reuse.
-     */
-    void markReusable()
-        ;
-
-
-    /**
-     * Marks this connection as not being in a reusable state.
-     * This can be used immediately before releasing this connection
-     * to prevent it's reuse. Reasons for preventing reuse include
-     * error conditions and the evaluation of a
-     * {@link org.apache.http.ConnectionReuseStrategy reuse strategy}.
-     * <br/>
-     * <b>Note:</b>
-     * It is <i>not</i> necessary to call here before writing to
-     * or reading from this connection. Communication attempts will
-     * automatically unmark the state as non-reusable. It can then
-     * be switched back using {@link #markReusable markReusable}.
-     */
-    void unmarkReusable()
-        ;
-
-
-    /**
-     * Indicates whether this connection is in a reusable communication state.
-     * See {@link #markReusable markReusable} and
-     * {@link #unmarkReusable unmarkReusable} for details.
-     *
-     * @return  <code>true</code> if this connection is marked as being in
-     *          a reusable communication state,
-     *          <code>false</code> otherwise
-     */
-    boolean isMarkedReusable()
-        ;
-
-    /** 
-     * Assigns a state object to this connection. Connection managers may make 
-     * use of the connection state when allocating persistent connections.
-     *  
-     * @param state The state object
-     */
-    void setState(Object state)
-        ;
-    
-    /**
-     * Returns the state object associated with this connection.
-     * 
-     * @return The state object
-     */
-    Object getState()
-        ;
-    
-    /**
-     * Sets the duration that this connection can remain idle before it is
-     * reused. The connection should not be used again if this time elapses. The
-     * idle duration must be reset after each request sent over this connection.
-     * The elapsed time starts counting when the connection is released, which
-     * is typically after the headers (and any response body, if present) is
-     * fully consumed.
-     */
-    void setIdleDuration(long duration, TimeUnit unit);
-
-} // interface ManagedClientConnection
diff --git a/src/org/apache/http/conn/MultihomePlainSocketFactory.java b/src/org/apache/http/conn/MultihomePlainSocketFactory.java
deleted file mode 100644
index e9549ab..0000000
--- a/src/org/apache/http/conn/MultihomePlainSocketFactory.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/MultihomePlainSocketFactory.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.conn;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.net.SocketTimeoutException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Arrays;
-
-import org.apache.http.conn.scheme.PlainSocketFactory;
-import org.apache.http.conn.scheme.SocketFactory;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-
-/**
- * Socket factory that implements a simple multi-home fail-over on connect failure, 
- * provided the same hostname resolves to multiple {@link InetAddress}es. Please note
- * the {@link #connectSocket(Socket, String, int, InetAddress, int, HttpParams)}
- * method cannot be reliably interrupted by closing the socket returned by the
- * {@link #createSocket()} method.
- */
-public final class MultihomePlainSocketFactory implements SocketFactory {
-
-    /**
-     * The factory singleton.
-     */
-    private static final
-    MultihomePlainSocketFactory DEFAULT_FACTORY = new MultihomePlainSocketFactory();
-
-    /**
-     * Gets the singleton instance of this class.
-     * @return the one and only plain socket factory
-     */
-    public static MultihomePlainSocketFactory getSocketFactory() {
-        return DEFAULT_FACTORY;
-    }
-
-    /**
-     * Restricted default constructor.
-     */
-    private MultihomePlainSocketFactory() {
-        super();
-    }
-
-
-    // non-javadoc, see interface org.apache.http.conn.SocketFactory
-    public Socket createSocket() {
-        return new Socket();
-    }
-
-    /**
-     * Attempts to connects the socket to any of the {@link InetAddress}es the 
-     * given host name resolves to. If connection to all addresses fail, the  
-     * last I/O exception is propagated to the caller.
-     * 
-     * @param sock socket to connect to any of the given addresses
-     * @param host Host name to connect to
-     * @param port the port to connect to
-     * @param localAddress local address
-     * @param localPort local port
-     * @param params HTTP parameters 
-     * 
-     * @throws  IOException if an error occurs during the connection
-     * @throws  SocketTimeoutException if timeout expires before connecting
-     */
-    public Socket connectSocket(Socket sock, String host, int port, 
-                                InetAddress localAddress, int localPort,
-                                HttpParams params)
-        throws IOException {
-
-        if (host == null) {
-            throw new IllegalArgumentException("Target host may not be null.");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("Parameters may not be null.");
-        }
-
-        if (sock == null)
-            sock = createSocket();
-
-        if ((localAddress != null) || (localPort > 0)) {
-
-            // we need to bind explicitly
-            if (localPort < 0)
-                localPort = 0; // indicates "any"
-
-            InetSocketAddress isa =
-                new InetSocketAddress(localAddress, localPort);
-            sock.bind(isa);
-        }
-
-        int timeout = HttpConnectionParams.getConnectionTimeout(params);
-
-        InetAddress[] inetadrs = InetAddress.getAllByName(host);
-        List<InetAddress> addresses = new ArrayList<InetAddress>(inetadrs.length);
-        addresses.addAll(Arrays.asList(inetadrs));
-        Collections.shuffle(addresses);
-
-        IOException lastEx = null;
-        for (InetAddress address: addresses) {
-            try {
-                sock.connect(new InetSocketAddress(address, port), timeout);
-                break;
-            } catch (SocketTimeoutException ex) {
-                throw ex;
-            } catch (IOException ex) {
-                // create new socket
-                sock = new Socket();
-                // keep the last exception and retry
-                lastEx = ex;
-            }
-        }
-        if (lastEx != null) {
-            throw lastEx;
-        }
-        return sock;
-    } // connectSocket
-
-
-    /**
-     * Checks whether a socket connection is secure.
-     * This factory creates plain socket connections
-     * which are not considered secure.
-     *
-     * @param sock      the connected socket
-     *
-     * @return  <code>false</code>
-     *
-     * @throws IllegalArgumentException if the argument is invalid
-     */
-    public final boolean isSecure(Socket sock)
-        throws IllegalArgumentException {
-
-        if (sock == null) {
-            throw new IllegalArgumentException("Socket may not be null.");
-        }
-        // This class check assumes that createSocket() calls the constructor
-        // directly. If it was using javax.net.SocketFactory, we couldn't make
-        // an assumption about the socket class here.
-        if (sock.getClass() != Socket.class) {
-            throw new IllegalArgumentException
-                ("Socket not created by this factory.");
-        }
-        // This check is performed last since it calls a method implemented
-        // by the argument object. getClass() is final in java.lang.Object.
-        if (sock.isClosed()) {
-            throw new IllegalArgumentException("Socket is closed.");
-        }
-
-        return false;
-
-    } // isSecure
-
-
-    /**
-     * Compares this factory with an object.
-     * There is only one instance of this class.
-     *
-     * @param obj       the object to compare with
-     *
-     * @return  iff the argument is this object
-     */
-    @Override
-    public boolean equals(Object obj) {
-        return (obj == this);
-    }
-
-    /**
-     * Obtains a hash code for this object.
-     * All instances of this class have the same hash code.
-     * There is only one instance of this class.
-     */
-    @Override
-    public int hashCode() {
-        return PlainSocketFactory.class.hashCode();
-    }
-
-}
diff --git a/src/org/apache/http/conn/OperatedClientConnection.java b/src/org/apache/http/conn/OperatedClientConnection.java
deleted file mode 100644
index 2eda8e9..0000000
--- a/src/org/apache/http/conn/OperatedClientConnection.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/OperatedClientConnection.java $
- * $Revision: 646087 $
- * $Date: 2008-04-08 14:36:46 -0700 (Tue, 08 Apr 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.conn;
-
-import java.io.IOException;
-import java.net.Socket;
-
-import org.apache.http.HttpClientConnection;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpInetConnection;
-import org.apache.http.params.HttpParams;
-
-
-/**
- * A client-side connection that relies on outside logic to connect sockets to the 
- * appropriate hosts. It can be operated directly by an application, or through an
- * {@link ClientConnectionOperator operator}.
- *
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 646087 $ $Date: 2008-04-08 14:36:46 -0700 (Tue, 08 Apr 2008) $
- *
- * @since 4.0
- */
-public interface OperatedClientConnection
-    extends HttpClientConnection, HttpInetConnection {
-
-    /**
-     * Obtains the target host for this connection.
-     * If the connection is to a proxy but not tunnelled, this is
-     * the proxy. If the connection is tunnelled through a proxy,
-     * this is the target of the tunnel.
-     * <br/>
-     * The return value is well-defined only while the connection is open.
-     * It may change even while the connection is open,
-     * because of an {@link #update update}.
-     *
-     * @return  the host to which this connection is opened
-     */
-    HttpHost getTargetHost()
-        ;
-
-    /**
-     * Indicates whether this connection is secure.
-     * The return value is well-defined only while the connection is open.
-     * It may change even while the connection is open,
-     * because of an {@link #update update}.
-     *
-     * @return  <code>true</code> if this connection is secure,
-     *          <code>false</code> otherwise
-     */
-    boolean isSecure()
-        ;
-
-    /**
-     * Obtains the socket for this connection.
-     * The return value is well-defined only while the connection is open.
-     * It may change even while the connection is open,
-     * because of an {@link #update update}.
-     *
-     * @return  the socket for communicating with the
-     *          {@link #getTargetHost target host}
-     */
-    Socket getSocket()
-        ;
-
-
-    // There is no getParams(). For the moment, we
-    // do not require connections to store parameters.
-
-
-    /**
-     * Signals that this connection is in the process of being open.
-     * <br/>
-     * By calling this method, you can provide the connection with
-     * the unconnected socket that will be connected before
-     * {@link #openCompleted} is called. This allows 
-     * the connection to close that socket if
-     * {@link org.apache.http.HttpConnection#shutdown shutdown}
-     * is called before it is open. Closing the unconnected socket
-     * will interrupt a thread that is blocked on the connect.
-     * Otherwise, that thread will either time out on the connect,
-     * or it returns successfully and then opens this connection
-     * which was just shut down.
-     * <br/>
-     * You also must call {@link #openCompleted} in order to complete
-     * the process
-     *
-     * @param sock      the unconnected socket which is about to
-     *                  be connected.
-     * @param target    the target host of this connection
-     */
-    void opening(Socket sock, HttpHost target)
-        throws IOException
-        ;
-
-
-    /**
-     * Signals that the connection has been successfully open.
-     * An attempt to call this method on an open connection will cause
-     * an exception.
-     *
-     * @param secure    <code>true</code> if this connection is secure, for
-     *                  example if an <code>SSLSocket</code> is used, or
-     *                  <code>false</code> if it is not secure
-     * @param params    parameters for this connection. The parameters will
-     *                  be used when creating dependent objects, for example
-     *                  to determine buffer sizes.
-     */
-    void openCompleted(boolean secure, HttpParams params)
-        throws IOException
-        ;
-
-
-    /**
-     * Updates this connection.
-     * A connection can be updated only while it is open.
-     * Updates are used for example when a tunnel has been established,
-     * or when a TLS/SSL connection has been layered on top of a plain
-     * socket connection.
-     * <br/>
-     * <b>Note:</b> Updating the connection will <i>not</i> close the
-     * previously used socket. It is the caller's responsibility to close
-     * that socket if it is no longer required.
-     *
-     * @param sock      the new socket for communicating with the target host,
-     *                  or <code>null</code> to continue using the old socket.
-     *                  If <code>null</code> is passed, helper objects that
-     *                  depend on the socket should be re-used. In that case,
-     *                  some changes in the parameters will not take effect.
-     * @param target    the new target host of this connection
-     * @param secure    <code>true</code> if this connection is now secure,
-     *                  <code>false</code> if it is not secure
-     * @param params    new parameters for this connection
-     */
-    void update(Socket sock, HttpHost target,
-                boolean secure, HttpParams params)
-        throws IOException
-        ;
-
-
-} // interface OperatedClientConnection
diff --git a/src/org/apache/http/conn/package.html b/src/org/apache/http/conn/package.html
deleted file mode 100644
index e0b29cd..0000000
--- a/src/org/apache/http/conn/package.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/package.html $
- * $Revision: 651813 $
- * $Date: 2008-04-26 03:43:34 -0700 (Sat, 26 Apr 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/>.
- *
- */
--->
-</head>
-<body>
-The client-side connection management and handling API
-at the heart of what is referred to as <i>HttpConn</i>.
-This component provides interfaces and implementations for
-opening and managing connections.
-
-<p>
-The lowest layer of connection handling is comprised of
-{@link org.apache.http.conn.OperatedClientConnection OperatedClientConnection}
-and
-{@link org.apache.http.conn.ClientConnectionOperator ClientConnectionOperator}.
-The connection interface extends the core
-{@link org.apache.http.HttpClientConnection HttpClientConnection}
-by operations to set and update a socket.
-An operator encapsulates the logic to open and layer sockets,
-typically using a {@link org.apache.http.conn.scheme.SocketFactory SocketFactory}.
-The socket factory for a protocol
-{@link org.apache.http.conn.scheme.Scheme Scheme}
-such as "http" or "https" can be looked up in a
-{@link org.apache.http.conn.scheme.SchemeRegistry SchemeRegistry}.
-Applications without a need for sophisticated connection management
-can use this layer directly.
-</p>
-
-<p>
-On top of that lies the connection management layer. A
-{@link org.apache.http.conn.ClientConnectionManager ClientConnectionManager}
-internally manages operated connections, but hands out instances of
-{@link org.apache.http.conn.ManagedClientConnection ManagedClientConnection}.
-This interface abstracts from the underlying socket operations and
-provides convenient methods for opening and updating sockets in order
-to establish a {@link org.apache.http.conn.routing.HttpRoute route}.
-The operator is encapsulated by the connection manager and called
-automatically.
-
-<br/>
-
-Connections obtained from a manager have to be returned after use.
-This can be {@link org.apache.http.conn.ConnectionReleaseTrigger triggered}
-on various levels, either by releasing the
-{@link org.apache.http.conn.ManagedClientConnection
-       connection}
-directly, or by calling a method on an
-{@link org.apache.http.conn.BasicManagedEntity entity}
-received from the connection, or by closing the
-{@link org.apache.http.conn.EofSensorInputStream stream}
-from which that entity is being read.
-
-Connection managers will try to keep returned connections alive in
-order to re-use them for subsequent requests along the same route.
-The managed connection interface and all triggers for connection release
-provide methods to enable or disable this behavior.
-</p>
-
-</body>
-</html>
diff --git a/src/org/apache/http/conn/params/ConnConnectionPNames.java b/src/org/apache/http/conn/params/ConnConnectionPNames.java
deleted file mode 100644
index ff1a090..0000000
--- a/src/org/apache/http/conn/params/ConnConnectionPNames.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnConnectionPNames.java $
- * $Revision: 576068 $
- * $Date: 2007-09-16 03:25:01 -0700 (Sun, 16 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.conn.params;
-
-
-/**
- * Parameter names for connections in HttpConn.
- *
- * @version $Revision: 576068 $
- * 
- * @since 4.0
- */
-public interface ConnConnectionPNames {
-
-
-    /**
-     * Defines the maximum number of ignorable lines before we expect
-     * a HTTP response's status line.
-     * <p>
-     * With HTTP/1.1 persistent connections, the problem arises that
-     * broken scripts could return a wrong Content-Length
-     * (there are more bytes sent than specified).
-     * Unfortunately, in some cases, this cannot be detected after the
-     * bad response, but only before the next one.
-     * So HttpClient must be able to skip those surplus lines this way.
-     * </p>
-     * <p>
-     * This parameter expects a value of type {@link Integer}.
-     * 0 disallows all garbage/empty lines before the status line.
-     * Use {@link java.lang.Integer#MAX_VALUE} for unlimited
-     * (default in lenient mode).
-     * </p>
-     */
-    public static final String MAX_STATUS_LINE_GARBAGE = "http.connection.max-status-line-garbage";
-
-
-}
diff --git a/src/org/apache/http/conn/params/ConnConnectionParamBean.java b/src/org/apache/http/conn/params/ConnConnectionParamBean.java
deleted file mode 100644
index 094b152..0000000
--- a/src/org/apache/http/conn/params/ConnConnectionParamBean.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnConnectionParamBean.java $
- * $Revision: 652020 $
- * $Date: 2008-04-27 14:23:31 -0700 (Sun, 27 Apr 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.conn.params;
-
-import org.apache.http.params.HttpAbstractParamBean;
-import org.apache.http.params.HttpParams;
-
-/**
- * Allows for setting parameters relating to connections on
- * {@link HttpParams}.  This class ensures that the values set on the params
- * are type-safe. 
- */
-public class ConnConnectionParamBean extends HttpAbstractParamBean {
-    
-    public ConnConnectionParamBean (final HttpParams params) {
-        super(params);
-    }
-
-    /**
-     * @see ConnConnectionPNames#MAX_STATUS_LINE_GARBAGE
-     */
-    public void setMaxStatusLineGarbage (final int maxStatusLineGarbage) {
-        params.setIntParameter(ConnConnectionPNames.MAX_STATUS_LINE_GARBAGE, maxStatusLineGarbage);
-    }
-    
-}
diff --git a/src/org/apache/http/conn/params/ConnManagerPNames.java b/src/org/apache/http/conn/params/ConnManagerPNames.java
deleted file mode 100644
index 1184b12..0000000
--- a/src/org/apache/http/conn/params/ConnManagerPNames.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnManagerPNames.java $
- * $Revision: 658781 $
- * $Date: 2008-05-21 10:42:13 -0700 (Wed, 21 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.conn.params;
-
-
-/**
- * Parameter names for connection managers in HttpConn.
- *
- * @version $Revision: 658781 $
- * 
- * @since 4.0
- */
-public interface ConnManagerPNames {
-
-    /**
-     * Defines the timeout in milliseconds used when retrieving an instance of 
-     * {@link org.apache.http.conn.ManagedClientConnection} from the
-     * {@link org.apache.http.conn.ClientConnectionManager}.
-     * <p>
-     * This parameter expects a value of type {@link Long}.
-     * </p>
-     */ 
-    public static final String TIMEOUT = "http.conn-manager.timeout"; 
-
-    /** 
-     * Defines the maximum number of connections per route.
-     * This limit is interpreted by client connection managers
-     * and applies to individual manager instances.
-     * <p>
-     * This parameter expects a value of type {@link ConnPerRoute}.
-     * </p>
-     */
-    public static final String MAX_CONNECTIONS_PER_ROUTE = "http.conn-manager.max-per-route";
-
-    /** 
-     * Defines the maximum number of connections in total.
-     * This limit is interpreted by client connection managers
-     * and applies to individual manager instances.
-     * <p>
-     * This parameter expects a value of type {@link Integer}.
-     * </p>
-     */
-    public static final String MAX_TOTAL_CONNECTIONS = "http.conn-manager.max-total";
-
-}
diff --git a/src/org/apache/http/conn/params/ConnManagerParamBean.java b/src/org/apache/http/conn/params/ConnManagerParamBean.java
deleted file mode 100644
index 830b7bf..0000000
--- a/src/org/apache/http/conn/params/ConnManagerParamBean.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnManagerParamBean.java $
- * $Revision: 658781 $
- * $Date: 2008-05-21 10:42:13 -0700 (Wed, 21 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.conn.params;
-
-import org.apache.http.params.HttpAbstractParamBean;
-import org.apache.http.params.HttpParams;
-
-/**
- * Allows for setting parameters relating to connection managers on
- * {@link HttpParams}.  This class ensures that the values set on the params
- * are type-safe. 
- */
-public class ConnManagerParamBean extends HttpAbstractParamBean {
-
-    public ConnManagerParamBean (final HttpParams params) {
-        super(params);
-    }
-    
-    public void setTimeout (final long timeout) {
-        params.setLongParameter(ConnManagerPNames.TIMEOUT, timeout);
-    }
-
-    /** @see ConnManagerPNames#MAX_TOTAL_CONNECTIONS */
-    public void setMaxTotalConnections (final int maxConnections) {
-        params.setIntParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, maxConnections);
-    }
-    
-    /** @see ConnManagerPNames#MAX_CONNECTIONS_PER_ROUTE */
-    public void setConnectionsPerRoute(final ConnPerRouteBean connPerRoute) {
-        params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, connPerRoute);
-    }
-
-}
diff --git a/src/org/apache/http/conn/params/ConnManagerParams.java b/src/org/apache/http/conn/params/ConnManagerParams.java
deleted file mode 100644
index c6e042e..0000000
--- a/src/org/apache/http/conn/params/ConnManagerParams.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnManagerParams.java $
- * $Revision: 658785 $
- * $Date: 2008-05-21 10:47:40 -0700 (Wed, 21 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.conn.params;
-
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.params.HttpParams;
-
-/**
- * This class represents a collection of HTTP protocol parameters applicable
- * to client-side
- * {@link org.apache.http.conn.ClientConnectionManager connection managers}. 
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author Michael Becke
- * 
- * @version $Revision: 658785 $
- * 
- * @since 4.0
- *
- * @see ConnManagerPNames
- */
-public final class ConnManagerParams implements ConnManagerPNames {
-
-    /** The default maximum number of connections allowed overall */
-    public static final int DEFAULT_MAX_TOTAL_CONNECTIONS = 20;
-
-    /**
-     * Returns the timeout in milliseconds used when retrieving a
-     * {@link org.apache.http.conn.ManagedClientConnection} from the
-     * {@link org.apache.http.conn.ClientConnectionManager}.
-     * 
-     * @return timeout in milliseconds.
-     */ 
-    public static long getTimeout(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getLongParameter(TIMEOUT, 0);
-    }
-
-    /**
-     * Sets the timeout in milliseconds used when retrieving a
-     * {@link org.apache.http.conn.ManagedClientConnection} from the
-     * {@link org.apache.http.conn.ClientConnectionManager}.
-     * 
-     * @param timeout the timeout in milliseconds
-     */ 
-    public static void setTimeout(final HttpParams params, long timeout) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setLongParameter(TIMEOUT, timeout);
-    }
-
-    /** The default maximum number of connections allowed per host */
-    private static final ConnPerRoute DEFAULT_CONN_PER_ROUTE = new ConnPerRoute() {
-        
-        public int getMaxForRoute(HttpRoute route) {
-            return ConnPerRouteBean.DEFAULT_MAX_CONNECTIONS_PER_ROUTE;
-        }
-        
-    };
-    
-    /**
-     * Sets lookup interface for maximum number of connections allowed per route.
-     *
-     * @param params HTTP parameters
-     * @param connPerRoute lookup interface for maximum number of connections allowed 
-     *        per route
-     * 
-     * @see ConnManagerPNames#MAX_CONNECTIONS_PER_ROUTE
-     */
-    public static void setMaxConnectionsPerRoute(final HttpParams params,
-                                                final ConnPerRoute connPerRoute) {
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("HTTP parameters must not be null.");
-        }
-        params.setParameter(MAX_CONNECTIONS_PER_ROUTE, connPerRoute);
-    }
-
-    /**
-     * Returns lookup interface for maximum number of connections allowed per route.
-     *
-     * @param params HTTP parameters
-     * 
-     * @return lookup interface for maximum number of connections allowed per route.
-     * 
-     * @see ConnManagerPNames#MAX_CONNECTIONS_PER_ROUTE
-     */
-    public static ConnPerRoute getMaxConnectionsPerRoute(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("HTTP parameters must not be null.");
-        }
-        ConnPerRoute connPerRoute = (ConnPerRoute) params.getParameter(MAX_CONNECTIONS_PER_ROUTE);
-        if (connPerRoute == null) {
-            connPerRoute = DEFAULT_CONN_PER_ROUTE;
-        }
-        return connPerRoute;
-    }
-
-
-    /**
-     * Sets the maximum number of connections allowed.
-     *
-     * @param params HTTP parameters
-     * @param maxTotalConnections The maximum number of connections allowed.
-     * 
-     * @see ConnManagerPNames#MAX_TOTAL_CONNECTIONS
-     */
-    public static void setMaxTotalConnections(
-            final HttpParams params,
-            int maxTotalConnections) {
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("HTTP parameters must not be null.");
-        }
-        params.setIntParameter(MAX_TOTAL_CONNECTIONS, maxTotalConnections);
-    }
-
-    /**
-     * Gets the maximum number of connections allowed.
-     *
-     * @param params HTTP parameters
-     *
-     * @return The maximum number of connections allowed.
-     * 
-     * @see ConnManagerPNames#MAX_TOTAL_CONNECTIONS
-     */
-    public static int getMaxTotalConnections(
-            final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("HTTP parameters must not be null.");
-        }
-        return params.getIntParameter(MAX_TOTAL_CONNECTIONS, DEFAULT_MAX_TOTAL_CONNECTIONS);
-    }
-
-    
-}
diff --git a/src/org/apache/http/conn/params/ConnPerRoute.java b/src/org/apache/http/conn/params/ConnPerRoute.java
deleted file mode 100644
index abff04e..0000000
--- a/src/org/apache/http/conn/params/ConnPerRoute.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnPerRoute.java $
- * $Revision: 651813 $
- * $Date: 2008-04-26 03:43:34 -0700 (Sat, 26 Apr 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.conn.params;
-
-import org.apache.http.conn.routing.HttpRoute;
-
-/**
- * This interface is intended for looking up maximum number of connections 
- * allowed for for a given route. This class can be used by pooling 
- * {@link org.apache.http.conn.ClientConnectionManager connection managers} for 
- * a fine-grained control of connections on a per route basis. 
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 651813 $
- * 
- * @since 4.0
- */
-public interface ConnPerRoute {
-
-    int getMaxForRoute(HttpRoute route);
-    
-}
diff --git a/src/org/apache/http/conn/params/ConnPerRouteBean.java b/src/org/apache/http/conn/params/ConnPerRouteBean.java
deleted file mode 100644
index c6a36e3..0000000
--- a/src/org/apache/http/conn/params/ConnPerRouteBean.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnPerRouteBean.java $
- * $Revision: 652947 $
- * $Date: 2008-05-02 16:15:40 -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.conn.params;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.http.conn.routing.HttpRoute;
-
-/**
- * This class maintains a map of HTTP routes to maximum number of connections allowed 
- * for those routes. This class can be used by pooling 
- * {@link org.apache.http.conn.ClientConnectionManager connection managers} for 
- * a fine-grained control of connections on a per route basis. 
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 652947 $
- * 
- * @since 4.0
- */
-public final class ConnPerRouteBean implements ConnPerRoute {
-
-    /** The default maximum number of connections allowed per host */
-    public static final int DEFAULT_MAX_CONNECTIONS_PER_ROUTE = 2;   // Per RFC 2616 sec 8.1.4
-    
-    private final Map<HttpRoute, Integer> maxPerHostMap;
-    
-    private int defaultMax;
-    
-    public ConnPerRouteBean(int defaultMax) {
-        super();
-        this.maxPerHostMap = new HashMap<HttpRoute, Integer>();
-        setDefaultMaxPerRoute(defaultMax);
-    }
-    
-    public ConnPerRouteBean() {
-        this(DEFAULT_MAX_CONNECTIONS_PER_ROUTE);
-    }
-    
-    public int getDefaultMax() {
-        return this.defaultMax;
-    }
-
-    public void setDefaultMaxPerRoute(int max) {
-        if (max < 1) {
-            throw new IllegalArgumentException
-                ("The maximum must be greater than 0.");
-        }
-        this.defaultMax = max;
-    }
-
-    public void setMaxForRoute(final HttpRoute route, int max) {
-        if (route == null) {
-            throw new IllegalArgumentException
-                ("HTTP route may not be null.");
-        }
-        if (max < 1) {
-            throw new IllegalArgumentException
-                ("The maximum must be greater than 0.");
-        }
-        this.maxPerHostMap.put(route, Integer.valueOf(max));
-    }
-
-    public int getMaxForRoute(final HttpRoute route) {
-        if (route == null) {
-            throw new IllegalArgumentException
-                ("HTTP route may not be null.");
-        }
-        Integer max = this.maxPerHostMap.get(route);
-        if (max != null) {
-            return max.intValue();
-        } else {
-            return this.defaultMax;
-        }
-    }
-    
-    public void setMaxForRoutes(final Map<HttpRoute, Integer> map) {
-        if (map == null) {
-            return;
-        }
-        this.maxPerHostMap.clear();
-        this.maxPerHostMap.putAll(map);
-    }
-    
-}
diff --git a/src/org/apache/http/conn/params/ConnRoutePNames.java b/src/org/apache/http/conn/params/ConnRoutePNames.java
deleted file mode 100644
index f9d42db..0000000
--- a/src/org/apache/http/conn/params/ConnRoutePNames.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnRoutePNames.java $
- * $Revision: 613656 $
- * $Date: 2008-01-20 11:06:56 -0800 (Sun, 20 Jan 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.conn.params;
-
-/**
- * Parameter names for routing in HttpConn.
- * 
- * @version $Revision: 613656 $
- * 
- * @since 4.0
- */
-public interface ConnRoutePNames {
-
-    /**
-     * Parameter for the default proxy.
-     * The default value will be used by some
-     * {@link org.apache.http.conn.routing.HttpRoutePlanner HttpRoutePlanner}
-     * implementations, in particular the default implementation.
-     * <p>
-     * This parameter expects a value of type {@link org.apache.http.HttpHost}.
-     * </p>
-     */
-    public static final String DEFAULT_PROXY = "http.route.default-proxy";
-
-
-    /**
-     * Parameter for the local address.
-     * On machines with multiple network interfaces, this parameter
-     * can be used to select the network interface from which the
-     * connection originates.
-     * It will be interpreted by the standard
-     * {@link org.apache.http.conn.routing.HttpRoutePlanner HttpRoutePlanner}
-     * implementations, in particular the default implementation.
-     * <p>
-     * This parameter expects a value of type {@link java.net.InetAddress}.
-     * </p>
-     */
-    public static final String LOCAL_ADDRESS = "http.route.local-address";
-
-
-    /**
-     * Parameter for an forced route.
-     * The forced route will be interpreted by the standard
-     * {@link org.apache.http.conn.routing.HttpRoutePlanner HttpRoutePlanner}
-     * implementations.
-     * Instead of computing a route, the given forced route will be
-     * returned, even if it points to the wrong target host.
-     * <p>
-     * This parameter expects a value of type
-     * {@link org.apache.http.conn.routing.HttpRoute HttpRoute}.
-     * </p>
-     */
-    public static final String FORCED_ROUTE = "http.route.forced-route";
-
-}
-
diff --git a/src/org/apache/http/conn/params/ConnRouteParamBean.java b/src/org/apache/http/conn/params/ConnRouteParamBean.java
deleted file mode 100644
index 9464c02..0000000
--- a/src/org/apache/http/conn/params/ConnRouteParamBean.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnRouteParamBean.java $
- * $Revision: 652020 $
- * $Date: 2008-04-27 14:23:31 -0700 (Sun, 27 Apr 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.conn.params;
-
-import java.net.InetAddress;
-
-import org.apache.http.HttpHost;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.params.HttpAbstractParamBean;
-import org.apache.http.params.HttpParams;
-
-/**
- * Allows for setting parameters relating to connection routes on
- * {@link HttpParams}.  This class ensures that the values set on the params
- * are type-safe. 
- */
-public class ConnRouteParamBean extends HttpAbstractParamBean {
-    
-    public ConnRouteParamBean (final HttpParams params) {
-        super(params);
-    }
-
-    /** @see ConnRoutePNames#DEFAULT_PROXY */
-    public void setDefaultProxy (final HttpHost defaultProxy) {
-        params.setParameter(ConnRoutePNames.DEFAULT_PROXY, defaultProxy);
-    }
-
-    /** @see ConnRoutePNames#LOCAL_ADDRESS */
-    public void setLocalAddress (final InetAddress address) {
-        params.setParameter(ConnRoutePNames.LOCAL_ADDRESS, address);
-    }
-
-    /** @see ConnRoutePNames#FORCED_ROUTE */
-    public void setForcedRoute (final HttpRoute route) {
-        params.setParameter(ConnRoutePNames.FORCED_ROUTE, route);
-    }
-    
-}
diff --git a/src/org/apache/http/conn/params/ConnRouteParams.java b/src/org/apache/http/conn/params/ConnRouteParams.java
deleted file mode 100644
index 2fa1654..0000000
--- a/src/org/apache/http/conn/params/ConnRouteParams.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/ConnRouteParams.java $
- * $Revision: 658785 $
- * $Date: 2008-05-21 10:47:40 -0700 (Wed, 21 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.conn.params;
-
-
-import java.net.InetAddress;
-
-import org.apache.http.HttpHost;
-import org.apache.http.params.HttpParams;
-import org.apache.http.conn.routing.HttpRoute;
-
-
-
-/**
- * An adaptor for accessing route related parameters in {@link HttpParams}.
- * See {@link ConnRoutePNames} for parameter name definitions.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * 
- * @version $Revision: 658785 $
- * 
- * @since 4.0
- */
-public class ConnRouteParams implements ConnRoutePNames {
-
-    /**
-     * A special value indicating "no host".
-     * This relies on a nonsense scheme name to avoid conflicts
-     * with actual hosts. Note that this is a <i>valid</i> host.
-     */
-    public static final HttpHost NO_HOST =
-        new HttpHost("127.0.0.255", 0, "no-host");
-
-    /**
-     * A special value indicating "no route".
-     * This is a route with {@link #NO_HOST} as the target.
-     */
-    public static final HttpRoute NO_ROUTE = new HttpRoute(NO_HOST);
-
-
-    /** Disabled default constructor. */
-    private ConnRouteParams() {
-        // no body
-    }
-
-
-    /**
-     * Obtains the {@link ConnRoutePNames#DEFAULT_PROXY DEFAULT_PROXY}
-     * parameter value.
-     * {@link #NO_HOST} will be mapped to <code>null</code>,
-     * to allow unsetting in a hierarchy.
-     *
-     * @param params    the parameters in which to look up
-     *
-     * @return  the default proxy set in the argument parameters, or
-     *          <code>null</code> if not set
-     */
-    public static HttpHost getDefaultProxy(HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("Parameters must not be null.");
-        }
-        HttpHost proxy = (HttpHost)
-            params.getParameter(DEFAULT_PROXY);
-        if ((proxy != null) && NO_HOST.equals(proxy)) {
-            // value is explicitly unset
-            proxy = null;
-        }
-        return proxy;
-    }
-
-
-    /**
-     * Sets the {@link ConnRoutePNames#DEFAULT_PROXY DEFAULT_PROXY}
-     * parameter value.
-     *
-     * @param params    the parameters in which to set the value
-     * @param proxy     the value to set, may be <code>null</code>.
-     *                  Note that {@link #NO_HOST} will be mapped to
-     *                  <code>null</code> by {@link #getDefaultProxy},
-     *                  to allow for explicit unsetting in hierarchies.
-     */
-    public static void setDefaultProxy(HttpParams params,
-                                             HttpHost proxy) {
-        if (params == null) {
-            throw new IllegalArgumentException("Parameters must not be null.");
-        }
-        params.setParameter(DEFAULT_PROXY, proxy);
-    }
-
-
-    /**
-     * Obtains the {@link ConnRoutePNames#FORCED_ROUTE FORCED_ROUTE}
-     * parameter value.
-     * {@link #NO_ROUTE} will be mapped to <code>null</code>,
-     * to allow unsetting in a hierarchy.
-     *
-     * @param params    the parameters in which to look up
-     *
-     * @return  the forced route set in the argument parameters, or
-     *          <code>null</code> if not set
-     */
-    public static HttpRoute getForcedRoute(HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("Parameters must not be null.");
-        }
-        HttpRoute route = (HttpRoute)
-            params.getParameter(FORCED_ROUTE);
-        if ((route != null) && NO_ROUTE.equals(route)) {
-            // value is explicitly unset
-            route = null;
-        }
-        return route;
-    }
-
-
-    /**
-     * Sets the {@link ConnRoutePNames#FORCED_ROUTE FORCED_ROUTE}
-     * parameter value.
-     *
-     * @param params    the parameters in which to set the value
-     * @param route     the value to set, may be <code>null</code>.
-     *                  Note that {@link #NO_ROUTE} will be mapped to
-     *                  <code>null</code> by {@link #getForcedRoute},
-     *                  to allow for explicit unsetting in hierarchies.
-     */
-    public static void setForcedRoute(HttpParams params,
-                                            HttpRoute route) {
-        if (params == null) {
-            throw new IllegalArgumentException("Parameters must not be null.");
-        }
-        params.setParameter(FORCED_ROUTE, route);
-    }
-
-
-    /**
-     * Obtains the {@link ConnRoutePNames#LOCAL_ADDRESS LOCAL_ADDRESS}
-     * parameter value.
-     * There is no special value that would automatically be mapped to
-     * <code>null</code>. You can use the wildcard address (0.0.0.0 for IPv4,
-     * :: for IPv6) to override a specific local address in a hierarchy.
-     *
-     * @param params    the parameters in which to look up
-     *
-     * @return  the local address set in the argument parameters, or
-     *          <code>null</code> if not set
-     */
-    public static InetAddress getLocalAddress(HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("Parameters must not be null.");
-        }
-        InetAddress local = (InetAddress)
-            params.getParameter(LOCAL_ADDRESS);
-        // no explicit unsetting
-        return local;
-    }
-
-
-    /**
-     * Sets the {@link ConnRoutePNames#LOCAL_ADDRESS LOCAL_ADDRESS}
-     * parameter value.
-     *
-     * @param params    the parameters in which to set the value
-     * @param local     the value to set, may be <code>null</code>
-     */
-    public static void setLocalAddress(HttpParams params,
-                                             InetAddress local) {
-        if (params == null) {
-            throw new IllegalArgumentException("Parameters must not be null.");
-        }
-        params.setParameter(LOCAL_ADDRESS, local);
-    }
-    
-}
-
diff --git a/src/org/apache/http/conn/params/package.html b/src/org/apache/http/conn/params/package.html
deleted file mode 100644
index 9b80420..0000000
--- a/src/org/apache/http/conn/params/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/params/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-Parameters for configuring <i>HttpConn</i>.
-
-</body>
-</html>
diff --git a/src/org/apache/http/conn/routing/BasicRouteDirector.java b/src/org/apache/http/conn/routing/BasicRouteDirector.java
deleted file mode 100644
index a3714ec..0000000
--- a/src/org/apache/http/conn/routing/BasicRouteDirector.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/routing/BasicRouteDirector.java $
- * $Revision: 620255 $
- * $Date: 2008-02-10 02:23:55 -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.conn.routing;
-
-
-
-/**
- * Basic implementation of an {@link HttpRouteDirector HttpRouteDirector}.
- * This implementation is stateless and therefore thread-safe.
- * 
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 620255 $
- *
- * @since 4.0
- */
-public class BasicRouteDirector implements HttpRouteDirector {
-
-    // public default constructor
-
-
-    /**
-     * Provides the next step.
-     *
-     * @param plan      the planned route
-     * @param fact      the currently established route, or
-     *                  <code>null</code> if nothing is established
-     *
-     * @return  one of the constants defined in this class, indicating
-     *          either the next step to perform, or success, or failure.
-     *          0 is for success, a negative value for failure.
-     */
-    public int nextStep(RouteInfo plan, RouteInfo fact) {
-        if (plan == null) {
-            throw new IllegalArgumentException
-                ("Planned route may not be null.");
-        }
-
-        int step = UNREACHABLE;
-
-        if ((fact == null) || (fact.getHopCount() < 1))
-            step = firstStep(plan);
-        else if (plan.getHopCount() > 1)
-            step = proxiedStep(plan, fact);
-        else
-            step = directStep(plan, fact);
-
-        return step;
-
-    } // nextStep
-
-
-    /**
-     * Determines the first step to establish a route.
-     *
-     * @param plan      the planned route
-     *
-     * @return  the first step
-     */
-    protected int firstStep(RouteInfo plan) {
-
-        return (plan.getHopCount() > 1) ?
-            CONNECT_PROXY : CONNECT_TARGET;
-    }
-
-
-    /**
-     * Determines the next step to establish a direct connection.
-     *
-     * @param plan      the planned route
-     * @param fact      the currently established route
-     *
-     * @return  one of the constants defined in this class, indicating
-     *          either the next step to perform, or success, or failure
-     */
-    protected int directStep(RouteInfo plan, RouteInfo fact) {
-
-        if (fact.getHopCount() > 1)
-            return UNREACHABLE;
-        if (!plan.getTargetHost().equals(fact.getTargetHost()))
-            return UNREACHABLE;
-        // If the security is too low, we could now suggest to layer
-        // a secure protocol on the direct connection. Layering on direct
-        // connections has not been supported in HttpClient 3.x, we don't
-        // consider it here until there is a real-life use case for it.
-
-        // Should we tolerate if security is better than planned?
-        // (plan.isSecure() && !fact.isSecure())
-        if (plan.isSecure() != fact.isSecure())
-            return UNREACHABLE;
-
-        // Local address has to match only if the plan specifies one.
-        if ((plan.getLocalAddress() != null) &&
-            !plan.getLocalAddress().equals(fact.getLocalAddress())
-            )
-            return UNREACHABLE;
-
-        return COMPLETE;
-    }
-
-
-    /**
-     * Determines the next step to establish a connection via proxy.
-     *
-     * @param plan      the planned route
-     * @param fact      the currently established route
-     *
-     * @return  one of the constants defined in this class, indicating
-     *          either the next step to perform, or success, or failure
-     */
-    protected int proxiedStep(RouteInfo plan, RouteInfo fact) {
-
-        if (fact.getHopCount() <= 1)
-            return UNREACHABLE;
-        if (!plan.getTargetHost().equals(fact.getTargetHost()))
-            return UNREACHABLE;
-        final int phc = plan.getHopCount();
-        final int fhc = fact.getHopCount();
-        if (phc < fhc)
-            return UNREACHABLE;
-
-        for (int i=0; i<fhc-1; i++) {
-            if (!plan.getHopTarget(i).equals(fact.getHopTarget(i)))
-                return UNREACHABLE;
-        }
-        // now we know that the target matches and proxies so far are the same
-        if (phc > fhc)
-            return TUNNEL_PROXY; // need to extend the proxy chain
-            
-        // proxy chain and target are the same, check tunnelling and layering
-        if ((fact.isTunnelled() && !plan.isTunnelled()) ||
-            (fact.isLayered()   && !plan.isLayered()))
-            return UNREACHABLE;
-
-        if (plan.isTunnelled() && !fact.isTunnelled())
-            return TUNNEL_TARGET;
-        if (plan.isLayered() && !fact.isLayered())
-            return LAYER_PROTOCOL;
-
-        // tunnel and layering are the same, remains to check the security
-        // Should we tolerate if security is better than planned?
-        // (plan.isSecure() && !fact.isSecure())
-        if (plan.isSecure() != fact.isSecure())
-            return UNREACHABLE;
-
-        return COMPLETE;
-    }
-
-
-} // class BasicRouteDirector
diff --git a/src/org/apache/http/conn/routing/HttpRoute.java b/src/org/apache/http/conn/routing/HttpRoute.java
deleted file mode 100644
index 1e870b8..0000000
--- a/src/org/apache/http/conn/routing/HttpRoute.java
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/routing/HttpRoute.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.conn.routing;
-
-import java.net.InetAddress;
-
-import org.apache.http.HttpHost;
-
-/**
- * The route for a request.
- * Instances of this class are unmodifiable and therefore suitable
- * for use as lookup keys.
- * 
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 653041 $
- *
- * @since 4.0
- */
-public final class HttpRoute implements RouteInfo, Cloneable {
-
-    /** The target host to connect to. */
-    private final HttpHost targetHost;
-
-    /**
-     * The local address to connect from.
-     * <code>null</code> indicates that the default should be used.
-     */
-    private final InetAddress localAddress;
-
-    /** The proxy servers, if any. */
-    private final HttpHost[] proxyChain;
-
-    /** Whether the the route is tunnelled through the proxy. */
-    private final TunnelType tunnelled;
-
-    /** Whether the route is layered. */
-    private final LayerType layered;
-
-    /** Whether the route is (supposed to be) secure. */
-    private final boolean secure;
-
-
-    /**
-     * Internal, fully-specified constructor.
-     * This constructor does <i>not</i> clone the proxy chain array,
-     * nor test it for <code>null</code> elements. This conversion and
-     * check is the responsibility of the public constructors.
-     * The order of arguments here is different from the similar public
-     * constructor, as required by Java.
-     *
-     * @param local     the local address to route from, or
-     *                  <code>null</code> for the default
-     * @param target    the host to which to route
-     * @param proxies   the proxy chain to use, or
-     *                  <code>null</code> for a direct route
-     * @param secure    <code>true</code> if the route is (to be) secure,
-     *                  <code>false</code> otherwise
-     * @param tunnelled the tunnel type of this route, or
-     *                  <code>null</code> for PLAIN
-     * @param layered   the layering type of this route, or
-     *                  <code>null</code> for PLAIN
-     */
-    private HttpRoute(InetAddress local,
-                      HttpHost target, HttpHost[] proxies,
-                      boolean secure,
-                      TunnelType tunnelled, LayerType layered) {
-        if (target == null) {
-            throw new IllegalArgumentException
-                ("Target host may not be null.");
-        }
-        if ((tunnelled == TunnelType.TUNNELLED) && (proxies == null)) {
-            throw new IllegalArgumentException
-                ("Proxy required if tunnelled.");
-        }
-
-        // tunnelled is already checked above, that is in line with the default
-        if (tunnelled == null)
-            tunnelled = TunnelType.PLAIN;
-        if (layered == null)
-            layered = LayerType.PLAIN;
-
-        this.targetHost   = target;
-        this.localAddress = local;
-        this.proxyChain   = proxies;
-        this.secure       = secure;
-        this.tunnelled    = tunnelled;
-        this.layered      = layered;
-    }
-
-
-    /**
-     * Creates a new route with all attributes specified explicitly.
-     *
-     * @param target    the host to which to route
-     * @param local     the local address to route from, or
-     *                  <code>null</code> for the default
-     * @param proxies   the proxy chain to use, or
-     *                  <code>null</code> for a direct route
-     * @param secure    <code>true</code> if the route is (to be) secure,
-     *                  <code>false</code> otherwise
-     * @param tunnelled the tunnel type of this route
-     * @param layered   the layering type of this route
-     */
-    public HttpRoute(HttpHost target, InetAddress local, HttpHost[] proxies,
-                     boolean secure, TunnelType tunnelled, LayerType layered) {
-        this(local, target, toChain(proxies), secure, tunnelled, layered);
-    }
-
-
-    /**
-     * Creates a new route with at most one proxy.
-     *
-     * @param target    the host to which to route
-     * @param local     the local address to route from, or
-     *                  <code>null</code> for the default
-     * @param proxy     the proxy to use, or
-     *                  <code>null</code> for a direct route
-     * @param secure    <code>true</code> if the route is (to be) secure,
-     *                  <code>false</code> otherwise
-     * @param tunnelled <code>true</code> if the route is (to be) tunnelled
-     *                  via the proxy,
-     *                  <code>false</code> otherwise
-     * @param layered   <code>true</code> if the route includes a
-     *                  layered protocol,
-     *                  <code>false</code> otherwise
-     */
-    public HttpRoute(HttpHost target, InetAddress local, HttpHost proxy,
-                     boolean secure, TunnelType tunnelled, LayerType layered) {
-        this(local, target, toChain(proxy), secure, tunnelled, layered);
-    }
-
-
-    /**
-     * Creates a new direct route.
-     * That is a route without a proxy.
-     *
-     * @param target    the host to which to route
-     * @param local     the local address to route from, or
-     *                  <code>null</code> for the default
-     * @param secure    <code>true</code> if the route is (to be) secure,
-     *                  <code>false</code> otherwise
-     */
-    public HttpRoute(HttpHost target, InetAddress local, boolean secure) {
-        this(local, target, null, secure, TunnelType.PLAIN, LayerType.PLAIN);
-    }
-
-
-    /**
-     * Creates a new direct insecure route.
-     *
-     * @param target    the host to which to route
-     */
-    public HttpRoute(HttpHost target) {
-        this(null, target, null, false, TunnelType.PLAIN, LayerType.PLAIN);
-    }
-
-
-    /**
-     * Creates a new route through a proxy.
-     * When using this constructor, the <code>proxy</code> MUST be given.
-     * For convenience, it is assumed that a secure connection will be
-     * layered over a tunnel through the proxy.
-     *
-     * @param target    the host to which to route
-     * @param local     the local address to route from, or
-     *                  <code>null</code> for the default
-     * @param proxy     the proxy to use
-     * @param secure    <code>true</code> if the route is (to be) secure,
-     *                  <code>false</code> otherwise
-     */
-    public HttpRoute(HttpHost target, InetAddress local, HttpHost proxy,
-                     boolean secure) {
-        this(local, target, toChain(proxy), secure,
-             secure ? TunnelType.TUNNELLED : TunnelType.PLAIN,
-             secure ? LayerType.LAYERED    : LayerType.PLAIN);
-        if (proxy == null) {
-            throw new IllegalArgumentException
-                ("Proxy host may not be null.");
-        }
-    }
-
-
-    /**
-     * Helper to convert a proxy to a proxy chain.
-     *
-     * @param proxy     the only proxy in the chain, or <code>null</code>
-     *
-     * @return  a proxy chain array, or <code>null</code>
-     */
-    private static HttpHost[] toChain(HttpHost proxy) {
-        if (proxy == null)
-            return null;
-
-        return new HttpHost[]{ proxy };
-    }
-
-
-    /**
-     * Helper to duplicate and check a proxy chain.
-     * An empty proxy chain is converted to <code>null</code>.
-     *
-     * @param proxies   the proxy chain to duplicate, or <code>null</code>
-     *
-     * @return  a new proxy chain array, or <code>null</code>
-     */
-    private static HttpHost[] toChain(HttpHost[] proxies) {
-        if ((proxies == null) || (proxies.length < 1))
-            return null;
-
-        for (HttpHost proxy : proxies) {
-            if (proxy == null)
-                throw new IllegalArgumentException
-                        ("Proxy chain may not contain null elements.");
-        }
-
-        // copy the proxy chain, the traditional way
-        HttpHost[] result = new HttpHost[proxies.length];
-        System.arraycopy(proxies, 0, result, 0, proxies.length);
-
-        return result;
-    }
-
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final HttpHost getTargetHost() {
-        return this.targetHost;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final InetAddress getLocalAddress() {
-        return this.localAddress;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final int getHopCount() {
-        return (proxyChain == null) ? 1 : (proxyChain.length+1);
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final HttpHost getHopTarget(int hop) {
-        if (hop < 0)
-            throw new IllegalArgumentException
-                ("Hop index must not be negative: " + hop);
-        final int hopcount = getHopCount();
-        if (hop >= hopcount)
-            throw new IllegalArgumentException
-                ("Hop index " + hop +
-                 " exceeds route length " + hopcount);
-
-        HttpHost result = null;
-        if (hop < hopcount-1)
-            result = this.proxyChain[hop];
-        else
-            result = this.targetHost;
-
-        return result;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final HttpHost getProxyHost() {
-        return (this.proxyChain == null) ? null : this.proxyChain[0];
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final TunnelType getTunnelType() {
-        return this.tunnelled;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final boolean isTunnelled() {
-        return (this.tunnelled == TunnelType.TUNNELLED);
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final LayerType getLayerType() {
-        return this.layered;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final boolean isLayered() {
-        return (this.layered == LayerType.LAYERED);
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final boolean isSecure() {
-        return this.secure;
-    }
-
-
-    /**
-     * Compares this route to another.
-     *
-     * @param o         the object to compare with
-     *
-     * @return  <code>true</code> if the argument is the same route,
-     *          <code>false</code>
-     */
-    @Override
-    public final boolean equals(Object o) {
-        if (o == this)
-            return true;
-        if (!(o instanceof HttpRoute))
-            return false;
-
-        HttpRoute that = (HttpRoute) o;
-        boolean equal = this.targetHost.equals(that.targetHost);
-        equal &=
-            ( this.localAddress == that.localAddress) ||
-            ((this.localAddress != null) &&
-              this.localAddress.equals(that.localAddress));
-        equal &=
-            ( this.proxyChain        == that.proxyChain) ||
-            ((this.proxyChain        != null) &&
-             (that.proxyChain        != null) &&
-             (this.proxyChain.length == that.proxyChain.length));
-        // comparison of actual proxies follows below
-        equal &=
-            (this.secure    == that.secure) &&
-            (this.tunnelled == that.tunnelled) &&
-            (this.layered   == that.layered);
-
-        // chain length has been compared above, now check the proxies
-        if (equal && (this.proxyChain != null)) {
-            for (int i=0; equal && (i<this.proxyChain.length); i++)
-                equal = this.proxyChain[i].equals(that.proxyChain[i]);
-        }
-
-        return equal;
-    }
-
-
-    /**
-     * Generates a hash code for this route.
-     *
-     * @return  the hash code
-     */
-    @Override
-    public final int hashCode() {
-
-        int hc = this.targetHost.hashCode();
-
-        if (this.localAddress != null)
-            hc ^= localAddress.hashCode();
-        if (this.proxyChain != null) {
-            hc ^= proxyChain.length;
-            for (HttpHost aProxyChain : proxyChain) hc ^= aProxyChain.hashCode();
-        }
-
-        if (this.secure)
-            hc ^= 0x11111111;
-
-        hc ^= this.tunnelled.hashCode();
-        hc ^= this.layered.hashCode();
-
-        return hc;
-    }
-
-
-    /**
-     * Obtains a description of this route.
-     *
-     * @return  a human-readable representation of this route
-     */
-    @Override
-    public final String toString() {
-        StringBuilder cab = new StringBuilder(50 + getHopCount()*30);
-
-        cab.append("HttpRoute[");
-        if (this.localAddress != null) {
-            cab.append(this.localAddress);
-            cab.append("->");
-        }
-        cab.append('{');
-        if (this.tunnelled == TunnelType.TUNNELLED)
-            cab.append('t');
-        if (this.layered == LayerType.LAYERED)
-            cab.append('l');
-        if (this.secure)
-            cab.append('s');
-        cab.append("}->");
-        if (this.proxyChain != null) {
-            for (HttpHost aProxyChain : this.proxyChain) {
-                cab.append(aProxyChain);
-                cab.append("->");
-            }
-        }
-        cab.append(this.targetHost);
-        cab.append(']');
-
-        return cab.toString();
-    }
-
-
-    // default implementation of clone() is sufficient
-    @Override
-    public Object clone() throws CloneNotSupportedException {
-        return super.clone();
-    }
-
-
-} // class HttpRoute
diff --git a/src/org/apache/http/conn/routing/HttpRouteDirector.java b/src/org/apache/http/conn/routing/HttpRouteDirector.java
deleted file mode 100644
index 8cfcf67..0000000
--- a/src/org/apache/http/conn/routing/HttpRouteDirector.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/routing/HttpRouteDirector.java $
- * $Revision: 620255 $
- * $Date: 2008-02-10 02:23:55 -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.conn.routing;
-
-
-
-/**
- * Provides directions on establishing a route.
- * Implementations of this interface compare a planned route with
- * a tracked route and indicate the next step required.
- * 
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 620255 $
- *
- * @since 4.0
- */
-public interface HttpRouteDirector {
-
-    /** Indicates that the route can not be established at all. */
-    public final static int UNREACHABLE = -1;
-
-    /** Indicates that the route is complete. */
-    public final static int COMPLETE = 0;
-
-    /** Step: open connection to target. */
-    public final static int CONNECT_TARGET = 1;
-
-    /** Step: open connection to proxy. */
-    public final static int CONNECT_PROXY = 2;
-
-    /** Step: tunnel through proxy to target. */
-    public final static int TUNNEL_TARGET = 3;
-
-    /** Step: tunnel through proxy to other proxy. */
-    public final static int TUNNEL_PROXY = 4;
-
-    /** Step: layer protocol (over tunnel). */
-    public final static int LAYER_PROTOCOL = 5;
-
-
-    /**
-     * Provides the next step.
-     *
-     * @param plan      the planned route
-     * @param fact      the currently established route, or
-     *                  <code>null</code> if nothing is established
-     *
-     * @return  one of the constants defined in this interface, indicating
-     *          either the next step to perform, or success, or failure.
-     *          0 is for success, a negative value for failure.
-     */
-    public int nextStep(RouteInfo plan, RouteInfo fact)
-        ;
-
-
-} // interface HttpRouteDirector
diff --git a/src/org/apache/http/conn/routing/HttpRoutePlanner.java b/src/org/apache/http/conn/routing/HttpRoutePlanner.java
deleted file mode 100644
index 489702a..0000000
--- a/src/org/apache/http/conn/routing/HttpRoutePlanner.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/routing/HttpRoutePlanner.java $
- * $Revision: 613654 $
- * $Date: 2008-01-20 11:00:19 -0800 (Sun, 20 Jan 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.conn.routing;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.protocol.HttpContext;
-
-
-
-/**
- * Encapsulates logic to compute a {@link HttpRoute} to a target host.
- * Implementations may for example be based on parameters, or on the
- * standard Java system properties.
- */
-public interface HttpRoutePlanner {
-    
-    /**
-     * Determines the route for a request.
-     *
-     * @param target    the target host for the request.
-     *                  Implementations may accept <code>null</code>
-     *                  if they can still determine a route, for example
-     *                  to a default target or by inspecting the request.
-     * @param request   the request to execute
-     * @param context   the context to use for the subsequent execution.
-     *                  Implementations may accept <code>null</code>.
-     *
-     * @return  the route that the request should take
-     *
-     * @throws HttpException    in case of a problem
-     */        
-    public HttpRoute determineRoute(HttpHost target,
-                                    HttpRequest request,
-                                    HttpContext context)
-        throws HttpException
-        ;
-    
-}
diff --git a/src/org/apache/http/conn/routing/RouteInfo.java b/src/org/apache/http/conn/routing/RouteInfo.java
deleted file mode 100644
index 3449cb1..0000000
--- a/src/org/apache/http/conn/routing/RouteInfo.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/routing/RouteInfo.java $
- * $Revision: 652200 $
- * $Date: 2008-04-29 17:22:43 -0700 (Tue, 29 Apr 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.conn.routing;
-
-import java.net.InetAddress;
-
-import org.apache.http.HttpHost;
-
-
-/**
- * Read-only interface for route information.
- * 
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 652200 $
- *
- * @since 4.0
- */
-public interface RouteInfo {
-
-    /**
-     * The tunnelling type of a route.
-     * Plain routes are established by connecting to the target or
-     * the first proxy.
-     * Tunnelled routes are established by connecting to the first proxy
-     * and tunnelling through all proxies to the target.
-     * Routes without a proxy cannot be tunnelled.
-     */
-    public enum TunnelType { PLAIN, TUNNELLED }
-
-    /**
-     * The layering type of a route.
-     * Plain routes are established by connecting or tunnelling.
-     * Layered routes are established by layering a protocol such as TLS/SSL
-     * over an existing connection.
-     * Protocols can only be layered over a tunnel to the target, or
-     * or over a direct connection without proxies.
-     * <br/>
-     * Layering a protocol
-     * over a direct connection makes little sense, since the connection
-     * could be established with the new protocol in the first place.
-     * But we don't want to exclude that use case.
-     */
-    public enum LayerType  { PLAIN, LAYERED }
-
-
-
-    /**
-     * Obtains the target host.
-     * 
-     * @return the target host
-     */
-    HttpHost getTargetHost()
-        ;
-
-
-    /**
-     * Obtains the local address to connect from.
-     * 
-     * @return  the local address,
-     *          or <code>null</code>
-     */
-    InetAddress getLocalAddress()
-        ;
-
-
-    /**
-     * Obtains the number of hops in this route.
-     * A direct route has one hop. A route through a proxy has two hops.
-     * A route through a chain of <i>n</i> proxies has <i>n+1</i> hops.
-     *
-     * @return  the number of hops in this route
-     */
-    int getHopCount()
-        ;
-
-
-    /**
-     * Obtains the target of a hop in this route.
-     * The target of the last hop is the {@link #getTargetHost target host},
-     * the target of previous hops is the respective proxy in the chain.
-     * For a route through exactly one proxy, target of hop 0 is the proxy
-     * and target of hop 1 is the target host.
-     *
-     * @param hop       index of the hop for which to get the target,
-     *                  0 for first
-     *
-     * @return  the target of the given hop
-     *
-     * @throws IllegalArgumentException
-     *  if the argument is negative or not less than
-     *  {@link #getHopCount getHopCount()}
-     */
-    HttpHost getHopTarget(int hop)
-        ;
-
-
-    /**
-     * Obtains the first proxy host.
-     * 
-     * @return the first proxy in the proxy chain, or
-     *         <code>null</code> if this route is direct
-     */
-    HttpHost getProxyHost()
-        ;
-
-
-    /**
-     * Obtains the tunnel type of this route.
-     * If there is a proxy chain, only end-to-end tunnels are considered.
-     *
-     * @return  the tunnelling type
-     */
-    TunnelType getTunnelType()
-        ;
-
-
-    /**
-     * Checks whether this route is tunnelled through a proxy.
-     * If there is a proxy chain, only end-to-end tunnels are considered.
-     *
-     * @return  <code>true</code> if tunnelled end-to-end through at least
-     *          one proxy,
-     *          <code>false</code> otherwise
-     */
-    boolean isTunnelled()
-        ;
-
-
-    /**
-     * Obtains the layering type of this route.
-     * In the presence of proxies, only layering over an end-to-end tunnel
-     * is considered.
-     *
-     * @return  the layering type
-     */
-    LayerType getLayerType()
-        ;
-
-
-    /**
-     * Checks whether this route includes a layered protocol.
-     * In the presence of proxies, only layering over an end-to-end tunnel
-     * is considered.
-     *
-     * @return  <code>true</code> if layered,
-     *          <code>false</code> otherwise
-     */
-    boolean isLayered()
-        ;
-
-
-    /**
-     * Checks whether this route is secure.
-     *
-     * @return  <code>true</code> if secure,
-     *          <code>false</code> otherwise
-     */
-    boolean isSecure()
-        ;
-
-
-} // interface RouteInfo
diff --git a/src/org/apache/http/conn/routing/RouteTracker.java b/src/org/apache/http/conn/routing/RouteTracker.java
deleted file mode 100644
index ba8213e..0000000
--- a/src/org/apache/http/conn/routing/RouteTracker.java
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/routing/RouteTracker.java $
- * $Revision: 620254 $
- * $Date: 2008-02-10 02:18:48 -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.conn.routing;
-
-import java.net.InetAddress;
-
-import org.apache.http.HttpHost;
-
-
-/**
- * Helps tracking the steps in establishing a route.
- * 
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 620254 $
- *
- * @since 4.0
- */
-public final class RouteTracker implements RouteInfo, Cloneable {
-
-    /** The target host to connect to. */
-    private final HttpHost targetHost;
-
-    /**
-     * The local address to connect from.
-     * <code>null</code> indicates that the default should be used.
-     */
-    private final InetAddress localAddress;
-
-    // the attributes above are fixed at construction time
-    // now follow attributes that indicate the established route
-
-    /** Whether the first hop of the route is established. */
-    private boolean connected;
-
-    /** The proxy chain, if any. */
-    private HttpHost[] proxyChain;
-
-    /** Whether the the route is tunnelled end-to-end through proxies. */
-    private TunnelType tunnelled;
-
-    /** Whether the route is layered over a tunnel. */
-    private LayerType layered;
-
-    /** Whether the route is secure. */
-    private boolean secure;
-
-
-    /**
-     * Creates a new route tracker.
-     * The target and origin need to be specified at creation time.
-     *
-     * @param target    the host to which to route
-     * @param local     the local address to route from, or
-     *                  <code>null</code> for the default
-     */
-    public RouteTracker(HttpHost target, InetAddress local) {
-        if (target == null) {
-            throw new IllegalArgumentException("Target host may not be null.");
-        }
-        this.targetHost   = target;
-        this.localAddress = local;
-        this.tunnelled    = TunnelType.PLAIN;
-        this.layered      = LayerType.PLAIN;
-    }
-
-
-    /**
-     * Creates a new tracker for the given route.
-     * Only target and origin are taken from the route,
-     * everything else remains to be tracked.
-     *
-     * @param route     the route to track
-     */
-    public RouteTracker(HttpRoute route) {
-        this(route.getTargetHost(), route.getLocalAddress());
-    }
-
-
-    /**
-     * Tracks connecting to the target.
-     *
-     * @param secure    <code>true</code> if the route is secure,
-     *                  <code>false</code> otherwise
-     */
-    public final void connectTarget(boolean secure) {
-        if (this.connected) {
-            throw new IllegalStateException("Already connected.");
-        }
-        this.connected = true;
-        this.secure = secure;
-    }
-
-
-    /**
-     * Tracks connecting to the first proxy.
-     *
-     * @param proxy     the proxy connected to
-     * @param secure    <code>true</code> if the route is secure,
-     *                  <code>false</code> otherwise
-     */
-    public final void connectProxy(HttpHost proxy, boolean secure) {
-        if (proxy == null) {
-            throw new IllegalArgumentException("Proxy host may not be null.");
-        }
-        if (this.connected) {
-            throw new IllegalStateException("Already connected.");
-        }
-        this.connected  = true;
-        this.proxyChain = new HttpHost[]{ proxy };
-        this.secure     = secure;
-    }
-
-
-    /**
-     * Tracks tunnelling to the target.
-     *
-     * @param secure    <code>true</code> if the route is secure,
-     *                  <code>false</code> otherwise
-     */
-    public final void tunnelTarget(boolean secure) {
-        if (!this.connected) {
-            throw new IllegalStateException("No tunnel unless connected.");
-        }
-        if (this.proxyChain == null) {
-            throw new IllegalStateException("No tunnel without proxy.");
-        }
-        this.tunnelled = TunnelType.TUNNELLED;
-        this.secure    = secure;
-    }
-
-
-    /**
-     * Tracks tunnelling to a proxy in a proxy chain.
-     * This will extend the tracked proxy chain, but it does not mark
-     * the route as tunnelled. Only end-to-end tunnels are considered there.
-     *
-     * @param proxy     the proxy tunnelled to
-     * @param secure    <code>true</code> if the route is secure,
-     *                  <code>false</code> otherwise
-     */
-    public final void tunnelProxy(HttpHost proxy, boolean secure) {
-        if (proxy == null) {
-            throw new IllegalArgumentException("Proxy host may not be null.");
-        }
-        if (!this.connected) {
-            throw new IllegalStateException("No tunnel unless connected.");
-        }
-        if (this.proxyChain == null) {
-            throw new IllegalStateException("No proxy tunnel without proxy.");
-        }
-
-        // prepare an extended proxy chain
-        HttpHost[] proxies = new HttpHost[this.proxyChain.length+1];
-        System.arraycopy(this.proxyChain, 0,
-                         proxies, 0, this.proxyChain.length);
-        proxies[proxies.length-1] = proxy;
-
-        this.proxyChain = proxies;
-        this.secure     = secure;
-    }
-
-
-    /**
-     * Tracks layering a protocol.
-     *
-     * @param secure    <code>true</code> if the route is secure,
-     *                  <code>false</code> otherwise
-     */
-    public final void layerProtocol(boolean secure) {
-        // it is possible to layer a protocol over a direct connection,
-        // although this case is probably not considered elsewhere
-        if (!this.connected) {
-            throw new IllegalStateException
-                ("No layered protocol unless connected.");
-        }
-        this.layered = LayerType.LAYERED;
-        this.secure  = secure;
-    }
-
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final HttpHost getTargetHost() {
-        return this.targetHost;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final InetAddress getLocalAddress() {
-        return this.localAddress;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final int getHopCount() {
-        int hops = 0;
-        if (this.connected) {
-            if (proxyChain == null)
-                hops = 1;
-            else
-                hops = proxyChain.length + 1;
-        }
-        return hops;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final HttpHost getHopTarget(int hop) {
-        if (hop < 0)
-            throw new IllegalArgumentException
-                ("Hop index must not be negative: " + hop);
-        final int hopcount = getHopCount();
-        if (hop >= hopcount) {
-            throw new IllegalArgumentException
-                ("Hop index " + hop +
-                 " exceeds tracked route length " + hopcount +".");
-        }
-
-        HttpHost result = null;
-        if (hop < hopcount-1)
-            result = this.proxyChain[hop];
-        else
-            result = this.targetHost;
-
-        return result;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final HttpHost getProxyHost() {
-        return (this.proxyChain == null) ? null : this.proxyChain[0];
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final boolean isConnected() {
-        return this.connected;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final TunnelType getTunnelType() {
-        return this.tunnelled;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final boolean isTunnelled() {
-        return (this.tunnelled == TunnelType.TUNNELLED);
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final LayerType getLayerType() {
-        return this.layered;
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final boolean isLayered() {
-        return (this.layered == LayerType.LAYERED);
-    }
-
-
-    // non-JavaDoc, see interface RouteInfo
-    public final boolean isSecure() {
-        return this.secure;
-    }
-
-
-    /**
-     * Obtains the tracked route.
-     * If a route has been tracked, it is {@link #isConnected connected}.
-     * If not connected, nothing has been tracked so far.
-     *
-     * @return  the tracked route, or
-     *          <code>null</code> if nothing has been tracked so far
-     */
-    public final HttpRoute toRoute() {
-        return !this.connected ?
-            null : new HttpRoute(this.targetHost, this.localAddress,
-                                 this.proxyChain, this.secure,
-                                 this.tunnelled, this.layered);
-    }
-
-
-    /**
-     * Compares this tracked route to another.
-     *
-     * @param o         the object to compare with
-     *
-     * @return  <code>true</code> if the argument is the same tracked route,
-     *          <code>false</code>
-     */
-    @Override
-    public final boolean equals(Object o) {
-        if (o == this)
-            return true;
-        if (!(o instanceof RouteTracker))
-            return false;
-
-        RouteTracker that = (RouteTracker) o;
-        boolean equal = this.targetHost.equals(that.targetHost);
-        equal &=
-            ( this.localAddress == that.localAddress) ||
-            ((this.localAddress != null) &&
-              this.localAddress.equals(that.localAddress));
-        equal &=
-            ( this.proxyChain        == that.proxyChain) ||
-            ((this.proxyChain        != null) &&
-             (that.proxyChain        != null) &&
-             (this.proxyChain.length == that.proxyChain.length));
-        // comparison of actual proxies follows below
-        equal &=
-            (this.connected == that.connected) &&
-            (this.secure    == that.secure) &&
-            (this.tunnelled == that.tunnelled) &&
-            (this.layered   == that.layered);
-
-        // chain length has been compared above, now check the proxies
-        if (equal && (this.proxyChain != null)) {
-            for (int i=0; equal && (i<this.proxyChain.length); i++)
-                equal = this.proxyChain[i].equals(that.proxyChain[i]);
-        }
-
-        return equal;
-    }
-
-
-    /**
-     * Generates a hash code for this tracked route.
-     * Route trackers are modifiable and should therefore not be used
-     * as lookup keys. Use {@link #toRoute toRoute} to obtain an
-     * unmodifiable representation of the tracked route.
-     *
-     * @return  the hash code
-     */
-    @Override
-    public final int hashCode() {
-
-        int hc = this.targetHost.hashCode();
-
-        if (this.localAddress != null)
-            hc ^= localAddress.hashCode();
-        if (this.proxyChain != null) {
-            hc ^= proxyChain.length;
-            for (int i=0; i<proxyChain.length; i++)
-                hc ^= proxyChain[i].hashCode();
-        }
-
-        if (this.connected)
-            hc ^= 0x11111111;
-        if (this.secure)
-            hc ^= 0x22222222;
-
-        hc ^= this.tunnelled.hashCode();
-        hc ^= this.layered.hashCode();
-
-        return hc;
-    }
-
-
-    /**
-     * Obtains a description of the tracked route.
-     *
-     * @return  a human-readable representation of the tracked route
-     */
-    @Override
-    public final String toString() {
-        StringBuilder cab = new StringBuilder(50 + getHopCount()*30);
-
-        cab.append("RouteTracker[");
-        if (this.localAddress != null) {
-            cab.append(this.localAddress);
-            cab.append("->");
-        }
-        cab.append('{');
-        if (this.connected)
-            cab.append('c');
-        if (this.tunnelled == TunnelType.TUNNELLED)
-            cab.append('t');
-        if (this.layered == LayerType.LAYERED)
-            cab.append('l');
-        if (this.secure)
-            cab.append('s');
-        cab.append("}->");
-        if (this.proxyChain != null) {
-            for (int i=0; i<this.proxyChain.length; i++) {
-                cab.append(this.proxyChain[i]);
-                cab.append("->");
-            }
-        }
-        cab.append(this.targetHost);
-        cab.append(']');
-
-        return cab.toString();
-    }
-
-
-    // default implementation of clone() is sufficient
-    @Override
-    public Object clone() throws CloneNotSupportedException {
-        return super.clone();
-    }
-
-
-} // class RouteTracker
diff --git a/src/org/apache/http/conn/routing/package.html b/src/org/apache/http/conn/routing/package.html
deleted file mode 100644
index b50f97c..0000000
--- a/src/org/apache/http/conn/routing/package.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/routing/package.html $
- * $Revision: 613656 $
- * $Date: 2008-01-20 11:06:56 -0800 (Sun, 20 Jan 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/>.
- *
- */
--->
-</head>
-<body>
-The client-side route representation and tracking API, part of <i>HttpConn</i>.
-
-<p>
-An {@link org.apache.http.conn.routing.HttpRoute HttpRoute}
-is the path along which a request has to be sent to the server.
-The route starts at a local network address and may pass
-through one or more proxies before reaching the target.
-Routes through proxies can be tunnelled, and a layered protocol (TLS/SSL)
-might be put on top of the tunnel.
-The {@link org.apache.http.conn.routing.RouteTracker RouteTracker}
-helps in tracking the steps for establishing a route, while an
-{@link org.apache.http.conn.routing.HttpRouteDirector HttpRouteDirector}
-determines the next step to take.
-</p>
-
-
-<p>
-The {@link org.apache.http.conn.routing.HttpRoutePlanner HttpRoutePlanner}
-is responsible for determining a route to a given target host.
-Implementations must know about proxies to use, and about exemptions
-for hosts that should be contacted directly without a proxy.
-</p>
-
-
-</body>
-</html>
diff --git a/src/org/apache/http/conn/scheme/HostNameResolver.java b/src/org/apache/http/conn/scheme/HostNameResolver.java
deleted file mode 100644
index ca6615c..0000000
--- a/src/org/apache/http/conn/scheme/HostNameResolver.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * $HeadURL:$
- * $Revision:$
- * $Date:$
- *
- * ====================================================================
- * 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.conn.scheme;
-
-import java.io.IOException;
-import java.net.InetAddress;
-
-public interface HostNameResolver {
-
-    InetAddress resolve (String hostname) throws IOException;
-
-}
diff --git a/src/org/apache/http/conn/scheme/LayeredSocketFactory.java b/src/org/apache/http/conn/scheme/LayeredSocketFactory.java
deleted file mode 100644
index 8dc6c6c..0000000
--- a/src/org/apache/http/conn/scheme/LayeredSocketFactory.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/scheme/LayeredSocketFactory.java $
- * $Revision: 645850 $
- * $Date: 2008-04-08 04:08:52 -0700 (Tue, 08 Apr 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.conn.scheme;
-
-import java.io.IOException;
-import java.net.Socket;
-import java.net.UnknownHostException;
-
-/**
- * A {@link SocketFactory SocketFactory} for layered sockets (SSL/TLS).
- * See there for things to consider when implementing a socket factory.
- * 
- * @author Michael Becke
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @since 4.0
- */
-public interface LayeredSocketFactory extends SocketFactory {
-
-    /**
-     * Returns a socket connected to the given host that is layered over an
-     * existing socket.  Used primarily for creating secure sockets through
-     * proxies.
-     * 
-     * @param socket the existing socket 
-     * @param host the host name/IP
-     * @param port the port on the host
-     * @param autoClose a flag for closing the underling socket when the created
-     * socket is closed
-     * 
-     * @return Socket a new socket
-     * 
-     * @throws IOException if an I/O error occurs while creating the socket
-     * @throws UnknownHostException if the IP address of the host cannot be
-     * determined
-     */
-    Socket createSocket(
-        Socket socket, 
-        String host, 
-        int port, 
-        boolean autoClose
-    ) throws IOException, UnknownHostException;              
-
-}
diff --git a/src/org/apache/http/conn/scheme/PlainSocketFactory.java b/src/org/apache/http/conn/scheme/PlainSocketFactory.java
deleted file mode 100644
index acc13f7..0000000
--- a/src/org/apache/http/conn/scheme/PlainSocketFactory.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/scheme/PlainSocketFactory.java $
- * $Revision: 659194 $
- * $Date: 2008-05-22 11:33:47 -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.conn.scheme;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-
-/**
- * The default class for creating sockets.
- * 
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author Michael Becke
- */
-public final class PlainSocketFactory implements SocketFactory {
-
-    /**
-     * The factory singleton.
-     */
-    private static final
-        PlainSocketFactory DEFAULT_FACTORY = new PlainSocketFactory();
-
-    private final HostNameResolver nameResolver;
-    
-    /**
-     * Gets the singleton instance of this class.
-     * @return the one and only plain socket factory
-     */
-    public static PlainSocketFactory getSocketFactory() {
-        return DEFAULT_FACTORY;
-    }
-
-    public PlainSocketFactory(final HostNameResolver nameResolver) {
-        super();
-        this.nameResolver = nameResolver;
-    }
-
-
-    public PlainSocketFactory() {
-        this(null);
-    }
-
-    // non-javadoc, see interface org.apache.http.conn.SocketFactory
-    public Socket createSocket() {
-        return new Socket();
-    }
-
-    // non-javadoc, see interface org.apache.http.conn.SocketFactory
-    public Socket connectSocket(Socket sock, String host, int port, 
-                                InetAddress localAddress, int localPort,
-                                HttpParams params)
-        throws IOException {
-
-        if (host == null) {
-            throw new IllegalArgumentException("Target host may not be null.");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("Parameters may not be null.");
-        }
-
-        if (sock == null)
-            sock = createSocket();
-
-        if ((localAddress != null) || (localPort > 0)) {
-
-            // we need to bind explicitly
-            if (localPort < 0)
-                localPort = 0; // indicates "any"
-
-            InetSocketAddress isa =
-                new InetSocketAddress(localAddress, localPort);
-            sock.bind(isa);
-        }
-
-        int timeout = HttpConnectionParams.getConnectionTimeout(params);
-
-        InetSocketAddress remoteAddress;
-        if (this.nameResolver != null) {
-            remoteAddress = new InetSocketAddress(this.nameResolver.resolve(host), port); 
-        } else {
-            remoteAddress = new InetSocketAddress(host, port);            
-        }
-        
-        sock.connect(remoteAddress, timeout);
-
-        return sock;
-
-    } // connectSocket
-
-
-    /**
-     * Checks whether a socket connection is secure.
-     * This factory creates plain socket connections
-     * which are not considered secure.
-     *
-     * @param sock      the connected socket
-     *
-     * @return  <code>false</code>
-     *
-     * @throws IllegalArgumentException if the argument is invalid
-     */
-    public final boolean isSecure(Socket sock)
-        throws IllegalArgumentException {
-
-        if (sock == null) {
-            throw new IllegalArgumentException("Socket may not be null.");
-        }
-        // This class check assumes that createSocket() calls the constructor
-        // directly. If it was using javax.net.SocketFactory, we couldn't make
-        // an assumption about the socket class here.
-        if (sock.getClass() != Socket.class) {
-            throw new IllegalArgumentException
-                ("Socket not created by this factory.");
-        }
-        // This check is performed last since it calls a method implemented
-        // by the argument object. getClass() is final in java.lang.Object.
-        if (sock.isClosed()) {
-            throw new IllegalArgumentException("Socket is closed.");
-        }
-
-        return false;
-
-    } // isSecure
-
-
-    /**
-     * Compares this factory with an object.
-     * There is only one instance of this class.
-     *
-     * @param obj       the object to compare with
-     *
-     * @return  iff the argument is this object
-     */
-    @Override
-    public boolean equals(Object obj) {
-        return (obj == this);
-    }
-
-    /**
-     * Obtains a hash code for this object.
-     * All instances of this class have the same hash code.
-     * There is only one instance of this class.
-     */
-    @Override
-    public int hashCode() {
-        return PlainSocketFactory.class.hashCode();
-    }
-
-}
diff --git a/src/org/apache/http/conn/scheme/Scheme.java b/src/org/apache/http/conn/scheme/Scheme.java
deleted file mode 100644
index 590d59d..0000000
--- a/src/org/apache/http/conn/scheme/Scheme.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/scheme/Scheme.java $
- * $Revision: 652950 $
- * $Date: 2008-05-02 16:49:48 -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.conn.scheme;
-
-import java.util.Locale;
-
-import org.apache.http.util.LangUtils;
-
-/**
- * Encapsulates specifics of a protocol scheme such as "http" or "https".
- * Schemes are identified by lowercase names.
- * Supported schemes are typically collected in a
- * {@link SchemeRegistry SchemeRegistry}.
- *
- * <p>
- * For example, to configure support for "https://" URLs,
- * you could write code like the following:
- * </p>
- * <pre>
- * Scheme https = new Scheme("https", new MySecureSocketFactory(), 443);
- * SchemeRegistry.DEFAULT.register(https);
- * </pre>
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author Michael Becke 
- * @author Jeff Dever
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- */
-public final class Scheme {
-
-    /** The name of this scheme, in lowercase. (e.g. http, https) */
-    private final String name;
-    
-    /** The socket factory for this scheme */
-    private final SocketFactory socketFactory;
-    
-    /** The default port for this scheme */
-    private final int defaultPort;
-    
-    /** Indicates whether this scheme allows for layered connections */
-    private final boolean layered;
-
-
-    /** A string representation, for {@link #toString toString}. */
-    private String stringRep;
-
-
-    /**
-     * Creates a new scheme.
-     * Whether the created scheme allows for layered connections
-     * depends on the class of <code>factory</code>.
-     *
-     * @param name      the scheme name, for example "http".
-     *                  The name will be converted to lowercase.
-     * @param factory   the factory for creating sockets for communication
-     *                  with this scheme
-     * @param port      the default port for this scheme
-     */
-    public Scheme(final String name,
-                  final SocketFactory factory,
-                  final int port) {
-
-        if (name == null) {
-            throw new IllegalArgumentException
-                ("Scheme name may not be null");
-        }
-        if (factory == null) {
-            throw new IllegalArgumentException
-                ("Socket factory may not be null");
-        }
-        if ((port <= 0) || (port > 0xffff)) {
-            throw new IllegalArgumentException
-                ("Port is invalid: " + port);
-        }
-
-        this.name = name.toLowerCase(Locale.ENGLISH);
-        this.socketFactory = factory;
-        this.defaultPort = port;
-        this.layered = (factory instanceof LayeredSocketFactory);
-    }
-
-
-    /**
-     * Obtains the default port.
-     *
-     * @return  the default port for this scheme
-     */
-    public final int getDefaultPort() {
-        return defaultPort;
-    }
-
-
-    /**
-     * Obtains the socket factory.
-     * If this scheme is {@link #isLayered layered}, the factory implements
-     * {@link LayeredSocketFactory LayeredSocketFactory}.
-     *
-     * @return  the socket factory for this scheme
-     */
-    public final SocketFactory getSocketFactory() {
-        return socketFactory;
-    }
-
-
-    /**
-     * Obtains the scheme name.
-     *
-     * @return  the name of this scheme, in lowercase
-     */
-    public final String getName() {
-        return name;
-    }
-
-
-    /**
-     * Indicates whether this scheme allows for layered connections.
-     *
-     * @return <code>true</code> if layered connections are possible,
-     *         <code>false</code> otherwise
-     */
-    public final boolean isLayered() {
-        return layered;
-    }
-
-
-    /**
-     * Resolves the correct port for this scheme.
-     * Returns the given port if it is valid, the default port otherwise.
-     * 
-     * @param port      the port to be resolved,
-     *                  a negative number to obtain the default port
-     * 
-     * @return the given port or the defaultPort
-     */
-    public final int resolvePort(int port) {
-        return ((port <= 0) || (port > 0xffff)) ? defaultPort : port;
-    }
-
-
-    /**
-     * Return a string representation of this object.
-     *
-     * @return  a human-readable string description of this scheme
-     */
-    @Override
-    public final String toString() {
-        if (stringRep == null) {
-            StringBuilder buffer = new StringBuilder();
-            buffer.append(this.name);
-            buffer.append(':');
-            buffer.append(Integer.toString(this.defaultPort));
-            stringRep = buffer.toString();
-        }
-        return stringRep;
-    }
-
-
-    /**
-     * Compares this scheme to an object.
-     *
-     * @param obj       the object to compare with
-     *
-     * @return  <code>true</code> iff the argument is equal to this scheme
-     */
-    @Override
-    public final boolean equals(Object obj) {
-        if (obj == null) return false;
-        if (this == obj) return true;
-        if (!(obj instanceof Scheme)) return false;
-
-        Scheme s = (Scheme) obj;
-        return (name.equals(s.name) &&
-                defaultPort == s.defaultPort &&
-                layered == s.layered &&
-                socketFactory.equals(s.socketFactory)
-                );
-    } // equals
-
-
-    /**
-     * Obtains a hash code for this scheme.
-     *
-     * @return  the hash code
-     */
-    @Override
-    public int hashCode() {
-        int hash = LangUtils.HASH_SEED;
-        hash = LangUtils.hashCode(hash, this.defaultPort);
-        hash = LangUtils.hashCode(hash, this.name);
-        hash = LangUtils.hashCode(hash, this.layered);
-        hash = LangUtils.hashCode(hash, this.socketFactory);
-        return hash;
-    }
-
-} // class Scheme
diff --git a/src/org/apache/http/conn/scheme/SchemeRegistry.java b/src/org/apache/http/conn/scheme/SchemeRegistry.java
deleted file mode 100644
index 2ee8685..0000000
--- a/src/org/apache/http/conn/scheme/SchemeRegistry.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/scheme/SchemeRegistry.java $
- * $Revision: 648356 $
- * $Date: 2008-04-15 10:57:53 -0700 (Tue, 15 Apr 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.conn.scheme;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.http.HttpHost;
-
-/**
- * A set of supported protocol {@link Scheme schemes}.
- * Schemes are identified by lowercase names.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 648356 $ $Date: 2008-04-15 10:57:53 -0700 (Tue, 15 Apr 2008) $
- *
- * @since 4.0
- */
-public final class SchemeRegistry {
-
-    /** The available schemes in this registry. */
-    private final Map<String,Scheme> registeredSchemes;
-
-
-    /**
-     * Creates a new, empty scheme registry.
-     */
-    public SchemeRegistry() {
-        super();
-        registeredSchemes = new LinkedHashMap<String,Scheme>();
-    }
-
-
-    /**
-     * Obtains a scheme by name.
-     *
-     * @param name      the name of the scheme to look up (in lowercase)
-     *
-     * @return  the scheme, never <code>null</code>
-     *
-     * @throws IllegalStateException
-     *          if the scheme with the given name is not registered
-     */
-    public synchronized final Scheme getScheme(String name) {
-        Scheme found = get(name);
-        if (found == null) {
-            throw new IllegalStateException
-                ("Scheme '"+name+"' not registered.");
-        }
-        return found;
-    }
-
-
-    /**
-     * Obtains the scheme for a host.
-     * Convenience method for <code>getScheme(host.getSchemeName())</pre>
-     *
-     * @param host      the host for which to obtain the scheme
-     *
-     * @return  the scheme for the given host, never <code>null</code>
-     *
-     * @throws IllegalStateException
-     *          if a scheme with the respective name is not registered
-     */
-    public synchronized final Scheme getScheme(HttpHost host) {
-        if (host == null) {
-            throw new IllegalArgumentException("Host must not be null.");
-        }
-        return getScheme(host.getSchemeName());
-    }
-
-
-    /**
-     * Obtains a scheme by name, if registered.
-     *
-     * @param name      the name of the scheme to look up (in lowercase)
-     *
-     * @return  the scheme, or
-     *          <code>null</code> if there is none by this name
-     */
-    public synchronized final Scheme get(String name) {
-        if (name == null)
-            throw new IllegalArgumentException("Name must not be null.");
-
-        // leave it to the caller to use the correct name - all lowercase
-        //name = name.toLowerCase();
-        Scheme found = registeredSchemes.get(name);
-        return found;
-    }
-
-
-    /**
-     * Registers a scheme.
-     * The scheme can later be retrieved by its name
-     * using {@link #getScheme(String) getScheme} or {@link #get get}.
-     *
-     * @param sch       the scheme to register
-     *
-     * @return  the scheme previously registered with that name, or
-     *          <code>null</code> if none was registered
-     */
-    public synchronized final Scheme register(Scheme sch) {
-        if (sch == null)
-            throw new IllegalArgumentException("Scheme must not be null.");
-
-        Scheme old = registeredSchemes.put(sch.getName(), sch);
-        return old;
-    }
-
-
-    /**
-     * Unregisters a scheme.
-     *
-     * @param name      the name of the scheme to unregister (in lowercase)
-     *
-     * @return  the unregistered scheme, or
-     *          <code>null</code> if there was none
-     */
-    public synchronized final Scheme unregister(String name) {
-        if (name == null)
-            throw new IllegalArgumentException("Name must not be null.");
-
-        // leave it to the caller to use the correct name - all lowercase
-        //name = name.toLowerCase();
-        Scheme gone = registeredSchemes.remove(name);
-        return gone;
-    }
-
-
-    /**
-     * Obtains the names of the registered schemes in their default order.
-     *
-     * @return  List containing registered scheme names.
-     */
-    public synchronized final List<String> getSchemeNames() {
-        return new ArrayList<String>(registeredSchemes.keySet());
-    }
-
-    /**
-     * Populates the internal collection of registered {@link Scheme protocol schemes} 
-     * with the content of the map passed as a parameter.
-     * 
-     * @param map protocol schemes
-     */
-    public synchronized void setItems(final Map<String, Scheme> map) {
-        if (map == null) {
-            return;
-        }
-        registeredSchemes.clear();
-        registeredSchemes.putAll(map);
-    }
-
-} // class SchemeRegistry
-
diff --git a/src/org/apache/http/conn/scheme/SocketFactory.java b/src/org/apache/http/conn/scheme/SocketFactory.java
deleted file mode 100644
index bb553b2..0000000
--- a/src/org/apache/http/conn/scheme/SocketFactory.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/scheme/SocketFactory.java $
- * $Revision: 645850 $
- * $Date: 2008-04-08 04:08:52 -0700 (Tue, 08 Apr 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.conn.scheme;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.net.UnknownHostException;
-
-import org.apache.http.conn.ConnectTimeoutException;
-import org.apache.http.params.HttpParams;
-
-/**
- * A factory for creating and connecting sockets.
- * The factory encapsulates the logic for establishing a socket connection.
- * <br/>
- * Both {@link java.lang.Object#equals(java.lang.Object) Object.equals()}
- * and {@link java.lang.Object#hashCode() Object.hashCode()}
- * must be overridden for the correct operation of some connection managers.
- * 
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author Michael Becke
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- */
-public interface SocketFactory {
-
-    /**
-     * Creates a new, unconnected socket.
-     * The socket should subsequently be passed to
-     * {@link #connectSocket connectSocket}.
-     *
-     * @return  a new socket
-     * 
-     * @throws IOException if an I/O error occurs while creating the socket
-     */
-    Socket createSocket()
-        throws IOException
-        ;
-
-
-    /**
-     * Connects a socket to the given host.
-     * 
-     * @param sock      the socket to connect, as obtained from
-     *                  {@link #createSocket createSocket}.
-     *                  <code>null</code> indicates that a new socket
-     *                  should be created and connected.
-     * @param host      the host to connect to
-     * @param port      the port to connect to on the host
-     * @param localAddress the local address to bind the socket to, or
-     *                  <code>null</code> for any
-     * @param localPort the port on the local machine,
-     *                  0 or a negative number for any
-     * @param params    additional {@link HttpParams parameters} for connecting
-     * 
-     * @return  the connected socket. The returned object may be different
-     *          from the <code>sock</code> argument if this factory supports
-     *          a layered protocol.
-     * 
-     * @throws IOException if an I/O error occurs
-     * @throws UnknownHostException if the IP address of the target host
-     *          can not be determined
-     * @throws ConnectTimeoutException if the socket cannot be connected
-     *          within the time limit defined in the <code>params</code>
-     */
-    Socket connectSocket(
-        Socket sock,
-        String host, 
-        int port, 
-        InetAddress localAddress, 
-        int localPort,
-        HttpParams params
-    ) throws IOException, UnknownHostException, ConnectTimeoutException;
-
-
-    /**
-     * Checks whether a socket provides a secure connection.
-     * The socket must be {@link #connectSocket connected}
-     * by this factory.
-     * The factory will <i>not</i> perform I/O operations
-     * in this method.
-     * <br/>
-     * As a rule of thumb, plain sockets are not secure and
-     * TLS/SSL sockets are secure. However, there may be
-     * application specific deviations. For example, a plain
-     * socket to a host in the same intranet ("trusted zone")
-     * could be considered secure. On the other hand, a
-     * TLS/SSL socket could be considered insecure based on
-     * the cypher suite chosen for the connection.
-     *
-     * @param sock      the connected socket to check
-     *
-     * @return  <code>true</code> if the connection of the socket
-     *          should be considered secure, or
-     *          <code>false</code> if it should not
-     *
-     * @throws IllegalArgumentException
-     *  if the argument is invalid, for example because it is
-     *  not a connected socket or was created by a different
-     *  socket factory.
-     *  Note that socket factories are <i>not</i> required to
-     *  check these conditions, they may simply return a default
-     *  value when called with an invalid socket argument.
-     */
-    boolean isSecure(Socket sock)
-        throws IllegalArgumentException
-        ;
-
-}
diff --git a/src/org/apache/http/conn/ssl/AbstractVerifier.java b/src/org/apache/http/conn/ssl/AbstractVerifier.java
deleted file mode 100644
index 5195e58..0000000
--- a/src/org/apache/http/conn/ssl/AbstractVerifier.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ssl/AbstractVerifier.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.conn.ssl;
-
-import org.apache.http.conn.util.InetAddressUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateParsingException;
-import java.security.cert.X509Certificate;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Locale;
-import java.util.StringTokenizer;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
-
-/**
- * Abstract base class for all standard {@link X509HostnameVerifier} 
- * implementations.
- * 
- * @author Julius Davies
- */
-public abstract class AbstractVerifier implements X509HostnameVerifier {
-
-    /**
-     * This contains a list of 2nd-level domains that aren't allowed to
-     * have wildcards when combined with country-codes.
-     * For example: [*.co.uk].
-     * <p/>
-     * The [*.co.uk] problem is an interesting one.  Should we just hope
-     * that CA's would never foolishly allow such a certificate to happen?
-     * Looks like we're the only implementation guarding against this.
-     * Firefox, Curl, Sun Java 1.4, 5, 6 don't bother with this check.
-     */
-    private final static String[] BAD_COUNTRY_2LDS =
-          { "ac", "co", "com", "ed", "edu", "go", "gouv", "gov", "info",
-            "lg", "ne", "net", "or", "org" };
-
-    static {
-        // Just in case developer forgot to manually sort the array.  :-)
-        Arrays.sort(BAD_COUNTRY_2LDS);
-    }
-
-    public AbstractVerifier() {
-        super();
-    }
-
-    public final void verify(String host, SSLSocket ssl)
-          throws IOException {
-        if(host == null) {
-            throw new NullPointerException("host to verify is null");
-        }
-
-        ssl.startHandshake();
-        SSLSession session = ssl.getSession();
-        if(session == null) {
-            // In our experience this only happens under IBM 1.4.x when
-            // spurious (unrelated) certificates show up in the server'
-            // chain.  Hopefully this will unearth the real problem:
-            InputStream in = ssl.getInputStream();
-            in.available();
-            /*
-              If you're looking at the 2 lines of code above because
-              you're running into a problem, you probably have two
-              options:
-
-                #1.  Clean up the certificate chain that your server
-                     is presenting (e.g. edit "/etc/apache2/server.crt"
-                     or wherever it is your server's certificate chain
-                     is defined).
-
-                                           OR
-
-                #2.   Upgrade to an IBM 1.5.x or greater JVM, or switch
-                      to a non-IBM JVM.
-            */
-
-            // If ssl.getInputStream().available() didn't cause an
-            // exception, maybe at least now the session is available?
-            session = ssl.getSession();
-            if(session == null) {
-                // If it's still null, probably a startHandshake() will
-                // unearth the real problem.
-                ssl.startHandshake();
-
-                // Okay, if we still haven't managed to cause an exception,
-                // might as well go for the NPE.  Or maybe we're okay now?
-                session = ssl.getSession();
-            }
-        }
-
-        Certificate[] certs = session.getPeerCertificates();
-        X509Certificate x509 = (X509Certificate) certs[0];
-        verify(host, x509);
-    }
-
-    public final boolean verify(String host, SSLSession session) {
-        try {
-            Certificate[] certs = session.getPeerCertificates();
-            X509Certificate x509 = (X509Certificate) certs[0];
-            verify(host, x509);
-            return true;
-        }
-        catch(SSLException e) {
-            return false;
-        }
-    }
-
-    public final void verify(String host, X509Certificate cert)
-          throws SSLException {
-        String[] cns = getCNs(cert);
-        String[] subjectAlts = getDNSSubjectAlts(cert);
-        verify(host, cns, subjectAlts);
-    }
-
-    public final void verify(final String host, final String[] cns,
-                             final String[] subjectAlts,
-                             final boolean strictWithSubDomains)
-          throws SSLException {
-
-        // Build the list of names we're going to check.  Our DEFAULT and
-        // STRICT implementations of the HostnameVerifier only use the
-        // first CN provided.  All other CNs are ignored.
-        // (Firefox, wget, curl, Sun Java 1.4, 5, 6 all work this way).
-        LinkedList<String> names = new LinkedList<String>();
-        if(cns != null && cns.length > 0 && cns[0] != null) {
-            names.add(cns[0]);
-        }
-        if(subjectAlts != null) {
-            for (String subjectAlt : subjectAlts) {
-                if (subjectAlt != null) {
-                    names.add(subjectAlt);
-                }
-            }
-        }
-
-        if(names.isEmpty()) {
-            String msg = "Certificate for <" + host + "> doesn't contain CN or DNS subjectAlt";
-            throw new SSLException(msg);
-        }
-
-        // StringBuffer for building the error message.
-        StringBuffer buf = new StringBuffer();
-
-        // We're can be case-insensitive when comparing the host we used to
-        // establish the socket to the hostname in the certificate.
-        String hostName = host.trim().toLowerCase(Locale.ENGLISH);
-        boolean match = false;
-        for(Iterator<String> it = names.iterator(); it.hasNext();) {
-            // Don't trim the CN, though!
-            String cn = it.next();
-            cn = cn.toLowerCase(Locale.ENGLISH);
-            // Store CN in StringBuffer in case we need to report an error.
-            buf.append(" <");
-            buf.append(cn);
-            buf.append('>');
-            if(it.hasNext()) {
-                buf.append(" OR");
-            }
-
-            // The CN better have at least two dots if it wants wildcard
-            // action.  It also can't be [*.co.uk] or [*.co.jp] or
-            // [*.org.uk], etc...
-            boolean doWildcard = cn.startsWith("*.") &&
-                                 cn.lastIndexOf('.') >= 0 &&
-                                 acceptableCountryWildcard(cn) &&
-                                 !InetAddressUtils.isIPv4Address(host);
-
-            if(doWildcard) {
-                match = hostName.endsWith(cn.substring(1));
-                if(match && strictWithSubDomains) {
-                    // If we're in strict mode, then [*.foo.com] is not
-                    // allowed to match [a.b.foo.com]
-                    match = countDots(hostName) == countDots(cn);
-                }
-            } else {
-                match = hostName.equals(cn);
-            }
-            if(match) {
-                break;
-            }
-        }
-        if(!match) {
-            throw new SSLException("hostname in certificate didn't match: <" + host + "> !=" + buf);
-        }
-    }
-
-    public static boolean acceptableCountryWildcard(String cn) {
-        int cnLen = cn.length();
-        if(cnLen >= 7 && cnLen <= 9) {
-            // Look for the '.' in the 3rd-last position:
-            if(cn.charAt(cnLen - 3) == '.') {
-                // Trim off the [*.] and the [.XX].
-                String s = cn.substring(2, cnLen - 3);
-                // And test against the sorted array of bad 2lds:
-                int x = Arrays.binarySearch(BAD_COUNTRY_2LDS, s);
-                return x < 0;
-            }
-        }
-        return true;
-    }
-
-    public static String[] getCNs(X509Certificate cert) {
-        LinkedList<String> cnList = new LinkedList<String>();
-        /*
-          Sebastian Hauer's original StrictSSLProtocolSocketFactory used
-          getName() and had the following comment:
-
-                Parses a X.500 distinguished name for the value of the
-                "Common Name" field.  This is done a bit sloppy right
-                 now and should probably be done a bit more according to
-                <code>RFC 2253</code>.
-
-           I've noticed that toString() seems to do a better job than
-           getName() on these X500Principal objects, so I'm hoping that
-           addresses Sebastian's concern.
-
-           For example, getName() gives me this:
-           1.2.840.113549.1.9.1=#16166a756c6975736461766965734063756362632e636f6d
-
-           whereas toString() gives me this:
-           EMAILADDRESS=juliusdavies@cucbc.com
-
-           Looks like toString() even works with non-ascii domain names!
-           I tested it with "&#x82b1;&#x5b50;.co.jp" and it worked fine.
-        */
-        String subjectPrincipal = cert.getSubjectX500Principal().toString();
-        StringTokenizer st = new StringTokenizer(subjectPrincipal, ",");
-        while(st.hasMoreTokens()) {
-            String tok = st.nextToken();
-            int x = tok.indexOf("CN=");
-            if(x >= 0) {
-                cnList.add(tok.substring(x + 3));
-            }
-        }
-        if(!cnList.isEmpty()) {
-            String[] cns = new String[cnList.size()];
-            cnList.toArray(cns);
-            return cns;
-        } else {
-            return null;
-        }
-    }
-
-
-    /**
-     * Extracts the array of SubjectAlt DNS names from an X509Certificate.
-     * Returns null if there aren't any.
-     * <p/>
-     * Note:  Java doesn't appear able to extract international characters
-     * from the SubjectAlts.  It can only extract international characters
-     * from the CN field.
-     * <p/>
-     * (Or maybe the version of OpenSSL I'm using to test isn't storing the
-     * international characters correctly in the SubjectAlts?).
-     *
-     * @param cert X509Certificate
-     * @return Array of SubjectALT DNS names stored in the certificate.
-     */
-    public static String[] getDNSSubjectAlts(X509Certificate cert) {
-        LinkedList<String> subjectAltList = new LinkedList<String>();
-        Collection<List<?>> c = null;
-        try {
-            c = cert.getSubjectAlternativeNames();
-        }
-        catch(CertificateParsingException cpe) {
-            Logger.getLogger(AbstractVerifier.class.getName())
-                    .log(Level.FINE, "Error parsing certificate.", cpe);
-        }
-        if(c != null) {
-            for (List<?> aC : c) {
-                List<?> list = aC;
-                int type = ((Integer) list.get(0)).intValue();
-                // If type is 2, then we've got a dNSName
-                if (type == 2) {
-                    String s = (String) list.get(1);
-                    subjectAltList.add(s);
-                }
-            }
-        }
-        if(!subjectAltList.isEmpty()) {
-            String[] subjectAlts = new String[subjectAltList.size()];
-            subjectAltList.toArray(subjectAlts);
-            return subjectAlts;
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Counts the number of dots "." in a string.
-     * @param s  string to count dots from
-     * @return  number of dots
-     */
-    public static int countDots(final String s) {
-        int count = 0;
-        for(int i = 0; i < s.length(); i++) {
-            if(s.charAt(i) == '.') {
-                count++;
-            }
-        }
-        return count;
-    }
-    
-}
diff --git a/src/org/apache/http/conn/ssl/AllowAllHostnameVerifier.java b/src/org/apache/http/conn/ssl/AllowAllHostnameVerifier.java
deleted file mode 100644
index 05828fb..0000000
--- a/src/org/apache/http/conn/ssl/AllowAllHostnameVerifier.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ssl/AllowAllHostnameVerifier.java $
- * $Revision: 617642 $
- * $Date: 2008-02-01 12:54:07 -0800 (Fri, 01 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.conn.ssl;
-
-/**
- * The ALLOW_ALL HostnameVerifier essentially turns hostname verification
- * off. This implementation is a no-op, and never throws the SSLException.
- * 
- * @author Julius Davies
- */
-public class AllowAllHostnameVerifier extends AbstractVerifier {
-
-    public final void verify(
-            final String host, 
-            final String[] cns,
-            final String[] subjectAlts) {
-        // Allow everything - so never blowup.
-    }
-
-    @Override
-    public final String toString() { 
-        return "ALLOW_ALL"; 
-    }
-    
-}
diff --git a/src/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier.java b/src/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier.java
deleted file mode 100644
index f4129d6..0000000
--- a/src/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier.java $
- * $Revision: 617642 $
- * $Date: 2008-02-01 12:54:07 -0800 (Fri, 01 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.conn.ssl;
-
-import javax.net.ssl.SSLException;
-
-/**
- * The HostnameVerifier that works the same way as Curl and Firefox.
- * <p/>
- * The hostname must match either the first CN, or any of the subject-alts.
- * A wildcard can occur in the CN, and in any of the subject-alts.
- * <p/>
- * The only difference between BROWSER_COMPATIBLE and STRICT is that a wildcard 
- * (such as "*.foo.com") with BROWSER_COMPATIBLE matches all subdomains, 
- * including "a.b.foo.com".
- * 
- * @author Julius Davies
- */
-public class BrowserCompatHostnameVerifier extends AbstractVerifier {
-
-    public final void verify(
-            final String host, 
-            final String[] cns,
-            final String[] subjectAlts) throws SSLException {
-        verify(host, cns, subjectAlts, false);
-    }
-
-    @Override
-    public final String toString() { 
-        return "BROWSER_COMPATIBLE"; 
-    }
-    
-}
diff --git a/src/org/apache/http/conn/ssl/SSLSocketFactory.java b/src/org/apache/http/conn/ssl/SSLSocketFactory.java
deleted file mode 100644
index 498b43e..0000000
--- a/src/org/apache/http/conn/ssl/SSLSocketFactory.java
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java $
- * $Revision: 659194 $
- * $Date: 2008-05-22 11:33:47 -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.conn.ssl;
-
-import org.apache.http.conn.scheme.HostNameResolver;
-import org.apache.http.conn.scheme.LayeredSocketFactory;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.security.KeyManagementException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.security.UnrecoverableKeyException;
-
-/**
- * Layered socket factory for TLS/SSL connections, based on JSSE.
- *.
- * <p>
- * SSLSocketFactory can be used to validate the identity of the HTTPS 
- * server against a list of trusted certificates and to authenticate to
- * the HTTPS server using a private key. 
- * </p>
- * 
- * <p>
- * SSLSocketFactory will enable server authentication when supplied with
- * a {@link KeyStore truststore} file containg one or several trusted
- * certificates. The client secure socket will reject the connection during
- * the SSL session handshake if the target HTTPS server attempts to
- * authenticate itself with a non-trusted certificate.
- * </p>
- * 
- * <p>
- * Use JDK keytool utility to import a trusted certificate and generate a truststore file:    
- *    <pre>
- *     keytool -import -alias "my server cert" -file server.crt -keystore my.truststore
- *    </pre>
- * </p>
- * 
- * <p>
- * SSLSocketFactory will enable client authentication when supplied with
- * a {@link KeyStore keystore} file containg a private key/public certificate
- * pair. The client secure socket will use the private key to authenticate
- * itself to the target HTTPS server during the SSL session handshake if
- * requested to do so by the server.
- * The target HTTPS server will in its turn verify the certificate presented
- * by the client in order to establish client's authenticity
- * </p>
- * 
- * <p>
- * Use the following sequence of actions to generate a keystore file
- * </p>
- *   <ul>
- *     <li>
- *      <p>
- *      Use JDK keytool utility to generate a new key
- *      <pre>keytool -genkey -v -alias "my client key" -validity 365 -keystore my.keystore</pre>
- *      For simplicity use the same password for the key as that of the keystore
- *      </p>
- *     </li>
- *     <li>
- *      <p>
- *      Issue a certificate signing request (CSR)
- *      <pre>keytool -certreq -alias "my client key" -file mycertreq.csr -keystore my.keystore</pre>
- *     </p>
- *     </li>
- *     <li>
- *      <p>
- *      Send the certificate request to the trusted Certificate Authority for signature. 
- *      One may choose to act as her own CA and sign the certificate request using a PKI 
- *      tool, such as OpenSSL.
- *      </p>
- *     </li>
- *     <li>
- *      <p>
- *       Import the trusted CA root certificate
- *       <pre>keytool -import -alias "my trusted ca" -file caroot.crt -keystore my.keystore</pre> 
- *      </p>
- *     </li>
- *     <li>
- *      <p>
- *       Import the PKCS#7 file containg the complete certificate chain
- *       <pre>keytool -import -alias "my client key" -file mycert.p7 -keystore my.keystore</pre> 
- *      </p>
- *     </li>
- *     <li>
- *      <p>
- *       Verify the content the resultant keystore file
- *       <pre>keytool -list -v -keystore my.keystore</pre> 
- *      </p>
- *     </li>
- *   </ul>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author Julius Davies
- */
-
-public class SSLSocketFactory implements LayeredSocketFactory {
-
-    public static final String TLS   = "TLS";
-    public static final String SSL   = "SSL";
-    public static final String SSLV2 = "SSLv2";
-    
-    public static final X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER 
-        = new AllowAllHostnameVerifier();
-    
-    public static final X509HostnameVerifier BROWSER_COMPATIBLE_HOSTNAME_VERIFIER 
-        = new BrowserCompatHostnameVerifier();
-    
-    public static final X509HostnameVerifier STRICT_HOSTNAME_VERIFIER 
-        = new StrictHostnameVerifier();
-    /**
-     * The factory using the default JVM settings for secure connections.
-     */
-    private static final SSLSocketFactory DEFAULT_FACTORY = new SSLSocketFactory();
-    
-    /**
-     * Gets an singleton instance of the SSLProtocolSocketFactory.
-     * @return a SSLProtocolSocketFactory
-     */
-    public static SSLSocketFactory getSocketFactory() {
-        return DEFAULT_FACTORY;
-    }
-    
-    private final SSLContext sslcontext;
-    private final javax.net.ssl.SSLSocketFactory socketfactory;
-    private final HostNameResolver nameResolver;
-    private X509HostnameVerifier hostnameVerifier = BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
-
-    public SSLSocketFactory(
-        String algorithm, 
-        final KeyStore keystore, 
-        final String keystorePassword, 
-        final KeyStore truststore,
-        final SecureRandom random,
-        final HostNameResolver nameResolver) 
-        throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException
-    {
-        super();
-        if (algorithm == null) {
-            algorithm = TLS;
-        }
-        KeyManager[] keymanagers = null;
-        if (keystore != null) {
-            keymanagers = createKeyManagers(keystore, keystorePassword);
-        }
-        TrustManager[] trustmanagers = null;
-        if (truststore != null) {
-            trustmanagers = createTrustManagers(truststore);
-        }
-        this.sslcontext = SSLContext.getInstance(algorithm);
-        this.sslcontext.init(keymanagers, trustmanagers, random);
-        this.socketfactory = this.sslcontext.getSocketFactory();
-        this.nameResolver = nameResolver;
-    }
-
-    public SSLSocketFactory(
-            final KeyStore keystore, 
-            final String keystorePassword, 
-            final KeyStore truststore) 
-            throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException
-    {
-        this(TLS, keystore, keystorePassword, truststore, null, null);
-    }
-
-    public SSLSocketFactory(final KeyStore keystore, final String keystorePassword) 
-            throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException
-    {
-        this(TLS, keystore, keystorePassword, null, null, null);
-    }
-
-    public SSLSocketFactory(final KeyStore truststore) 
-            throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException
-    {
-        this(TLS, null, null, truststore, null, null);
-    }
-
-    /**
-     * Creates the default SSL socket factory.
-     * This constructor is used exclusively to instantiate the factory for
-     * {@link #getSocketFactory getSocketFactory}.
-     */
-    private SSLSocketFactory() {
-        super();
-        this.sslcontext = null;
-        this.socketfactory = HttpsURLConnection.getDefaultSSLSocketFactory();
-        this.nameResolver = null;
-    }
-
-    private static KeyManager[] createKeyManagers(final KeyStore keystore, final String password)
-        throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException {
-        if (keystore == null) {
-            throw new IllegalArgumentException("Keystore may not be null");
-        }
-        KeyManagerFactory kmfactory = KeyManagerFactory.getInstance(
-            KeyManagerFactory.getDefaultAlgorithm());
-        kmfactory.init(keystore, password != null ? password.toCharArray(): null);
-        return kmfactory.getKeyManagers(); 
-    }
-
-    private static TrustManager[] createTrustManagers(final KeyStore keystore)
-        throws KeyStoreException, NoSuchAlgorithmException { 
-        if (keystore == null) {
-            throw new IllegalArgumentException("Keystore may not be null");
-        }
-        TrustManagerFactory tmfactory = TrustManagerFactory.getInstance(
-            TrustManagerFactory.getDefaultAlgorithm());
-        tmfactory.init(keystore);
-        return tmfactory.getTrustManagers();
-    }
-
-
-    // non-javadoc, see interface org.apache.http.conn.SocketFactory
-    public Socket createSocket()
-        throws IOException {
-
-        // the cast makes sure that the factory is working as expected
-        return (SSLSocket) this.socketfactory.createSocket();
-    }
-
-
-    // non-javadoc, see interface org.apache.http.conn.SocketFactory
-    public Socket connectSocket(
-        final Socket sock,
-        final String host,
-        final int port,
-        final InetAddress localAddress,
-        int localPort,
-        final HttpParams params
-    ) throws IOException {
-
-        if (host == null) {
-            throw new IllegalArgumentException("Target host may not be null.");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("Parameters may not be null.");
-        }
-
-        SSLSocket sslsock = (SSLSocket)
-            ((sock != null) ? sock : createSocket());
-
-        if ((localAddress != null) || (localPort > 0)) {
-
-            // we need to bind explicitly
-            if (localPort < 0)
-                localPort = 0; // indicates "any"
-
-            InetSocketAddress isa =
-                new InetSocketAddress(localAddress, localPort);
-            sslsock.bind(isa);
-        }
-
-        int connTimeout = HttpConnectionParams.getConnectionTimeout(params);
-        int soTimeout = HttpConnectionParams.getSoTimeout(params);
-
-        InetSocketAddress remoteAddress;
-        if (this.nameResolver != null) {
-            remoteAddress = new InetSocketAddress(this.nameResolver.resolve(host), port); 
-        } else {
-            remoteAddress = new InetSocketAddress(host, port);            
-        }
-        
-        sslsock.connect(remoteAddress, connTimeout);
-
-        sslsock.setSoTimeout(soTimeout);
-        try {
-            hostnameVerifier.verify(host, sslsock);
-            // verifyHostName() didn't blowup - good!
-        } catch (IOException iox) {
-            // close the socket before re-throwing the exception
-            try { sslsock.close(); } catch (Exception x) { /*ignore*/ }
-            throw iox;
-        }
-
-        return sslsock;
-    }
-
-
-    /**
-     * Checks whether a socket connection is secure.
-     * This factory creates TLS/SSL socket connections
-     * which, by default, are considered secure.
-     * <br/>
-     * Derived classes may override this method to perform
-     * runtime checks, for example based on the cypher suite.
-     *
-     * @param sock      the connected socket
-     *
-     * @return  <code>true</code>
-     *
-     * @throws IllegalArgumentException if the argument is invalid
-     */
-    public boolean isSecure(Socket sock)
-        throws IllegalArgumentException {
-
-        if (sock == null) {
-            throw new IllegalArgumentException("Socket may not be null.");
-        }
-        // This instanceof check is in line with createSocket() above.
-        if (!(sock instanceof SSLSocket)) {
-            throw new IllegalArgumentException
-                ("Socket not created by this factory.");
-        }
-        // This check is performed last since it calls the argument object.
-        if (sock.isClosed()) {
-            throw new IllegalArgumentException("Socket is closed.");
-        }
-
-        return true;
-
-    } // isSecure
-
-
-    // non-javadoc, see interface LayeredSocketFactory
-    public Socket createSocket(
-        final Socket socket,
-        final String host,
-        final int port,
-        final boolean autoClose
-    ) throws IOException, UnknownHostException {
-        SSLSocket sslSocket = (SSLSocket) this.socketfactory.createSocket(
-              socket,
-              host,
-              port,
-              autoClose
-        );
-        hostnameVerifier.verify(host, sslSocket);
-        // verifyHostName() didn't blowup - good!
-        return sslSocket;
-    }
-
-    public void setHostnameVerifier(X509HostnameVerifier hostnameVerifier) {
-        if ( hostnameVerifier == null ) {
-            throw new IllegalArgumentException("Hostname verifier may not be null");
-        }
-        this.hostnameVerifier = hostnameVerifier;
-    }
-
-    public X509HostnameVerifier getHostnameVerifier() {
-        return hostnameVerifier;
-    }
-
-}
diff --git a/src/org/apache/http/conn/ssl/StrictHostnameVerifier.java b/src/org/apache/http/conn/ssl/StrictHostnameVerifier.java
deleted file mode 100644
index 5eb0d96..0000000
--- a/src/org/apache/http/conn/ssl/StrictHostnameVerifier.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ssl/StrictHostnameVerifier.java $
- * $Revision: 617642 $
- * $Date: 2008-02-01 12:54:07 -0800 (Fri, 01 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.conn.ssl;
-
-import javax.net.ssl.SSLException;
-
-/**
- * The Strict HostnameVerifier works the same way as Sun Java 1.4, Sun
- * Java 5, Sun Java 6-rc.  It's also pretty close to IE6.  This
- * implementation appears to be compliant with RFC 2818 for dealing with
- * wildcards.
- * <p/>
- * The hostname must match either the first CN, or any of the subject-alts.
- * A wildcard can occur in the CN, and in any of the subject-alts.  The
- * one divergence from IE6 is how we only check the first CN.  IE6 allows
- * a match against any of the CNs present.  We decided to follow in
- * Sun Java 1.4's footsteps and only check the first CN.  (If you need
- * to check all the CN's, feel free to write your own implementation!).
- * <p/>
- * A wildcard such as "*.foo.com" matches only subdomains in the same
- * level, for example "a.foo.com".  It does not match deeper subdomains
- * such as "a.b.foo.com".
- * 
- * @author Julius Davies
- */
-public class StrictHostnameVerifier extends AbstractVerifier {
-
-    public final void verify(
-            final String host, 
-            final String[] cns,
-            final String[] subjectAlts) throws SSLException {
-        verify(host, cns, subjectAlts, true);
-    }
-
-    @Override
-    public final String toString() { 
-        return "STRICT"; 
-    }
-    
-}
diff --git a/src/org/apache/http/conn/ssl/X509HostnameVerifier.java b/src/org/apache/http/conn/ssl/X509HostnameVerifier.java
deleted file mode 100644
index 05ad04d..0000000
--- a/src/org/apache/http/conn/ssl/X509HostnameVerifier.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ssl/X509HostnameVerifier.java $
- * $Revision: 618365 $
- * $Date: 2008-02-04 10:20:08 -0800 (Mon, 04 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.conn.ssl;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
-import java.io.IOException;
-import java.security.cert.X509Certificate;
-
-/**
- * Interface for checking if a hostname matches the names stored inside the
- * server's X.509 certificate.  Implements javax.net.ssl.HostnameVerifier, but
- * we don't actually use that interface.  Instead we added some methods that
- * take String parameters (instead of javax.net.ssl.HostnameVerifier's
- * SSLSession).  JUnit is a lot easier this way!  :-)
- * <p/>
- * We provide the HostnameVerifier.DEFAULT, HostnameVerifier.STRICT, and
- * HostnameVerifier.ALLOW_ALL implementations.  But feel free to define
- * your own implementation!
- * <p/>
- * Inspired by Sebastian Hauer's original StrictSSLProtocolSocketFactory in the
- * HttpClient "contrib" repository.
- *
- * @author Julius Davies
- * @author <a href="mailto:hauer@psicode.com">Sebastian Hauer</a>
- *
- * @since 4.0 (8-Dec-2006)
- */
-public interface X509HostnameVerifier extends HostnameVerifier {
-
-    boolean verify(String host, SSLSession session);
-
-    void verify(String host, SSLSocket ssl) throws IOException;
-
-    void verify(String host, X509Certificate cert) throws SSLException;
-
-    /**
-     * Checks to see if the supplied hostname matches any of the supplied CNs
-     * or "DNS" Subject-Alts.  Most implementations only look at the first CN,
-     * and ignore any additional CNs.  Most implementations do look at all of
-     * the "DNS" Subject-Alts. The CNs or Subject-Alts may contain wildcards
-     * according to RFC 2818.
-     *
-     * @param cns         CN fields, in order, as extracted from the X.509
-     *                    certificate.
-     * @param subjectAlts Subject-Alt fields of type 2 ("DNS"), as extracted
-     *                    from the X.509 certificate.
-     * @param host        The hostname to verify.
-     * @throws SSLException If verification failed.
-     */
-    void verify(String host, String[] cns, String[] subjectAlts)
-          throws SSLException;
-
-
-}
diff --git a/src/org/apache/http/conn/ssl/package.html b/src/org/apache/http/conn/ssl/package.html
deleted file mode 100644
index a5c737f..0000000
--- a/src/org/apache/http/conn/ssl/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ssl/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-TLS/SSL specific parts of the <i>HttpConn</i> API.
-
-</body>
-</html>
diff --git a/src/org/apache/http/conn/util/InetAddressUtils.java b/src/org/apache/http/conn/util/InetAddressUtils.java
deleted file mode 100644
index 71f2190..0000000
--- a/src/org/apache/http/conn/util/InetAddressUtils.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/util/InetAddressUtils.java $
- * $Revision: 652020 $
- * $Date: 2008-04-27 14:23:31 -0700 (Sun, 27 Apr 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.conn.util;
-
-import java.util.regex.Pattern;
-
-/**
- * A collection of utilities relating to InetAddresses.
- */
-public class InetAddressUtils {
-
-    private InetAddressUtils() {
-    }
-    
-    private static final Pattern IPV4_PATTERN = 
-        Pattern.compile(
-                "^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$");
-
-    private static final Pattern IPV6_STD_PATTERN = 
-        Pattern.compile(
-                "^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$");
-
-    private static final Pattern IPV6_HEX_COMPRESSED_PATTERN = 
-        Pattern.compile(
-                "^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$");
-
-    public static boolean isIPv4Address(final String input) {
-        return IPV4_PATTERN.matcher(input).matches();
-    }
-
-    public static boolean isIPv6StdAddress(final String input) {
-        return IPV6_STD_PATTERN.matcher(input).matches();
-    }
-    
-    public static boolean isIPv6HexCompressedAddress(final String input) {
-        return IPV6_HEX_COMPRESSED_PATTERN.matcher(input).matches();
-    }
-    
-    public static boolean isIPv6Address(final String input) {
-        return isIPv6StdAddress(input) || isIPv6HexCompressedAddress(input); 
-    }
-
-}
diff --git a/src/org/apache/http/cookie/ClientCookie.java b/src/org/apache/http/cookie/ClientCookie.java
deleted file mode 100644
index 96edec9..0000000
--- a/src/org/apache/http/cookie/ClientCookie.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/ClientCookie.java $
- * $Revision: 578403 $
- * $Date: 2007-09-22 03:56:04 -0700 (Sat, 22 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.cookie;
-
-/**
- * ClientCookie extends the standard {@link Cookie} interface with 
- * additional client specific functionality such ability to retrieve 
- * original cookie attributes exactly as they were specified by the 
- * origin server. This is important for generating the <tt>Cookie</tt> 
- * header because some cookie specifications require that the 
- * <tt>Cookie</tt> header should include certain attributes only if 
- * they were specified in the <tt>Set-Cookie</tt> header.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public interface ClientCookie extends Cookie {
-
-    // RFC2109 attributes
-    public static final String VERSION_ATTR    = "version";
-    public static final String PATH_ATTR       = "path";
-    public static final String DOMAIN_ATTR     = "domain";
-    public static final String MAX_AGE_ATTR    = "max-age";
-    public static final String SECURE_ATTR     = "secure";
-    public static final String COMMENT_ATTR    = "comment";
-    public static final String EXPIRES_ATTR    = "expires";
-    
-    // RFC2965 attributes
-    public static final String PORT_ATTR       = "port";
-    public static final String COMMENTURL_ATTR = "commenturl";
-    public static final String DISCARD_ATTR    = "discard";
-    
-    String getAttribute(String name);
-    
-    boolean containsAttribute(String name);
-    
-}
\ No newline at end of file
diff --git a/src/org/apache/http/cookie/Cookie.java b/src/org/apache/http/cookie/Cookie.java
deleted file mode 100644
index 5eae9d5..0000000
--- a/src/org/apache/http/cookie/Cookie.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/Cookie.java $
- * $Revision: 578403 $
- * $Date: 2007-09-22 03:56:04 -0700 (Sat, 22 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.cookie;
-
-import java.util.Date;
-
-/**
- * HTTP "magic-cookie" represents a piece of state information
- * that the HTTP agent and the target server can exchange to maintain 
- * a session.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public interface Cookie {
-
-    /**
-     * Returns the name.
-     *
-     * @return String name The name
-     */
-    String getName();
-
-    /**
-     * Returns the value.
-     *
-     * @return String value The current value.
-     */
-    String getValue();
-
-    /**
-     * Returns the comment describing the purpose of this cookie, or
-     * <tt>null</tt> if no such comment has been defined.
-     * 
-     * @return comment 
-     */
-    String getComment();
-
-    /**
-     * If a user agent (web browser) presents this cookie to a user, the
-     * cookie's purpose will be described by the information at this URL.
-     */
-    String getCommentURL();    
-    
-    /**
-     * Returns the expiration {@link Date} of the cookie, or <tt>null</tt>
-     * if none exists.
-     * <p><strong>Note:</strong> the object returned by this method is 
-     * considered immutable. Changing it (e.g. using setTime()) could result
-     * in undefined behaviour. Do so at your peril. </p>
-     * @return Expiration {@link Date}, or <tt>null</tt>.
-     */
-    Date getExpiryDate();
-
-    /**
-     * Returns <tt>false</tt> if the cookie should be discarded at the end
-     * of the "session"; <tt>true</tt> otherwise.
-     *
-     * @return <tt>false</tt> if the cookie should be discarded at the end
-     *         of the "session"; <tt>true</tt> otherwise
-     */
-    boolean isPersistent();
-
-    /**
-     * Returns domain attribute of the cookie.
-     * 
-     * @return the value of the domain attribute
-     */
-    String getDomain();
-
-    /**
-     * Returns the path attribute of the cookie
-     * 
-     * @return The value of the path attribute.
-     */
-    String getPath();
-
-    /**
-     * Get the Port attribute. It restricts the ports to which a cookie
-     * may be returned in a Cookie request header.
-     */
-    int[] getPorts();
-
-    /**
-     * Indicates whether this cookie requires a secure connection.
-     *
-     * @return  <code>true</code> if this cookie should only be sent
-     *          over secure connections, <code>false</code> otherwise.
-     */
-    boolean isSecure();
-
-    /**
-     * Returns the version of the cookie specification to which this
-     * cookie conforms.
-     *
-     * @return the version of the cookie.
-     */
-    int getVersion();
-
-    /**
-     * Returns true if this cookie has expired.
-     * @param date Current time
-     * 
-     * @return <tt>true</tt> if the cookie has expired.
-     */
-    boolean isExpired(final Date date);
-
-}
-
diff --git a/src/org/apache/http/cookie/CookieAttributeHandler.java b/src/org/apache/http/cookie/CookieAttributeHandler.java
deleted file mode 100644
index a79d115..0000000
--- a/src/org/apache/http/cookie/CookieAttributeHandler.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/CookieAttributeHandler.java $
- * $Revision: 558519 $
- * $Date: 2007-07-22 11:19:49 -0700 (Sun, 22 Jul 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.cookie;
-
-/**
- * Ths interface represents a cookie attribute handler responsible
- * for parsing, validating, and matching a specific cookie attribute, 
- * such as path, domain, port, etc.
- *
- * Different cookie specifications can provide a specific
- * implementation for this class based on their cookie handling
- * rules.
- *
- * @author jain.samit@gmail.com (Samit Jain)
- * 
- * @since 4.0
- */
-public interface CookieAttributeHandler {
-
-  /**
-   * Parse the given cookie attribute value and update the corresponding
-   * {@link org.apache.http.cookie.Cookie} property.
-   *
-   * @param cookie {@link org.apache.http.cookie.Cookie} to be updated
-   * @param value cookie attribute value from the cookie response header
-   */
-  void parse(SetCookie cookie, String value)
-          throws MalformedCookieException;
-
-  /**
-   * Peforms cookie validation for the given attribute value.
-   *
-   * @param cookie {@link org.apache.http.cookie.Cookie} to validate
-   * @param origin the cookie source to validate against
-   * @throws MalformedCookieException if cookie validation fails for this attribute
-   */
-  void validate(Cookie cookie, CookieOrigin origin)
-          throws MalformedCookieException;
-
-  /**
-   * Matches the given value (property of the destination host where request is being
-   * submitted) with the corresponding cookie attribute.
-   *
-   * @param cookie {@link org.apache.http.cookie.Cookie} to match
-   * @param origin the cookie source to match against
-   * @return <tt>true</tt> if the match is successful; <tt>false</tt> otherwise
-   */
-  boolean match(Cookie cookie, CookieOrigin origin);
-
-}
diff --git a/src/org/apache/http/cookie/CookieIdentityComparator.java b/src/org/apache/http/cookie/CookieIdentityComparator.java
deleted file mode 100644
index 4fc701c..0000000
--- a/src/org/apache/http/cookie/CookieIdentityComparator.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/CookieIdentityComparator.java $
- * $Revision: 618308 $
- * $Date: 2008-02-04 07:51:19 -0800 (Mon, 04 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.cookie;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * This cookie comparator can be used to compare identity of cookies.
- *  
- * <p>
- *  Cookies are considered identical if their names are equal and 
- *  their domain attributes match ignoring case.
- * </p>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public class CookieIdentityComparator implements Serializable, Comparator<Cookie> {
-
-    private static final long serialVersionUID = 4466565437490631532L;
-
-    public int compare(final Cookie c1, final Cookie c2) {
-        int res = c1.getName().compareTo(c2.getName());
-        if (res == 0) {
-            // do not differentiate empty and null domains 
-            String d1 = c1.getDomain();
-            if (d1 == null) {
-                d1 = "";
-            }
-            String d2 = c2.getDomain();
-            if (d2 == null) {
-                d2 = "";
-            }
-            res = d1.compareToIgnoreCase(d2);
-        }
-        return res;
-    }
-
-}
diff --git a/src/org/apache/http/cookie/CookieOrigin.java b/src/org/apache/http/cookie/CookieOrigin.java
deleted file mode 100644
index ad0448a..0000000
--- a/src/org/apache/http/cookie/CookieOrigin.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/CookieOrigin.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.cookie;
-
-import java.util.Locale;
-
-/**
- * CookieOrigin class incapsulates details of an origin server that 
- * are relevant when parsing, validating or matching HTTP cookies.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public final class CookieOrigin {
-
-    private final String host;
-    private final int port;
-    private final String path;
-    private final boolean secure;
-    
-    public CookieOrigin(final String host, int port, final String path, boolean secure) {
-        super();
-        if (host == null) {
-            throw new IllegalArgumentException(
-                    "Host of origin may not be null");
-        }
-        if (host.trim().length() == 0) {
-            throw new IllegalArgumentException(
-                    "Host of origin may not be blank");
-        }
-        if (port < 0) {
-            throw new IllegalArgumentException("Invalid port: " + port);
-        }
-        if (path == null) {
-            throw new IllegalArgumentException(
-                    "Path of origin may not be null.");
-        }
-        this.host = host.toLowerCase(Locale.ENGLISH);
-        this.port = port;
-        if (path.trim().length() != 0) {
-            this.path = path;
-        } else {
-            this.path = "/";
-        }
-        this.secure = secure;
-    }
-
-    public String getHost() {
-        return this.host;
-    }
-
-    public String getPath() {
-        return this.path;
-    }
-
-    public int getPort() {
-        return this.port;
-    }
-
-    public boolean isSecure() {
-        return this.secure;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder buffer = new StringBuilder();
-        buffer.append('[');
-        if (this.secure) {
-            buffer.append("(secure)");
-        }
-        buffer.append(this.host);
-        buffer.append(':');
-        buffer.append(Integer.toString(this.port));
-        buffer.append(this.path);
-        buffer.append(']');
-        return buffer.toString();
-    }
-    
-}
diff --git a/src/org/apache/http/cookie/CookiePathComparator.java b/src/org/apache/http/cookie/CookiePathComparator.java
deleted file mode 100644
index f5f0a66..0000000
--- a/src/org/apache/http/cookie/CookiePathComparator.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/CookiePathComparator.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.cookie;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * This cookie comparator ensures that multiple cookies satisfying 
- * a common criteria are ordered in the <tt>Cookie</tt> header such
- * that those with more specific Path attributes precede those with
- * less specific.
- *  
- * <p>
- * This comparator assumes that Path attributes of two cookies 
- * path-match a commmon request-URI. Otherwise, the result of the
- * comparison is undefined.
- * </p>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public class CookiePathComparator implements Serializable, Comparator<Cookie> {
-
-    private static final long serialVersionUID = 7523645369616405818L;
-
-    private String normalizePath(final Cookie cookie) {
-        String path = cookie.getPath();
-        if (path == null) {
-            path = "/";
-        }
-        if (!path.endsWith("/")) {
-            path = path + '/';
-        }
-        return path;
-    }
-    
-    public int compare(final Cookie c1, final Cookie c2) {
-        String path1 = normalizePath(c1);
-        String path2 = normalizePath(c2);
-        if (path1.equals(path2)) {
-            return 0;
-        } else if (path1.startsWith(path2)) {
-            return -1;
-        } else if (path2.startsWith(path1)) {
-            return 1;
-        } else {
-            // Does not really matter
-            return 0;
-        }
-    }
-
-}
diff --git a/src/org/apache/http/cookie/CookieSpec.java b/src/org/apache/http/cookie/CookieSpec.java
deleted file mode 100644
index 1eb9f26..0000000
--- a/src/org/apache/http/cookie/CookieSpec.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/CookieSpec.java $
- * $Revision: 603563 $
- * $Date: 2007-12-12 03:17:55 -0800 (Wed, 12 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.cookie;
-
-import java.util.List;
-
-import org.apache.http.Header;
-
-/**
- * Defines the cookie management specification.
- * <p>Cookie management specification must define
- * <ul>
- *   <li> rules of parsing "Set-Cookie" header
- *   <li> rules of validation of parsed cookies
- *   <li>  formatting of "Cookie" header 
- * </ul>
- * for a given host, port and path of origin
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- *
- * @since 4.0
- */
-public interface CookieSpec {    
-
-    /**
-     * Returns version of the state management this cookie specification
-     * conforms to.
-     * 
-     * @return version of the state management specification
-     */
-    int getVersion();
-    
-    /**
-      * Parse the <tt>"Set-Cookie"</tt> Header into an array of Cookies.
-      *
-      * <p>This method will not perform the validation of the resultant
-      * {@link Cookie}s</p> 
-      *
-      * @see #validate
-      *
-      * @param header the <tt>Set-Cookie</tt> received from the server
-      * @param origin details of the cookie origin
-      * @return an array of <tt>Cookie</tt>s parsed from the header
-      * @throws MalformedCookieException if an exception occurs during parsing
-      */
-    List<Cookie> parse(Header header, CookieOrigin origin) throws MalformedCookieException;
-
-    /**
-      * Validate the cookie according to validation rules defined by the 
-      *  cookie specification.
-      *
-      * @param cookie the Cookie to validate
-      * @param origin details of the cookie origin
-      * @throws MalformedCookieException if the cookie is invalid
-      */
-    void validate(Cookie cookie, CookieOrigin origin) throws MalformedCookieException;
-    
-    /**
-     * Determines if a Cookie matches the target location.
-     *
-     * @param cookie the Cookie to be matched
-     * @param origin the target to test against
-     * 
-     * @return <tt>true</tt> if the cookie should be submitted with a request 
-     *  with given attributes, <tt>false</tt> otherwise.
-     */
-    boolean match(Cookie cookie, CookieOrigin origin);
-
-    /**
-     * Create <tt>"Cookie"</tt> headers for an array of Cookies.
-     *
-     * @param cookies the Cookies format into a Cookie header
-     * @return a Header for the given Cookies.
-     * @throws IllegalArgumentException if an input parameter is illegal
-     */
-    List<Header> formatCookies(List<Cookie> cookies);
-
-    /**
-     * Returns a request header identifying what version of the state management 
-     * specification is understood. May be <code>null</code> if the cookie 
-     * specification does not support <tt>Cookie2</tt> header.
-     */
-    Header getVersionHeader();
-    
-}
diff --git a/src/org/apache/http/cookie/CookieSpecFactory.java b/src/org/apache/http/cookie/CookieSpecFactory.java
deleted file mode 100644
index 9d5c21d..0000000
--- a/src/org/apache/http/cookie/CookieSpecFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/CookieSpecFactory.java $
- * $Revision: 489636 $
- * $Date: 2006-12-22 04:34:57 -0800 (Fri, 22 Dec 2006) $
- *
- * ====================================================================
- * 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.cookie;
-
-import org.apache.http.params.HttpParams;
-
-/**
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public interface CookieSpecFactory {    
-
-    CookieSpec newInstance(HttpParams params);
-
-}
diff --git a/src/org/apache/http/cookie/CookieSpecRegistry.java b/src/org/apache/http/cookie/CookieSpecRegistry.java
deleted file mode 100644
index 64b9c8b..0000000
--- a/src/org/apache/http/cookie/CookieSpecRegistry.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/CookieSpecRegistry.java $
- * $Revision: 652950 $
- * $Date: 2008-05-02 16:49:48 -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.cookie;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.http.params.HttpParams;
-
-/**
- * Cookie specification registry that can be used to obtain the corresponding
- * cookie specification implementation for a given type of type or version of 
- * cookie. 
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- *
- * @since 4.0
- */
-public final class CookieSpecRegistry {
-
-    private final Map<String,CookieSpecFactory> registeredSpecs;
-    
-    public CookieSpecRegistry() {
-        super();
-        this.registeredSpecs = new LinkedHashMap<String,CookieSpecFactory>();
-    }
-    
-    /**
-     * Registers a {@link CookieSpecFactory} with the given identifier. 
-     * If a specification with the given name already exists it will be overridden.  
-     * This nameis the same one used to retrieve the {@link CookieSpecFactory} 
-     * from {@link #getCookieSpec(String)}.
-     * 
-     * @param name the identifier for this specification
-     * @param factory the {@link CookieSpecFactory} class to register
-     * 
-     * @see #getCookieSpec(String)
-     */
-    public synchronized void register(final String name, final CookieSpecFactory factory) {
-         if (name == null) {
-             throw new IllegalArgumentException("Name may not be null");
-         }
-        if (factory == null) {
-            throw new IllegalArgumentException("Cookie spec factory may not be null");
-        }
-        registeredSpecs.put(name.toLowerCase(Locale.ENGLISH), factory);
-    }
-
-    /**
-     * Unregisters the {@link CookieSpecFactory} with the given ID.
-     * 
-     * @param id the identifier of the {@link CookieSpec cookie specification} to unregister
-     */
-    public synchronized void unregister(final String id) {
-         if (id == null) {
-             throw new IllegalArgumentException("Id may not be null");
-         }
-         registeredSpecs.remove(id.toLowerCase(Locale.ENGLISH));
-    }
-
-    /**
-     * Gets the {@link CookieSpec cookie specification} with the given ID.
-     * 
-     * @param name the {@link CookieSpec cookie specification} identifier
-     * @param params the {@link HttpParams HTTP parameters} for the cookie
-     *  specification. 
-     * 
-     * @return {@link CookieSpec cookie specification}
-     * 
-     * @throws IllegalStateException if a policy with the given name cannot be found
-     */
-    public synchronized CookieSpec getCookieSpec(final String name, final HttpParams params) 
-        throws IllegalStateException {
-
-        if (name == null) {
-            throw new IllegalArgumentException("Name may not be null");
-        }
-        CookieSpecFactory factory = registeredSpecs.get(name.toLowerCase(Locale.ENGLISH));
-        if (factory != null) {
-            return factory.newInstance(params);
-        } else {
-            throw new IllegalStateException("Unsupported cookie spec: " + name);
-        }
-    } 
-
-    /**
-     * Gets the {@link CookieSpec cookie specification} with the given name.
-     * 
-     * @param name the {@link CookieSpec cookie specification} identifier
-     * 
-     * @return {@link CookieSpec cookie specification}
-     * 
-     * @throws IllegalStateException if a policy with the given name cannot be found
-     */
-    public synchronized CookieSpec getCookieSpec(final String name) 
-        throws IllegalStateException {
-        return getCookieSpec(name, null);
-    } 
-
-    /**
-     * Obtains a list containing names of all registered {@link CookieSpec cookie 
-     * specs} in their default order.
-     * 
-     * Note that the DEFAULT policy (if present) is likely to be the same
-     * as one of the other policies, but does not have to be.
-     * 
-     * @return list of registered cookie spec names
-     */
-    public synchronized List<String> getSpecNames(){
-        return new ArrayList<String>(registeredSpecs.keySet()); 
-    }
-    
-    /**
-     * Populates the internal collection of registered {@link CookieSpec cookie 
-     * specs} with the content of the map passed as a parameter.
-     * 
-     * @param map cookie specs
-     */
-    public synchronized void setItems(final Map<String, CookieSpecFactory> map) {
-        if (map == null) {
-            return;
-        }
-        registeredSpecs.clear();
-        registeredSpecs.putAll(map);
-    }
-
-}
diff --git a/src/org/apache/http/cookie/MalformedCookieException.java b/src/org/apache/http/cookie/MalformedCookieException.java
deleted file mode 100644
index e3f30a9..0000000
--- a/src/org/apache/http/cookie/MalformedCookieException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/MalformedCookieException.java $
- * $Revision: 508891 $
- * $Date: 2007-02-18 02:08:48 -0800 (Sun, 18 Feb 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.cookie;
-
-import org.apache.http.ProtocolException;
-
-/**
- * Signals that a cookie is in some way invalid or illegal in a given
- * context
- *
- * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class MalformedCookieException extends ProtocolException {
-
-    private static final long serialVersionUID = -6695462944287282185L;
-
-    /**
-     * Creates a new MalformedCookieException with a <tt>null</tt> detail message.
-     */
-    public MalformedCookieException() {
-        super();
-    }
-     
-    /** 
-     * Creates a new MalformedCookieException with a specified message string.
-     * 
-     * @param message The exception detail message
-     */
-    public MalformedCookieException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new MalformedCookieException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public MalformedCookieException(String message, Throwable cause) {
-        super(message, cause);
-    }
-}
diff --git a/src/org/apache/http/cookie/SM.java b/src/org/apache/http/cookie/SM.java
deleted file mode 100644
index a7047d5..0000000
--- a/src/org/apache/http/cookie/SM.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/SM.java $
- * $Revision: 582602 $
- * $Date: 2007-10-07 02:35:48 -0700 (Sun, 07 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.cookie;
-
-/**
- * Constants and static helpers related to the HTTP state management.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public interface SM {
-
-    public static final String COOKIE            = "Cookie";
-    public static final String COOKIE2          = "Cookie2";
-    public static final String SET_COOKIE        = "Set-Cookie";
-    public static final String SET_COOKIE2       = "Set-Cookie2";
-       
-}
diff --git a/src/org/apache/http/cookie/SetCookie.java b/src/org/apache/http/cookie/SetCookie.java
deleted file mode 100644
index d207c48..0000000
--- a/src/org/apache/http/cookie/SetCookie.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/SetCookie.java $
- * $Revision: 617193 $
- * $Date: 2008-01-31 11:26:47 -0800 (Thu, 31 Jan 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.cookie;
-
-import java.util.Date;
-
-/**
- * This interface represents a <code>SetCookie</code> response header sent by the 
- * origin server to the HTTP agent in order to maintain a conversational state.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public interface SetCookie extends Cookie {
-
-    void setValue(String value);
-    
-    /**
-     * If a user agent (web browser) presents this cookie to a user, the
-     * cookie's purpose will be described using this comment.
-     * 
-     * @param comment
-     *  
-     * @see #getComment()
-     */
-    void setComment(String comment);
-
-    /**
-     * Sets expiration date.
-     * <p><strong>Note:</strong> the object returned by this method is considered
-     * immutable. Changing it (e.g. using setTime()) could result in undefined 
-     * behaviour. Do so at your peril.</p>
-     *
-     * @param expiryDate the {@link Date} after which this cookie is no longer valid.
-     *
-     * @see Cookie#getExpiryDate
-     *
-     */
-    void setExpiryDate (Date expiryDate);
-
-    /**
-     * Sets the domain attribute.
-     * 
-     * @param domain The value of the domain attribute
-     *
-     * @see Cookie#getDomain
-     */
-    void setDomain(String domain);
-
-    /**
-     * Sets the path attribute.
-     *
-     * @param path The value of the path attribute
-     *
-     * @see Cookie#getPath
-     *
-     */
-    void setPath(String path);
-
-    /**
-     * Sets the secure attribute of the cookie.
-     * <p>
-     * When <tt>true</tt> the cookie should only be sent
-     * using a secure protocol (https).  This should only be set when
-     * the cookie's originating server used a secure protocol to set the
-     * cookie's value.
-     *
-     * @param secure The value of the secure attribute
-     * 
-     * @see #isSecure()
-     */
-    void setSecure (boolean secure);
-
-    /**
-     * Sets the version of the cookie specification to which this
-     * cookie conforms. 
-     *
-     * @param version the version of the cookie.
-     * 
-     * @see Cookie#getVersion
-     */
-    void setVersion(int version);
-
-}
-
diff --git a/src/org/apache/http/cookie/SetCookie2.java b/src/org/apache/http/cookie/SetCookie2.java
deleted file mode 100644
index cd0420e..0000000
--- a/src/org/apache/http/cookie/SetCookie2.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/SetCookie2.java $
- * $Revision: 578408 $
- * $Date: 2007-09-22 04:53:57 -0700 (Sat, 22 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.cookie;
-
-/**
- * This interface represents a <code>SetCookie2</code> response header sent by the 
- * origin server to the HTTP agent in order to maintain a conversational state.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public interface SetCookie2 extends SetCookie {
-
-    /**
-     * If a user agent (web browser) presents this cookie to a user, the
-     * cookie's purpose will be described by the information at this URL.
-     */
-    void setCommentURL(String commentURL);
-    
-    /**
-     * Sets the Port attribute. It restricts the ports to which a cookie
-     * may be returned in a Cookie request header.
-     */
-    void setPorts(int[] ports);
-    
-    /**
-     * Set the Discard attribute.
-     *
-     * Note: <tt>Discard</tt> attribute overrides <tt>Max-age</tt>.
-     *
-     * @see #isPersistent()
-     */
-    void setDiscard(boolean discard);
-    
-}
-
diff --git a/src/org/apache/http/cookie/package.html b/src/org/apache/http/cookie/package.html
deleted file mode 100644
index 891d9c3..0000000
--- a/src/org/apache/http/cookie/package.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-The API for client-side state management via cookies,
-commonly referred to as <i>HttpCookie</i>.
-
-</body>
-</html>
diff --git a/src/org/apache/http/cookie/params/CookieSpecPNames.java b/src/org/apache/http/cookie/params/CookieSpecPNames.java
deleted file mode 100644
index 6a6f6d0..0000000
--- a/src/org/apache/http/cookie/params/CookieSpecPNames.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/params/CookieSpecPNames.java $
- * $Revision: 578403 $
- * $Date: 2007-09-22 03:56:04 -0700 (Sat, 22 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.cookie.params;
-
-/**
- * Parameter names for cookie specifications in HttpCookie.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 578403 $
- * 
- * @since 4.0
- */
-public interface CookieSpecPNames {
-
-    /**
-     * Parameter for the date patterns used for parsing.
-     * <p>
-     * This parameter expects a value of type {@link java.util.Collection}.
-     * The collection elements are of type {@link String}
-     * and must be compatible with the syntax of
-     * {@link java.text.SimpleDateFormat}.
-     * </p>
-     */
-    public static final String DATE_PATTERNS = "http.protocol.cookie-datepatterns";
-    
-    /**
-     * Parameter for Cookie header formatting.
-     * Defines whether {@link org.apache.http.cookie.Cookie cookies}
-     * should be put on 
-     * a single {@link org.apache.http.Header request header}.
-     * If not, each cookie is formatted in a seperate Cookie header.
-     * <p>
-     * This parameter expects a value of type {@link Boolean}.
-     * </p>
-     */
-    public static final String SINGLE_COOKIE_HEADER = "http.protocol.single-cookie-header"; 
-
-}
diff --git a/src/org/apache/http/cookie/params/CookieSpecParamBean.java b/src/org/apache/http/cookie/params/CookieSpecParamBean.java
deleted file mode 100644
index 6016022..0000000
--- a/src/org/apache/http/cookie/params/CookieSpecParamBean.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/params/CookieSpecParamBean.java $
- * $Revision: 632313 $
- * $Date: 2008-02-29 05:19:50 -0800 (Fri, 29 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.cookie.params;
-
-import java.util.Collection;
-
-import org.apache.http.params.HttpAbstractParamBean;
-import org.apache.http.params.HttpParams;
-
-public class CookieSpecParamBean extends HttpAbstractParamBean {
-
-    public CookieSpecParamBean (final HttpParams params) {
-        super(params);
-    }
-
-    public void setDatePatterns (final Collection <String> patterns) {
-        params.setParameter(CookieSpecPNames.DATE_PATTERNS, patterns);
-    }
-
-    public void setSingleHeader (final boolean singleHeader) {
-        params.setBooleanParameter(CookieSpecPNames.SINGLE_COOKIE_HEADER, singleHeader);
-    }
-    
-}
diff --git a/src/org/apache/http/cookie/params/package.html b/src/org/apache/http/cookie/params/package.html
deleted file mode 100644
index e6fb7cd..0000000
--- a/src/org/apache/http/cookie/params/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/cookie/params/package.html $
- * $Revision: 555193 $
- * $Date: 2007-07-11 00:36:47 -0700 (Wed, 11 Jul 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>
-Parameters for configuring <i>HttpCookie</i>.
-
-</body>
-</html>
diff --git a/src/org/apache/http/entity/AbstractHttpEntity.java b/src/org/apache/http/entity/AbstractHttpEntity.java
deleted file mode 100644
index 0fce6eb..0000000
--- a/src/org/apache/http/entity/AbstractHttpEntity.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/AbstractHttpEntity.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.entity;
-
-import java.io.IOException;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.protocol.HTTP;
-
-/**
- * Abstract base class for entities.
- * Provides the commonly used attributes for streamed and self-contained
- * implementations of {@link HttpEntity HttpEntity}.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public abstract class AbstractHttpEntity implements HttpEntity {
-
-    /**
-     * The Content-Type header.
-     * Returned by {@link #getContentType getContentType},
-     * unless that method is overridden.
-     */
-    protected Header contentType;
-
-    /**
-     * The Content-Encoding header.
-     * Returned by {@link #getContentEncoding getContentEncoding},
-     * unless that method is overridden.
-     */
-    protected Header contentEncoding;
-
-    /**
-     * The 'chunked' flag.
-     * Returned by {@link #isChunked isChunked},
-     * unless that method is overridden.
-     */
-    protected boolean chunked;
-
-
-    /**
-     * Protected default constructor.
-     * The attributes of the created object remain
-     * <code>null</code> and <code>false</code>, respectively.
-     */
-    protected AbstractHttpEntity() {
-        super();
-    }
-
-
-    /**
-     * Obtains the Content-Type header.
-     * The default implementation returns the value of the
-     * {@link #contentType contentType} attribute.
-     *
-     * @return  the Content-Type header, or <code>null</code>
-     */
-    public Header getContentType() {
-        return this.contentType;
-    }
-
-    
-    /**
-     * Obtains the Content-Encoding header.
-     * The default implementation returns the value of the
-     * {@link #contentEncoding contentEncoding} attribute.
-     *
-     * @return  the Content-Encoding header, or <code>null</code>
-     */
-    public Header getContentEncoding() {
-        return this.contentEncoding;
-    }
-
-    /**
-     * Obtains the 'chunked' flag.
-     * The default implementation returns the value of the
-     * {@link #chunked chunked} attribute.
-     *
-     * @return  the 'chunked' flag
-     */
-    public boolean isChunked() {
-        return this.chunked;
-    }
-
-    
-    /**
-     * Specifies the Content-Type header.
-     * The default implementation sets the value of the
-     * {@link #contentType contentType} attribute.
-     *
-     * @param contentType       the new Content-Encoding header, or
-     *                          <code>null</code> to unset
-     */
-    public void setContentType(final Header contentType) {
-        this.contentType = contentType;
-    }
-
-    /**
-     * Specifies the Content-Type header, as a string.
-     * The default implementation calls
-     * {@link #setContentType(Header) setContentType(Header)}.
-     *
-     * @param ctString     the new Content-Type header, or
-     *                     <code>null</code> to unset
-     */
-    public void setContentType(final String ctString) {
-        Header h = null;
-        if (ctString != null) {
-            h = new BasicHeader(HTTP.CONTENT_TYPE, ctString);
-        }
-        setContentType(h);
-    }
-    
-
-    /**
-     * Specifies the Content-Encoding header.
-     * The default implementation sets the value of the
-     * {@link #contentEncoding contentEncoding} attribute.
-     *
-     * @param contentEncoding   the new Content-Encoding header, or
-     *                          <code>null</code> to unset
-     */
-    public void setContentEncoding(final Header contentEncoding) {
-        this.contentEncoding = contentEncoding;
-    }
-
-    /**
-     * Specifies the Content-Encoding header, as a string.
-     * The default implementation calls
-     * {@link #setContentEncoding(Header) setContentEncoding(Header)}.
-     *
-     * @param ceString     the new Content-Encoding header, or
-     *                     <code>null</code> to unset
-     */
-    public void setContentEncoding(final String ceString) {
-        Header h = null;
-        if (ceString != null) {
-            h = new BasicHeader(HTTP.CONTENT_ENCODING, ceString);
-        }
-        setContentEncoding(h);
-    }
-
-
-    /**
-     * Specifies the 'chunked' flag.
-     * The default implementation sets the value of the
-     * {@link #chunked chunked} attribute.
-     *
-     * @param b         the new 'chunked' flag
-     */
-    public void setChunked(boolean b) {
-        this.chunked = b;
-    }
-
-
-    /**
-     * Does not consume anything.
-     * The default implementation does nothing if
-     * {@link HttpEntity#isStreaming isStreaming}
-     * returns <code>false</code>, and throws an exception
-     * if it returns <code>true</code>.
-     * This removes the burden of implementing
-     * an empty method for non-streaming entities.
-     *
-     * @throws IOException      in case of an I/O problem
-     * @throws UnsupportedOperationException
-     *          if a streaming subclass does not override this method
-     */
-    public void consumeContent()
-        throws IOException, UnsupportedOperationException{
-        if (isStreaming()) {
-            throw new UnsupportedOperationException
-                ("streaming entity does not implement consumeContent()");
-        }
-    } // consumeContent
-
-    
-} // class AbstractHttpEntity
diff --git a/src/org/apache/http/entity/BasicHttpEntity.java b/src/org/apache/http/entity/BasicHttpEntity.java
deleted file mode 100644
index df3c07c..0000000
--- a/src/org/apache/http/entity/BasicHttpEntity.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/BasicHttpEntity.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.entity;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * A generic streamed entity being received on a connection.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public class BasicHttpEntity extends AbstractHttpEntity {
-
-    private InputStream content;
-    private boolean contentObtained;
-    private long length;
-
-    /**
-     * Creates a new basic entity.
-     * The content is initially missing, the content length
-     * is set to a negative number.
-     */
-    public BasicHttpEntity() {
-        super();
-        this.length = -1;
-    }
-
-    // non-javadoc, see interface HttpEntity
-    public long getContentLength() {
-        return this.length;
-    }
-
-    /**
-     * Obtains the content, once only.
-     *
-     * @return  the content, if this is the first call to this method
-     *          since {@link #setContent setContent} has been called
-     *
-     * @throws IllegalStateException
-     *          if the content has been obtained before, or
-     *          has not yet been provided
-     */
-    public InputStream getContent()
-        throws IllegalStateException {
-        if (this.content == null) {
-            throw new IllegalStateException("Content has not been provided");
-        }
-        if (this.contentObtained) {
-            throw new IllegalStateException("Content has been consumed");
-        }
-        this.contentObtained = true;
-        return this.content;
-
-    } // getContent
-
-    /**
-     * Tells that this entity is not repeatable.
-     *
-     * @return <code>false</code>
-     */
-    public boolean isRepeatable() {
-        return false;
-    }
-
-    /**
-     * Specifies the length of the content.
-     *
-     * @param len       the number of bytes in the content, or
-     *                  a negative number to indicate an unknown length
-     */
-    public void setContentLength(long len) {
-        this.length = len;
-    }
-
-    /**
-     * Specifies the content.
-     *
-     * @param instream          the stream to return with the next call to
-     *                          {@link #getContent getContent}
-     */
-    public void setContent(final InputStream instream) {
-        this.content = instream;
-        this.contentObtained = false; 
-    }
-
-    // non-javadoc, see interface HttpEntity
-    public void writeTo(final OutputStream outstream) throws IOException {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Output stream may not be null");
-        }
-        InputStream instream = getContent();
-        int l;
-        byte[] tmp = new byte[2048];
-        while ((l = instream.read(tmp)) != -1) {
-            outstream.write(tmp, 0, l);
-        }
-    }
-
-    // non-javadoc, see interface HttpEntity
-    public boolean isStreaming() {
-        return !this.contentObtained && this.content != null;
-    }
-
-    // non-javadoc, see interface HttpEntity
-    public void consumeContent() throws IOException {
-        if (content != null) {
-            content.close(); // reads to the end of the entity
-        }
-    }
-    
-} // class BasicHttpEntity
diff --git a/src/org/apache/http/entity/BufferedHttpEntity.java b/src/org/apache/http/entity/BufferedHttpEntity.java
deleted file mode 100644
index 9888797..0000000
--- a/src/org/apache/http/entity/BufferedHttpEntity.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/BufferedHttpEntity.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.entity;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.util.EntityUtils;
-
-/**
- * A wrapping entity that buffers it content if necessary.
- * The buffered entity is always repeatable.
- * If the wrapped entity is repeatable itself, calls are passed through.
- * If the wrapped entity is not repeatable, the content is read into a
- * buffer once and provided from there as often as required.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public class BufferedHttpEntity extends HttpEntityWrapper {
-      
-    private final byte[] buffer;
-      
-    public BufferedHttpEntity(final HttpEntity entity) throws IOException {
-        super(entity);
-        if (!entity.isRepeatable() || entity.getContentLength() < 0) {
-            this.buffer = EntityUtils.toByteArray(entity);
-        } else {
-            this.buffer = null;
-        }
-    }
-
-    public long getContentLength() {
-        if (this.buffer != null) {
-            return this.buffer.length;
-        } else {
-            return wrappedEntity.getContentLength();
-        }
-    }
-    
-    public InputStream getContent() throws IOException {
-        if (this.buffer != null) {
-            return new ByteArrayInputStream(this.buffer);
-        } else {
-            return wrappedEntity.getContent();
-        }
-    }
-
-    /**
-     * Tells that this entity does not have to be chunked.
-     *
-     * @return  <code>false</code>
-     */
-    public boolean isChunked() {
-        return (buffer == null) && wrappedEntity.isChunked();
-    }
-    
-    /**
-     * Tells that this entity is repeatable.
-     *
-     * @return  <code>true</code>
-     */
-    public boolean isRepeatable() {
-        return true;
-    }
-
-    
-    public void writeTo(final OutputStream outstream) throws IOException {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Output stream may not be null");
-        }
-        if (this.buffer != null) {
-            outstream.write(this.buffer);
-        } else {
-            wrappedEntity.writeTo(outstream);
-        }
-    }
-
-
-    // non-javadoc, see interface HttpEntity
-    public boolean isStreaming() {
-        return (buffer == null) && wrappedEntity.isStreaming();
-    }
-    
-} // class BufferedHttpEntity
diff --git a/src/org/apache/http/entity/ByteArrayEntity.java b/src/org/apache/http/entity/ByteArrayEntity.java
deleted file mode 100644
index c7257f7..0000000
--- a/src/org/apache/http/entity/ByteArrayEntity.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.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.entity;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- *  An entity whose content is retrieved from a byte array.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 604625 $
- * 
- * @since 4.0
- */
-public class ByteArrayEntity extends AbstractHttpEntity implements Cloneable {
-
-    protected final byte[] content;
-
-    public ByteArrayEntity(final byte[] b) {
-        super();        
-        if (b == null) {
-            throw new IllegalArgumentException("Source byte array may not be null");
-        }
-        this.content = b;
-    }
-
-    public boolean isRepeatable() {
-        return true;
-    }
-
-    public long getContentLength() {
-        return this.content.length;
-    }
-
-    public InputStream getContent() {
-        return new ByteArrayInputStream(this.content);
-    }
-    
-    public void writeTo(final OutputStream outstream) throws IOException {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Output stream may not be null");
-        }
-        outstream.write(this.content);
-        outstream.flush();
-    }
-
-
-    /**
-     * Tells that this entity is not streaming.
-     *
-     * @return <code>false</code>
-     */
-    public boolean isStreaming() {
-        return false;
-    }
-
-    public Object clone() throws CloneNotSupportedException {
-        return super.clone();
-    }
-
-} // class ByteArrayEntity
diff --git a/src/org/apache/http/entity/ContentLengthStrategy.java b/src/org/apache/http/entity/ContentLengthStrategy.java
deleted file mode 100644
index cc4ab7d..0000000
--- a/src/org/apache/http/entity/ContentLengthStrategy.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ContentLengthStrategy.java $
- * $Revision: 613298 $
- * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 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.entity;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-
-/**
- * Represents a strategy to determine the content length based on the properties
- * of an HTTP message.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 613298 $
- * 
- * @since 4.0
- */
-public interface ContentLengthStrategy {
-
-    public static final int IDENTITY         = -1;
-    public static final int CHUNKED          = -2;
-    
-    long determineLength(HttpMessage message) throws HttpException;
-            
-}
diff --git a/src/org/apache/http/entity/ContentProducer.java b/src/org/apache/http/entity/ContentProducer.java
deleted file mode 100644
index 456eae3..0000000
--- a/src/org/apache/http/entity/ContentProducer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ContentProducer.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.entity;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * An abstract entity content producer.
- *
- *<p>Content producers are expected to be able to produce their 
- * content multiple times</p>
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public interface ContentProducer {
-
-    void writeTo(OutputStream outstream) throws IOException;
-
-}
diff --git a/src/org/apache/http/entity/EntityTemplate.java b/src/org/apache/http/entity/EntityTemplate.java
deleted file mode 100644
index 0c6002e..0000000
--- a/src/org/apache/http/entity/EntityTemplate.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/EntityTemplate.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.entity;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Entity that delegates the process of content generation to an abstract
- * content producer.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public class EntityTemplate extends AbstractHttpEntity {
-
-    private final ContentProducer contentproducer;
-    
-    public EntityTemplate(final ContentProducer contentproducer) {
-        super();
-        if (contentproducer == null) {
-            throw new IllegalArgumentException("Content producer may not be null");
-        }
-        this.contentproducer = contentproducer; 
-    }
-
-    public long getContentLength() {
-        return -1;
-    }
-
-    public InputStream getContent() {
-        throw new UnsupportedOperationException("Entity template does not implement getContent()");
-    }
-
-    public boolean isRepeatable() {
-        return true;
-    }
-
-    public void writeTo(final OutputStream outstream) throws IOException {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Output stream may not be null");
-        }
-        this.contentproducer.writeTo(outstream);
-    }
-
-    public boolean isStreaming() {
-        return true;
-    }
-
-    public void consumeContent() throws IOException {
-    }
-    
-}
diff --git a/src/org/apache/http/entity/FileEntity.java b/src/org/apache/http/entity/FileEntity.java
deleted file mode 100644
index a991058..0000000
--- a/src/org/apache/http/entity/FileEntity.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.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.entity;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * An entity whose content is retrieved from a file.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 604625 $
- * 
- * @since 4.0
- */
-public class FileEntity extends AbstractHttpEntity implements Cloneable {
-
-    protected final File file; 
-
-    public FileEntity(final File file, final String contentType) {
-        super();
-        if (file == null) {
-            throw new IllegalArgumentException("File may not be null");
-        }
-        this.file = file;
-        setContentType(contentType);
-    }
-
-    public boolean isRepeatable() {
-        return true;
-    }
-
-    public long getContentLength() {
-        return this.file.length();
-    }
-    
-    public InputStream getContent() throws IOException {
-        return new FileInputStream(this.file);
-    }
-    
-    public void writeTo(final OutputStream outstream) throws IOException {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Output stream may not be null");
-        }
-        InputStream instream = new FileInputStream(this.file);
-        try {
-            byte[] tmp = new byte[4096];
-            int l;
-            while ((l = instream.read(tmp)) != -1) {
-                outstream.write(tmp, 0, l);
-            }
-            outstream.flush();
-        } finally {
-            instream.close();
-        }
-    }
-
-    /**
-     * Tells that this entity is not streaming.
-     *
-     * @return <code>false</code>
-     */
-    public boolean isStreaming() {
-        return false;
-    }
-
-    public Object clone() throws CloneNotSupportedException {
-        // File instance is considered immutable
-        // No need to make a copy of it
-        return super.clone();
-    }
-
-} // class FileEntity
diff --git a/src/org/apache/http/entity/HttpEntityWrapper.java b/src/org/apache/http/entity/HttpEntityWrapper.java
deleted file mode 100644
index 17a4149..0000000
--- a/src/org/apache/http/entity/HttpEntityWrapper.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/HttpEntityWrapper.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.entity;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-
-/**
- * Base class for wrapping entities.
- * Keeps a {@link #wrappedEntity wrappedEntity} and delegates all
- * calls to it. Implementations of wrapping entities can derive
- * from this class and need to override only those methods that
- * should not be delegated to the wrapped entity.
- *
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public class HttpEntityWrapper implements HttpEntity {
-
-    /** The wrapped entity. */
-    protected HttpEntity wrappedEntity;
-
-    /**
-     * Creates a new entity wrapper.
-     *
-     * @param wrapped   the entity to wrap
-     */
-    public HttpEntityWrapper(HttpEntity wrapped) {
-        super();
-
-        if (wrapped == null) {
-            throw new IllegalArgumentException
-                ("wrapped entity must not be null");
-        }
-        wrappedEntity = wrapped;
-
-    } // constructor
-
-
-    public boolean isRepeatable() {
-        return wrappedEntity.isRepeatable();
-    }
-
-    public boolean isChunked() {
-        return wrappedEntity.isChunked();
-    }
-
-    public long getContentLength() {
-        return wrappedEntity.getContentLength();
-    }
-
-    public Header getContentType() {
-        return wrappedEntity.getContentType();
-    }
-
-    public Header getContentEncoding() {
-        return wrappedEntity.getContentEncoding();
-    }
-
-    public InputStream getContent()
-        throws IOException {
-        return wrappedEntity.getContent();
-    }
-
-    public void writeTo(OutputStream outstream)
-        throws IOException {
-        wrappedEntity.writeTo(outstream);
-    }
-
-    public boolean isStreaming() {
-        return wrappedEntity.isStreaming();
-    }
-
-    public void consumeContent()
-        throws IOException {
-        wrappedEntity.consumeContent();
-    }
-
-} // class HttpEntityWrapper
diff --git a/src/org/apache/http/entity/InputStreamEntity.java b/src/org/apache/http/entity/InputStreamEntity.java
deleted file mode 100644
index 6d33fe4..0000000
--- a/src/org/apache/http/entity/InputStreamEntity.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/InputStreamEntity.java $
- * $Revision: 617591 $
- * $Date: 2008-02-01 10:21:17 -0800 (Fri, 01 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.entity;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
- 
-/**
- * A streamed entity obtaining content from an {@link InputStream InputStream}.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 617591 $
- * 
- * @since 4.0
- */
-public class InputStreamEntity extends AbstractHttpEntity {
-
-    private final static int BUFFER_SIZE = 2048;
-
-    private final InputStream content;
-    private final long length;
-    private boolean consumed = false;
-
-    public InputStreamEntity(final InputStream instream, long length) {
-        super();        
-        if (instream == null) {
-            throw new IllegalArgumentException("Source input stream may not be null");
-        }
-        this.content = instream;
-        this.length = length;
-    }
-
-    public boolean isRepeatable() {
-        return false;
-    }
-
-    public long getContentLength() {
-        return this.length;
-    }
-
-    public InputStream getContent() throws IOException {
-        return this.content;
-    }
-        
-    public void writeTo(final OutputStream outstream) throws IOException {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Output stream may not be null");
-        }
-        InputStream instream = this.content;
-        byte[] buffer = new byte[BUFFER_SIZE];
-        int l;
-        if (this.length < 0) {
-            // consume until EOF
-            while ((l = instream.read(buffer)) != -1) {
-                outstream.write(buffer, 0, l);
-            }
-        } else {
-            // consume no more than length
-            long remaining = this.length;
-            while (remaining > 0) {
-                l = instream.read(buffer, 0, (int)Math.min(BUFFER_SIZE, remaining));
-                if (l == -1) {
-                    break;
-                }
-                outstream.write(buffer, 0, l);
-                remaining -= l;
-            }
-        }
-        this.consumed = true;
-    }
-
-    // non-javadoc, see interface HttpEntity
-    public boolean isStreaming() {
-        return !this.consumed;
-    }
-
-    // non-javadoc, see interface HttpEntity
-    public void consumeContent() throws IOException {
-        this.consumed = true;
-        // If the input stream is from a connection, closing it will read to
-        // the end of the content. Otherwise, we don't care what it does.
-        this.content.close();
-    }
-    
-} // class InputStreamEntity
diff --git a/src/org/apache/http/entity/SerializableEntity.java b/src/org/apache/http/entity/SerializableEntity.java
deleted file mode 100644
index 171977b..0000000
--- a/src/org/apache/http/entity/SerializableEntity.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/SerializableEntity.java $
- * $Revision: 647816 $
- * $Date: 2008-04-14 07:37:13 -0700 (Mon, 14 Apr 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.entity;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-
-public class SerializableEntity extends AbstractHttpEntity {
-    
-    private byte[] objSer;
-    
-    private Serializable objRef;
-    
-    public SerializableEntity(Serializable ser, boolean bufferize) throws IOException {
-        super();
-        if (ser == null) {
-            throw new IllegalArgumentException("Source object may not be null");
-        }
-        
-        if (bufferize) {
-            createBytes(ser);
-        } else {
-            this.objRef = ser;
-        }
-    }
-    
-    private void createBytes(Serializable ser) throws IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        ObjectOutputStream out = new ObjectOutputStream(baos);
-        out.writeObject(ser);
-        out.flush();	
-        this.objSer = baos.toByteArray();
-    }
-    
-    public InputStream getContent() throws IOException, IllegalStateException {
-        if (this.objSer == null) {
-            createBytes(this.objRef);
-        }
-        return new ByteArrayInputStream(this.objSer);
-    }
-
-    public long getContentLength() {
-        if (this.objSer ==  null) { 
-            return -1;
-        } else {
-            return this.objSer.length;
-        }
-    }
-
-    public boolean isRepeatable() {
-        return true;
-    }
-
-    public boolean isStreaming() {
-        return this.objSer == null;
-    }
-
-    public void writeTo(OutputStream outstream) throws IOException {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Output stream may not be null");
-        }
-        
-        if (this.objSer == null) {
-            ObjectOutputStream out = new ObjectOutputStream(outstream);
-            out.writeObject(this.objRef);
-            out.flush();
-        } else {
-            outstream.write(this.objSer);
-            outstream.flush();
-        }
-    }
-
-}
diff --git a/src/org/apache/http/entity/StringEntity.java b/src/org/apache/http/entity/StringEntity.java
deleted file mode 100644
index cbc382b..0000000
--- a/src/org/apache/http/entity/StringEntity.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java $
- * $Revision: 618367 $
- * $Date: 2008-02-04 10:26:06 -0800 (Mon, 04 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.entity;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-
-import org.apache.http.protocol.HTTP;
-
-/**
- *  An entity whose content is retrieved from a string.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618367 $
- * 
- * @since 4.0
- */
-public class StringEntity extends AbstractHttpEntity implements Cloneable {
-
-    protected final byte[] content;
-
-    public StringEntity(final String s, String charset) 
-            throws UnsupportedEncodingException {
-        super();
-        if (s == null) {
-            throw new IllegalArgumentException("Source string may not be null");
-        }
-        if (charset == null) {
-            charset = HTTP.DEFAULT_CONTENT_CHARSET;
-        }
-        this.content = s.getBytes(charset);
-        setContentType(HTTP.PLAIN_TEXT_TYPE + HTTP.CHARSET_PARAM + charset);
-    }
-
-    public StringEntity(final String s) 
-            throws UnsupportedEncodingException {
-        this(s, null);
-    }
-
-    public boolean isRepeatable() {
-        return true;
-    }
-
-    public long getContentLength() {
-        return this.content.length;
-    }
-    
-    public InputStream getContent() throws IOException {
-        return new ByteArrayInputStream(this.content);
-    }
-    
-    public void writeTo(final OutputStream outstream) throws IOException {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Output stream may not be null");
-        }
-        outstream.write(this.content);
-        outstream.flush();
-    }
-
-    /**
-     * Tells that this entity is not streaming.
-     *
-     * @return <code>false</code>
-     */
-    public boolean isStreaming() {
-        return false;
-    }
-
-    public Object clone() throws CloneNotSupportedException {
-        return super.clone();
-    }
-
-} // class StringEntity
diff --git a/src/org/apache/http/entity/package.html b/src/org/apache/http/entity/package.html
deleted file mode 100644
index 11d491e..0000000
--- a/src/org/apache/http/entity/package.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/package.html $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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>
-Representations for HTTP message entities.
-
-An {@link org.apache.http.HttpEntity entity} is the optional content of a
-{@link org.apache.http.HttpMessage message}.
-You'll find a basic selection of entity implementations here.
-If you need to send an entity, you can provide it for example as a
-{@link org.apache.http.entity.ByteArrayEntity byte array},
-{@link org.apache.http.entity.StringEntity string},
-{@link org.apache.http.entity.FileEntity file}, or through an arbitrary
-{@link org.apache.http.entity.InputStreamEntity input stream}.
-If you receive a message with an entity, you typically get that as a
-{@link org.apache.http.entity.BasicHttpEntity basic} entity.
-Entity implementations can be
-{@link org.apache.http.entity.HttpEntityWrapper wrapped},
-for example to
-{@link org.apache.http.entity.BufferedHttpEntity buffer}
-the content in memory.
-
-
-
-</body>
-</html>
diff --git a/src/org/apache/http/impl/AbstractHttpClientConnection.java b/src/org/apache/http/impl/AbstractHttpClientConnection.java
deleted file mode 100644
index ebfaabb..0000000
--- a/src/org/apache/http/impl/AbstractHttpClientConnection.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpClientConnection.java $
- * $Revision: 627457 $
- * $Date: 2008-02-13 07:14:19 -0800 (Wed, 13 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.impl;
-
-import java.io.IOException;
-
-import org.apache.http.HttpClientConnection;
-import org.apache.http.HttpConnectionMetrics;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseFactory;
-import org.apache.http.impl.entity.EntityDeserializer;
-import org.apache.http.impl.entity.EntitySerializer;
-import org.apache.http.impl.entity.LaxContentLengthStrategy;
-import org.apache.http.impl.entity.StrictContentLengthStrategy;
-import org.apache.http.impl.io.HttpRequestWriter;
-import org.apache.http.impl.io.HttpResponseParser;
-import org.apache.http.io.HttpMessageParser;
-import org.apache.http.io.HttpMessageWriter;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.io.SessionOutputBuffer;
-import org.apache.http.params.HttpParams;
-
-/**
- * Abstract client-side HTTP connection capable of transmitting and receiving data
- * using arbitrary {@link SessionInputBuffer} and {@link SessionOutputBuffer}
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 627457 $
- * 
- * @since 4.0
- */
-public abstract class AbstractHttpClientConnection implements HttpClientConnection {
-
-    private final EntitySerializer entityserializer;
-    private final EntityDeserializer entitydeserializer;
-    
-    private SessionInputBuffer inbuffer = null;
-    private SessionOutputBuffer outbuffer = null;
-    private HttpMessageParser responseParser = null;
-    private HttpMessageWriter requestWriter = null;
-    private HttpConnectionMetricsImpl metrics = null;
-
-
-
-    public AbstractHttpClientConnection() {
-        super();
-        this.entityserializer = createEntitySerializer();
-        this.entitydeserializer = createEntityDeserializer();
-    }
-    
-    protected abstract void assertOpen() throws IllegalStateException;
-
-    protected EntityDeserializer createEntityDeserializer() {
-        return new EntityDeserializer(new LaxContentLengthStrategy());
-    }
-
-    protected EntitySerializer createEntitySerializer() {
-        return new EntitySerializer(new StrictContentLengthStrategy());
-    }
-
-    protected HttpResponseFactory createHttpResponseFactory() {
-        return new DefaultHttpResponseFactory();
-    }
-
-    protected HttpMessageParser createResponseParser(
-            final SessionInputBuffer buffer,
-            final HttpResponseFactory responseFactory,
-            final HttpParams params) {
-        // override in derived class to specify a line parser
-        return new HttpResponseParser(buffer, null, responseFactory, params);
-    }
-
-    protected HttpMessageWriter createRequestWriter(
-            final SessionOutputBuffer buffer,
-            final HttpParams params) {
-        // override in derived class to specify a line formatter
-        return new HttpRequestWriter(buffer, null, params);
-    }
-
-    protected void init(
-            final SessionInputBuffer inbuffer,
-            final SessionOutputBuffer outbuffer,
-            final HttpParams params) {
-        if (inbuffer == null) {
-            throw new IllegalArgumentException("Input session buffer may not be null");
-        }
-        if (outbuffer == null) {
-            throw new IllegalArgumentException("Output session buffer may not be null");
-        }
-        this.inbuffer = inbuffer;
-        this.outbuffer = outbuffer;
-        this.responseParser = createResponseParser(
-                inbuffer, 
-                createHttpResponseFactory(), 
-                params);
-        this.requestWriter = createRequestWriter(
-                outbuffer, params);
-        this.metrics = new HttpConnectionMetricsImpl(
-                inbuffer.getMetrics(),
-                outbuffer.getMetrics());
-    }
-    
-    public boolean isResponseAvailable(int timeout) throws IOException {
-        assertOpen();
-        return this.inbuffer.isDataAvailable(timeout);
-    }
-
-    public void sendRequestHeader(final HttpRequest request) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        assertOpen();
-        this.requestWriter.write(request);
-        this.metrics.incrementRequestCount();
-    }
-
-    public void sendRequestEntity(final HttpEntityEnclosingRequest request) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        assertOpen();
-        if (request.getEntity() == null) {
-            return;
-        }
-        this.entityserializer.serialize(
-                this.outbuffer,
-                request,
-                request.getEntity());
-    }
-
-    protected void doFlush() throws IOException {
-        this.outbuffer.flush();
-    }
-    
-    public void flush() throws IOException {
-        assertOpen();
-        doFlush();
-    }
-    
-    public HttpResponse receiveResponseHeader() 
-            throws HttpException, IOException {
-        assertOpen();
-        HttpResponse response = (HttpResponse) this.responseParser.parse();
-        if (response.getStatusLine().getStatusCode() >= 200) {
-            this.metrics.incrementResponseCount();
-        }
-        return response;
-    }
-    
-    public void receiveResponseEntity(final HttpResponse response)
-            throws HttpException, IOException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        assertOpen();
-        HttpEntity entity = this.entitydeserializer.deserialize(this.inbuffer, response);
-        response.setEntity(entity);
-    }
-    
-    public boolean isStale() {
-        if (!isOpen()) {
-            return true;
-        }
-        try {
-            this.inbuffer.isDataAvailable(1);
-            return false;
-        } catch (IOException ex) {
-            return true;
-        }
-    }
-    
-    public HttpConnectionMetrics getMetrics() {
-        return this.metrics;
-    }
-
-}
diff --git a/src/org/apache/http/impl/AbstractHttpServerConnection.java b/src/org/apache/http/impl/AbstractHttpServerConnection.java
deleted file mode 100644
index ef68ed3..0000000
--- a/src/org/apache/http/impl/AbstractHttpServerConnection.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpServerConnection.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.impl;
-
-import java.io.IOException;
-
-import org.apache.http.HttpConnectionMetrics;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestFactory;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpServerConnection;
-import org.apache.http.impl.entity.EntityDeserializer;
-import org.apache.http.impl.entity.EntitySerializer;
-import org.apache.http.impl.entity.LaxContentLengthStrategy;
-import org.apache.http.impl.entity.StrictContentLengthStrategy;
-import org.apache.http.impl.io.HttpRequestParser;
-import org.apache.http.impl.io.HttpResponseWriter;
-import org.apache.http.io.HttpMessageParser;
-import org.apache.http.io.HttpMessageWriter;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.io.SessionOutputBuffer;
-import org.apache.http.params.HttpParams;
-
-/**
- * Abstract server-side HTTP connection capable of transmitting and receiving data
- * using arbitrary {@link SessionInputBuffer} and {@link SessionOutputBuffer}
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618017 $
- * 
- * @since 4.0
- */
-public abstract class AbstractHttpServerConnection implements HttpServerConnection {
-
-    private final EntitySerializer entityserializer;
-    private final EntityDeserializer entitydeserializer;
-    
-    private SessionInputBuffer inbuffer = null;
-    private SessionOutputBuffer outbuffer = null;
-    private HttpMessageParser requestParser = null;
-    private HttpMessageWriter responseWriter = null;
-    private HttpConnectionMetricsImpl metrics = null;
-
-
-
-    public AbstractHttpServerConnection() {
-        super();
-        this.entityserializer = createEntitySerializer();
-        this.entitydeserializer = createEntityDeserializer();
-    }
-    
-    protected abstract void assertOpen() throws IllegalStateException;
-
-    protected EntityDeserializer createEntityDeserializer() {
-        return new EntityDeserializer(new LaxContentLengthStrategy());
-    }
-
-    protected EntitySerializer createEntitySerializer() {
-        return new EntitySerializer(new StrictContentLengthStrategy());
-    }
-
-    protected HttpRequestFactory createHttpRequestFactory() {
-        return new DefaultHttpRequestFactory();
-    }
-
-    protected HttpMessageParser createRequestParser(
-            final SessionInputBuffer buffer,
-            final HttpRequestFactory requestFactory,
-            final HttpParams params) {
-        // override in derived class to specify a line parser
-        return new HttpRequestParser(buffer, null, requestFactory, params);
-    }
-    
-    protected HttpMessageWriter createResponseWriter(
-            final SessionOutputBuffer buffer,
-            final HttpParams params) {
-        // override in derived class to specify a line formatter
-        return new HttpResponseWriter(buffer, null, params);
-    }
-
-
-    protected void init(
-            final SessionInputBuffer inbuffer,
-            final SessionOutputBuffer outbuffer,
-            final HttpParams params) {
-        if (inbuffer == null) {
-            throw new IllegalArgumentException("Input session buffer may not be null");
-        }
-        if (outbuffer == null) {
-            throw new IllegalArgumentException("Output session buffer may not be null");
-        }
-        this.inbuffer = inbuffer;
-        this.outbuffer = outbuffer;
-        this.requestParser = createRequestParser(
-                inbuffer, 
-                createHttpRequestFactory(), 
-                params);
-        this.responseWriter = createResponseWriter(
-                outbuffer, params);
-        this.metrics = new HttpConnectionMetricsImpl(
-                inbuffer.getMetrics(),
-                outbuffer.getMetrics());
-    }
-    
-    public HttpRequest receiveRequestHeader() 
-            throws HttpException, IOException {
-        assertOpen();
-        HttpRequest request = (HttpRequest) this.requestParser.parse();
-        this.metrics.incrementRequestCount();
-        return request;
-    }
-    
-    public void receiveRequestEntity(final HttpEntityEnclosingRequest request) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        assertOpen();
-        HttpEntity entity = this.entitydeserializer.deserialize(this.inbuffer, request);
-        request.setEntity(entity);
-    }
-
-    protected void doFlush() throws IOException  {
-        this.outbuffer.flush();
-    }
-    
-    public void flush() throws IOException {
-        assertOpen();
-        doFlush();
-    }
-    
-    public void sendResponseHeader(final HttpResponse response) 
-            throws HttpException, IOException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        assertOpen();
-        this.responseWriter.write(response);
-        if (response.getStatusLine().getStatusCode() >= 200) {
-            this.metrics.incrementResponseCount();
-        }
-    }
-
-    public void sendResponseEntity(final HttpResponse response) 
-            throws HttpException, IOException {
-        if (response.getEntity() == null) {
-            return;
-        }
-        this.entityserializer.serialize(
-                this.outbuffer,
-                response,
-                response.getEntity());
-    }
-    
-    public boolean isStale() {
-        assertOpen();
-        try {
-            this.inbuffer.isDataAvailable(1);
-            return false;
-        } catch (IOException ex) {
-            return true;
-        }
-    }
-    
-    public HttpConnectionMetrics getMetrics() {
-        return this.metrics;
-    }
-
-}
diff --git a/src/org/apache/http/impl/DefaultConnectionReuseStrategy.java b/src/org/apache/http/impl/DefaultConnectionReuseStrategy.java
deleted file mode 100644
index da1d5fd..0000000
--- a/src/org/apache/http/impl/DefaultConnectionReuseStrategy.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultConnectionReuseStrategy.java $
- * $Revision: 602537 $
- * $Date: 2007-12-08 11:42:06 -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.impl;
-
-import org.apache.http.ConnectionReuseStrategy;
-import org.apache.http.HttpConnection;
-import org.apache.http.HeaderIterator;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpVersion;
-import org.apache.http.ParseException;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.ExecutionContext;
-import org.apache.http.TokenIterator;
-import org.apache.http.message.BasicTokenIterator;
-
-/**
- * Default implementation of a strategy deciding about connection re-use.
- * The default implementation first checks some basics, for example
- * whether the connection is still open or whether the end of the
- * request entity can be determined without closing the connection.
- * If these checks pass, the tokens in the "Connection" header will
- * be examined. In the absence of a "Connection" header, the
- * non-standard but commonly used "Proxy-Connection" header takes
- * it's role. A token "close" indicates that the connection cannot
- * be reused. If there is no such token, a token "keep-alive" indicates
- * that the connection should be re-used. If neither token is found,
- * or if there are no "Connection" headers, the default policy for
- * the HTTP version is applied. Since HTTP/1.1, connections are re-used
- * by default. Up until HTTP/1.0, connections are not re-used by default.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- * @version $Revision: 602537 $
- * 
- * @since 4.0
- */
-public class DefaultConnectionReuseStrategy
-    implements ConnectionReuseStrategy {
-
-    public DefaultConnectionReuseStrategy() {
-        super();
-    }
-
-    // see interface ConnectionReuseStrategy
-    public boolean keepAlive(final HttpResponse response,
-                             final HttpContext context) {
-        if (response == null) {
-            throw new IllegalArgumentException
-                ("HTTP response may not be null.");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException
-                ("HTTP context may not be null.");
-        }
-        
-        HttpConnection conn = (HttpConnection)
-            context.getAttribute(ExecutionContext.HTTP_CONNECTION);
-
-        if (conn != null && !conn.isOpen())
-            return false;
-        // do NOT check for stale connection, that is an expensive operation
-
-        // Check for a self-terminating entity. If the end of the entity will
-        // be indicated by closing the connection, there is no keep-alive.
-        HttpEntity entity = response.getEntity();
-        ProtocolVersion ver = response.getStatusLine().getProtocolVersion();
-        if (entity != null) {
-            if (entity.getContentLength() < 0) {
-                if (!entity.isChunked() ||
-                    ver.lessEquals(HttpVersion.HTTP_1_0)) {
-                    // if the content length is not known and is not chunk
-                    // encoded, the connection cannot be reused
-                    return false;
-                }
-            }
-        }
-
-        // Check for the "Connection" header. If that is absent, check for
-        // the "Proxy-Connection" header. The latter is an unspecified and
-        // broken but unfortunately common extension of HTTP.
-        HeaderIterator hit = response.headerIterator(HTTP.CONN_DIRECTIVE);
-        if (!hit.hasNext())
-            hit = response.headerIterator("Proxy-Connection");
-
-        // Experimental usage of the "Connection" header in HTTP/1.0 is
-        // documented in RFC 2068, section 19.7.1. A token "keep-alive" is
-        // used to indicate that the connection should be persistent.
-        // Note that the final specification of HTTP/1.1 in RFC 2616 does not
-        // include this information. Neither is the "Connection" header
-        // mentioned in RFC 1945, which informally describes HTTP/1.0.
-        //
-        // RFC 2616 specifies "close" as the only connection token with a
-        // specific meaning: it disables persistent connections.
-        //
-        // The "Proxy-Connection" header is not formally specified anywhere,
-        // but is commonly used to carry one token, "close" or "keep-alive".
-        // The "Connection" header, on the other hand, is defined as a
-        // sequence of tokens, where each token is a header name, and the
-        // token "close" has the above-mentioned additional meaning.
-        //
-        // To get through this mess, we treat the "Proxy-Connection" header
-        // in exactly the same way as the "Connection" header, but only if
-        // the latter is missing. We scan the sequence of tokens for both
-        // "close" and "keep-alive". As "close" is specified by RFC 2068,
-        // it takes precedence and indicates a non-persistent connection.
-        // If there is no "close" but a "keep-alive", we take the hint.
-
-        if (hit.hasNext()) {
-            try {
-                TokenIterator ti = createTokenIterator(hit);
-                boolean keepalive = false;
-                while (ti.hasNext()) {
-                    final String token = ti.nextToken();
-                    if (HTTP.CONN_CLOSE.equalsIgnoreCase(token)) {
-                        return false;
-                    } else if (HTTP.CONN_KEEP_ALIVE.equalsIgnoreCase(token)) {
-                        // continue the loop, there may be a "close" afterwards
-                        keepalive = true;
-                    }
-                }
-                if (keepalive)
-                    return true;
-                // neither "close" nor "keep-alive", use default policy
-
-            } catch (ParseException px) {
-                // invalid connection header means no persistent connection
-                // we don't have logging in HttpCore, so the exception is lost
-                return false;
-            }
-        }
-
-        // default since HTTP/1.1 is persistent, before it was non-persistent
-        return !ver.lessEquals(HttpVersion.HTTP_1_0);
-    }
-
-
-    /**
-     * Creates a token iterator from a header iterator.
-     * This method can be overridden to replace the implementation of
-     * the token iterator.
-     *
-     * @param hit       the header iterator
-     *
-     * @return  the token iterator
-     */
-    protected TokenIterator createTokenIterator(HeaderIterator hit) {
-        return new BasicTokenIterator(hit);
-    }
-}
diff --git a/src/org/apache/http/impl/DefaultHttpClientConnection.java b/src/org/apache/http/impl/DefaultHttpClientConnection.java
deleted file mode 100644
index c0a96f5..0000000
--- a/src/org/apache/http/impl/DefaultHttpClientConnection.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultHttpClientConnection.java $
- * $Revision: 561083 $
- * $Date: 2007-07-30 11:31:17 -0700 (Mon, 30 Jul 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.impl;
-
-import java.io.IOException;
-import java.net.Socket;
-
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-
-/**
- * Default implementation of a client-side HTTP connection.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 561083 $
- * 
- * @since 4.0
- */
-public class DefaultHttpClientConnection extends SocketHttpClientConnection {
-
-    public DefaultHttpClientConnection() {
-        super();
-    }
-    
-    public void bind(
-            final Socket socket, 
-            final HttpParams params) throws IOException {
-        if (socket == null) {
-            throw new IllegalArgumentException("Socket may not be null");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        assertNotOpen();
-        socket.setTcpNoDelay(HttpConnectionParams.getTcpNoDelay(params));
-        socket.setSoTimeout(HttpConnectionParams.getSoTimeout(params));
-        
-        int linger = HttpConnectionParams.getLinger(params);
-        if (linger >= 0) {
-            socket.setSoLinger(linger > 0, linger);
-        }
-        super.bind(socket, params);
-    }
-
-    public String toString() {
-        StringBuffer buffer = new StringBuffer();
-        buffer.append("[");
-        if (isOpen()) {
-            buffer.append(getRemotePort());
-        } else {
-            buffer.append("closed");
-        }
-        buffer.append("]");
-        return buffer.toString();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/DefaultHttpRequestFactory.java b/src/org/apache/http/impl/DefaultHttpRequestFactory.java
deleted file mode 100644
index dee36c9..0000000
--- a/src/org/apache/http/impl/DefaultHttpRequestFactory.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultHttpRequestFactory.java $
- * $Revision: 618367 $
- * $Date: 2008-02-04 10:26:06 -0800 (Mon, 04 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.impl;
-
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestFactory;
-import org.apache.http.MethodNotSupportedException;
-import org.apache.http.RequestLine;
-import org.apache.http.message.BasicHttpEntityEnclosingRequest;
-import org.apache.http.message.BasicHttpRequest;
-
-/**
- * Default implementation of a factory for creating request objects.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618367 $
- * 
- * @since 4.0
- */
-public class DefaultHttpRequestFactory implements HttpRequestFactory {
-    
-    private static final String[] RFC2616_COMMON_METHODS = {
-        "GET"
-    };
-    
-    private static final String[] RFC2616_ENTITY_ENC_METHODS = {
-        "POST",
-        "PUT"
-    };
-
-    private static final String[] RFC2616_SPECIAL_METHODS = {
-        "HEAD",
-        "OPTIONS",
-        "DELETE",
-        "TRACE"
-    };
-    
-    
-    public DefaultHttpRequestFactory() {
-        super();
-    }
-    
-    private static boolean isOneOf(final String[] methods, final String method) {
-        for (int i = 0; i < methods.length; i++) {
-            if (methods[i].equalsIgnoreCase(method)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public HttpRequest newHttpRequest(final RequestLine requestline)
-            throws MethodNotSupportedException {
-        if (requestline == null) {
-            throw new IllegalArgumentException("Request line may not be null");
-        }
-        String method = requestline.getMethod();
-        if (isOneOf(RFC2616_COMMON_METHODS, method)) {
-            return new BasicHttpRequest(requestline); 
-        } else if (isOneOf(RFC2616_ENTITY_ENC_METHODS, method)) {
-            return new BasicHttpEntityEnclosingRequest(requestline); 
-        } else if (isOneOf(RFC2616_SPECIAL_METHODS, method)) {
-            return new BasicHttpRequest(requestline); 
-        } else { 
-            throw new MethodNotSupportedException(method +  " method not supported");
-        }
-    }
-
-    public HttpRequest newHttpRequest(final String method, final String uri)
-            throws MethodNotSupportedException {
-        if (isOneOf(RFC2616_COMMON_METHODS, method)) {
-            return new BasicHttpRequest(method, uri); 
-        } else if (isOneOf(RFC2616_ENTITY_ENC_METHODS, method)) {
-            return new BasicHttpEntityEnclosingRequest(method, uri); 
-        } else if (isOneOf(RFC2616_SPECIAL_METHODS, method)) {
-            return new BasicHttpRequest(method, uri); 
-        } else {
-            throw new MethodNotSupportedException(method
-                    + " method not supported");
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/impl/DefaultHttpResponseFactory.java b/src/org/apache/http/impl/DefaultHttpResponseFactory.java
deleted file mode 100644
index 40a2c9a..0000000
--- a/src/org/apache/http/impl/DefaultHttpResponseFactory.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultHttpResponseFactory.java $
- * $Revision: 618367 $
- * $Date: 2008-02-04 10:26:06 -0800 (Mon, 04 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.impl;
-
-import java.util.Locale;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseFactory;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.StatusLine;
-import org.apache.http.message.BasicHttpResponse;
-import org.apache.http.message.BasicStatusLine;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.ReasonPhraseCatalog;
-import org.apache.http.impl.EnglishReasonPhraseCatalog;
-
-/**
- * Default implementation of a factory for creating response objects.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618367 $
- * 
- * @since 4.0
- */
-public class DefaultHttpResponseFactory implements HttpResponseFactory {
-
-    /** The catalog for looking up reason phrases. */
-    protected final ReasonPhraseCatalog reasonCatalog;
-
-
-    /**
-     * Creates a new response factory with the given catalog.
-     *
-     * @param catalog   the catalog of reason phrases
-     */
-    public DefaultHttpResponseFactory(ReasonPhraseCatalog catalog) {
-        if (catalog == null) {
-            throw new IllegalArgumentException
-                ("Reason phrase catalog must not be null.");
-        }
-        this.reasonCatalog = catalog;
-    }
-
-    /**
-     * Creates a new response factory with the default catalog.
-     * The default catalog is
-     * {@link EnglishReasonPhraseCatalog EnglishReasonPhraseCatalog}.
-     */
-    public DefaultHttpResponseFactory() {
-        this(EnglishReasonPhraseCatalog.INSTANCE);
-    }
-
-
-    // non-javadoc, see interface HttpResponseFactory
-    public HttpResponse newHttpResponse(final ProtocolVersion ver,
-                                        final int status,
-                                        HttpContext context) {
-        if (ver == null) {
-            throw new IllegalArgumentException("HTTP version may not be null");
-        }
-        final Locale loc      = determineLocale(context);
-        final String reason   = reasonCatalog.getReason(status, loc);
-        StatusLine statusline = new BasicStatusLine(ver, status, reason);
-        return new BasicHttpResponse(statusline, reasonCatalog, loc); 
-    }
-
-
-    // non-javadoc, see interface HttpResponseFactory
-    public HttpResponse newHttpResponse(final StatusLine statusline,
-                                        HttpContext context) {
-        if (statusline == null) {
-            throw new IllegalArgumentException("Status line may not be null");
-        }
-        final Locale loc = determineLocale(context);
-        return new BasicHttpResponse(statusline, reasonCatalog, loc);
-    }
-
-
-    /**
-     * Determines the locale of the response.
-     * The implementation in this class always returns the default locale.
-     *
-     * @param context   the context from which to determine the locale, or
-     *                  <code>null</code> to use the default locale
-     *
-     * @return  the locale for the response, never <code>null</code>
-     */
-    protected Locale determineLocale(HttpContext context) {
-        return Locale.getDefault();
-    }
-}
diff --git a/src/org/apache/http/impl/DefaultHttpServerConnection.java b/src/org/apache/http/impl/DefaultHttpServerConnection.java
deleted file mode 100644
index d296fc8..0000000
--- a/src/org/apache/http/impl/DefaultHttpServerConnection.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/DefaultHttpServerConnection.java $
- * $Revision: 561083 $
- * $Date: 2007-07-30 11:31:17 -0700 (Mon, 30 Jul 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.impl;
-
-import java.io.IOException;
-import java.net.Socket;
-
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-
-/**
- * Default implementation of a server-side HTTP connection.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 561083 $
- * 
- * @since 4.0
- */
-public class DefaultHttpServerConnection extends SocketHttpServerConnection {
-
-    public DefaultHttpServerConnection() {
-        super();
-    }
-    
-    public void bind(final Socket socket, final HttpParams params) throws IOException {
-        if (socket == null) {
-            throw new IllegalArgumentException("Socket may not be null");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        assertNotOpen();
-        socket.setTcpNoDelay(HttpConnectionParams.getTcpNoDelay(params));
-        socket.setSoTimeout(HttpConnectionParams.getSoTimeout(params));
-        
-        int linger = HttpConnectionParams.getLinger(params);
-        if (linger >= 0) {
-            socket.setSoLinger(linger > 0, linger);
-        }
-        super.bind(socket, params);
-    }
-
-    public String toString() {
-        StringBuffer buffer = new StringBuffer();
-        buffer.append("[");
-        if (isOpen()) {
-            buffer.append(getRemotePort());
-        } else {
-            buffer.append("closed");
-        }
-        buffer.append("]");
-        return buffer.toString();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/EnglishReasonPhraseCatalog.java b/src/org/apache/http/impl/EnglishReasonPhraseCatalog.java
deleted file mode 100644
index f1aeee1..0000000
--- a/src/org/apache/http/impl/EnglishReasonPhraseCatalog.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/EnglishReasonPhraseCatalog.java $
- * $Revision: 505744 $
- * $Date: 2007-02-10 10:58:45 -0800 (Sat, 10 Feb 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.impl;
-
-import java.util.Locale;
-
-import org.apache.http.HttpStatus;
-import org.apache.http.ReasonPhraseCatalog;
-
-
-/**
- * English reason phrases for HTTP status codes.
- * All status codes defined in RFC1945 (HTTP/1.0), RFC2616 (HTTP/1.1), and
- * RFC2518 (WebDAV) are supported.
- * 
- * @author Unascribed
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- * 
- * @version $Revision: 505744 $
- */
-public class EnglishReasonPhraseCatalog
-    implements ReasonPhraseCatalog {
-
-    // static array with english reason phrases defined below
-
-    /**
-     * The default instance of this catalog.
-     * This catalog is thread safe, so there typically
-     * is no need to create other instances.
-     */
-    public final static EnglishReasonPhraseCatalog INSTANCE =
-        new EnglishReasonPhraseCatalog();
-
-
-    /**
-     * Restricted default constructor, for derived classes.
-     * If you need an instance of this class, use {@link #INSTANCE INSTANCE}.
-     */
-    protected EnglishReasonPhraseCatalog() {
-        // no body
-    }
-
-
-    /**
-     * Obtains the reason phrase for a status code.
-     *
-     * @param status    the status code, in the range 100-599
-     * @param loc       ignored
-     *
-     * @return  the reason phrase, or <code>null</code>
-     */
-    public String getReason(int status, Locale loc) {
-        if ((status < 100) || (status >= 600)) {
-            throw new IllegalArgumentException
-                ("Unknown category for status code " + status + ".");
-        }
-
-        final int category = status / 100;
-        final int subcode  = status - 100*category;
-
-        String reason = null;
-        if (REASON_PHRASES[category].length > subcode)
-            reason = REASON_PHRASES[category][subcode];
-
-        return reason;
-    }
-
-
-    /** Reason phrases lookup table. */
-    private static final String[][] REASON_PHRASES = new String[][]{
-        null,
-        new String[3],  // 1xx
-        new String[8],  // 2xx
-        new String[8],  // 3xx
-        new String[25], // 4xx
-        new String[8]   // 5xx
-    };
-
-
-
-    /**
-     * Stores the given reason phrase, by status code.
-     * Helper method to initialize the static lookup table.
-     *
-     * @param status    the status code for which to define the phrase
-     * @param reason    the reason phrase for this status code
-     */
-    private static void setReason(int status, String reason) {
-        final int category = status / 100;
-        final int subcode  = status - 100*category;
-        REASON_PHRASES[category][subcode] = reason;
-    }
-
-
-    // ----------------------------------------------------- Static Initializer
-
-    /** Set up status code to "reason phrase" map. */
-    static {
-        // HTTP 1.0 Server status codes -- see RFC 1945
-        setReason(HttpStatus.SC_OK,
-                  "OK");
-        setReason(HttpStatus.SC_CREATED,
-                  "Created");
-        setReason(HttpStatus.SC_ACCEPTED,
-                  "Accepted");
-        setReason(HttpStatus.SC_NO_CONTENT,
-                  "No Content");
-        setReason(HttpStatus.SC_MOVED_PERMANENTLY,
-                  "Moved Permanently");
-        setReason(HttpStatus.SC_MOVED_TEMPORARILY,
-                  "Moved Temporarily");
-        setReason(HttpStatus.SC_NOT_MODIFIED,
-                  "Not Modified");
-        setReason(HttpStatus.SC_BAD_REQUEST,
-                  "Bad Request");
-        setReason(HttpStatus.SC_UNAUTHORIZED,
-                  "Unauthorized");
-        setReason(HttpStatus.SC_FORBIDDEN,
-                  "Forbidden");
-        setReason(HttpStatus.SC_NOT_FOUND,
-                  "Not Found");
-        setReason(HttpStatus.SC_INTERNAL_SERVER_ERROR,
-                  "Internal Server Error");
-        setReason(HttpStatus.SC_NOT_IMPLEMENTED,
-                  "Not Implemented");
-        setReason(HttpStatus.SC_BAD_GATEWAY,
-                  "Bad Gateway");
-        setReason(HttpStatus.SC_SERVICE_UNAVAILABLE,
-                  "Service Unavailable");
-
-        // HTTP 1.1 Server status codes -- see RFC 2048
-        setReason(HttpStatus.SC_CONTINUE,
-                  "Continue");
-        setReason(HttpStatus.SC_TEMPORARY_REDIRECT,
-                  "Temporary Redirect");
-        setReason(HttpStatus.SC_METHOD_NOT_ALLOWED,
-                  "Method Not Allowed");
-        setReason(HttpStatus.SC_CONFLICT,
-                  "Conflict");
-        setReason(HttpStatus.SC_PRECONDITION_FAILED,
-                  "Precondition Failed");
-        setReason(HttpStatus.SC_REQUEST_TOO_LONG,
-                  "Request Too Long");
-        setReason(HttpStatus.SC_REQUEST_URI_TOO_LONG,
-                  "Request-URI Too Long");
-        setReason(HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE,
-                  "Unsupported Media Type");
-        setReason(HttpStatus.SC_MULTIPLE_CHOICES,
-                  "Multiple Choices");
-        setReason(HttpStatus.SC_SEE_OTHER,
-                  "See Other");
-        setReason(HttpStatus.SC_USE_PROXY,
-                  "Use Proxy");
-        setReason(HttpStatus.SC_PAYMENT_REQUIRED,
-                  "Payment Required");
-        setReason(HttpStatus.SC_NOT_ACCEPTABLE,
-                  "Not Acceptable");
-        setReason(HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED, 
-                  "Proxy Authentication Required");
-        setReason(HttpStatus.SC_REQUEST_TIMEOUT, 
-                  "Request Timeout");
-
-        setReason(HttpStatus.SC_SWITCHING_PROTOCOLS,
-                  "Switching Protocols");
-        setReason(HttpStatus.SC_NON_AUTHORITATIVE_INFORMATION,
-                  "Non Authoritative Information");
-        setReason(HttpStatus.SC_RESET_CONTENT,
-                  "Reset Content");
-        setReason(HttpStatus.SC_PARTIAL_CONTENT,
-                  "Partial Content");
-        setReason(HttpStatus.SC_GATEWAY_TIMEOUT,
-                  "Gateway Timeout");
-        setReason(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED,
-                  "Http Version Not Supported");
-        setReason(HttpStatus.SC_GONE,
-                  "Gone");
-        setReason(HttpStatus.SC_LENGTH_REQUIRED,
-                  "Length Required");
-        setReason(HttpStatus.SC_REQUESTED_RANGE_NOT_SATISFIABLE,
-                  "Requested Range Not Satisfiable");
-        setReason(HttpStatus.SC_EXPECTATION_FAILED,
-                  "Expectation Failed");
-
-        // WebDAV Server-specific status codes
-        setReason(HttpStatus.SC_PROCESSING,
-                  "Processing");
-        setReason(HttpStatus.SC_MULTI_STATUS,
-                  "Multi-Status");
-        setReason(HttpStatus.SC_UNPROCESSABLE_ENTITY,
-                  "Unprocessable Entity");
-        setReason(HttpStatus.SC_INSUFFICIENT_SPACE_ON_RESOURCE,
-                  "Insufficient Space On Resource");
-        setReason(HttpStatus.SC_METHOD_FAILURE,
-                  "Method Failure");
-        setReason(HttpStatus.SC_LOCKED,
-                  "Locked");
-        setReason(HttpStatus.SC_INSUFFICIENT_STORAGE,
-                  "Insufficient Storage");
-        setReason(HttpStatus.SC_FAILED_DEPENDENCY,
-                  "Failed Dependency");
-    }
-
-
-}
diff --git a/src/org/apache/http/impl/HttpConnectionMetricsImpl.java b/src/org/apache/http/impl/HttpConnectionMetricsImpl.java
deleted file mode 100644
index 4f4eacf..0000000
--- a/src/org/apache/http/impl/HttpConnectionMetricsImpl.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/HttpConnectionMetricsImpl.java $
- * $Revision: 548031 $
- * $Date: 2007-06-17 04:28:38 -0700 (Sun, 17 Jun 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.impl;
-
-import java.util.HashMap;
-import org.apache.http.HttpConnectionMetrics;
-import org.apache.http.io.HttpTransportMetrics;
-
-/**
- * Implementation of the metrics interface.
- */
-public class HttpConnectionMetricsImpl implements HttpConnectionMetrics {
-    
-    public static final String REQUEST_COUNT = "http.request-count";
-    public static final String RESPONSE_COUNT = "http.response-count";
-    public static final String SENT_BYTES_COUNT = "http.sent-bytes-count";
-    public static final String RECEIVED_BYTES_COUNT = "http.received-bytes-count";
-    
-    private final HttpTransportMetrics inTransportMetric;
-    private final HttpTransportMetrics outTransportMetric;
-    private long requestCount = 0;
-    private long responseCount = 0;
-    
-    /**
-     * The cache map for all metrics values.
-     */
-    private HashMap metricsCache;
-    
-    public HttpConnectionMetricsImpl(
-            final HttpTransportMetrics inTransportMetric,
-            final HttpTransportMetrics outTransportMetric) {
-        super();
-        this.inTransportMetric = inTransportMetric;
-        this.outTransportMetric = outTransportMetric;
-    }
-    
-    /* ------------------  Public interface method -------------------------- */
-
-    public long getReceivedBytesCount() {
-        if (this.inTransportMetric != null) {
-            return this.inTransportMetric.getBytesTransferred();
-        } else {
-            return -1;
-        }
-    }
-
-    public long getSentBytesCount() {
-        if (this.outTransportMetric != null) {
-            return this.outTransportMetric.getBytesTransferred();
-        } else {
-            return -1;
-        }
-    }
-    
-    public long getRequestCount() {
-        return this.requestCount;
-    }
-    
-    public void incrementRequestCount() {
-        this.requestCount++;
-    }
-    
-    public long getResponseCount() {
-        return this.responseCount;
-    }
-    
-    public void incrementResponseCount() {
-        this.responseCount++;
-    }
-    
-    public Object getMetric(final String metricName) {
-        Object value = null;
-        if (this.metricsCache != null) {
-            value = this.metricsCache.get(metricName);
-        }
-        if (value == null) {
-            if (REQUEST_COUNT.equals(metricName)) {
-                value = new Long(requestCount);
-            } else if (RESPONSE_COUNT.equals(metricName)) {
-                value = new Long(responseCount);
-            } else if (RECEIVED_BYTES_COUNT.equals(metricName)) {
-                if (this.inTransportMetric != null) {
-                    return new Long(this.inTransportMetric.getBytesTransferred());
-                } else {
-                    return null;
-                }
-            } else if (SENT_BYTES_COUNT.equals(metricName)) {
-                if (this.outTransportMetric != null) {
-                    return new Long(this.outTransportMetric.getBytesTransferred());
-                } else {
-                    return null;
-                }
-            }
-        }
-        return value;
-    }
-    
-    public void setMetric(final String metricName, Object obj) {
-        if (this.metricsCache == null) {
-            this.metricsCache = new HashMap();
-        }
-        this.metricsCache.put(metricName, obj);
-    }
-    
-    public void reset() {
-        if (this.outTransportMetric != null) {
-            this.outTransportMetric.reset();
-        }
-        if (this.inTransportMetric != null) {
-            this.inTransportMetric.reset();
-        }
-        this.requestCount = 0;
-        this.responseCount = 0;
-        this.metricsCache = null;
-    }
-
-}
diff --git a/src/org/apache/http/impl/NoConnectionReuseStrategy.java b/src/org/apache/http/impl/NoConnectionReuseStrategy.java
deleted file mode 100644
index c7a5f73..0000000
--- a/src/org/apache/http/impl/NoConnectionReuseStrategy.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/NoConnectionReuseStrategy.java $
- * $Revision: 502684 $
- * $Date: 2007-02-02 10:25:38 -0800 (Fri, 02 Feb 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.impl;
-
-import org.apache.http.ConnectionReuseStrategy;
-import org.apache.http.HttpResponse;
-import org.apache.http.protocol.HttpContext;
-
-
-/**
- * A strategy that never re-uses a connection.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- * @version $Revision: 502684 $
- * 
- * @since 4.0
- */
-public class NoConnectionReuseStrategy implements ConnectionReuseStrategy {
-
-    // default constructor
-
-
-    // non-JavaDoc, see interface ConnectionReuseStrategy
-    public boolean keepAlive(final HttpResponse response, final HttpContext context) {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-
-        return false;
-    }
-            
-}
diff --git a/src/org/apache/http/impl/SocketHttpClientConnection.java b/src/org/apache/http/impl/SocketHttpClientConnection.java
deleted file mode 100644
index 1e551e0..0000000
--- a/src/org/apache/http/impl/SocketHttpClientConnection.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/SocketHttpClientConnection.java $
- * $Revision: 561083 $
- * $Date: 2007-07-30 11:31:17 -0700 (Mon, 30 Jul 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.impl;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.net.SocketException;
-
-import org.apache.http.HttpInetConnection;
-import org.apache.http.impl.io.SocketInputBuffer;
-import org.apache.http.impl.io.SocketOutputBuffer;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.io.SessionOutputBuffer;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-
-/**
- * Implementation of a client-side HTTP connection that can be bound to a 
- * network Socket in order to receive and transmit data.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 561083 $
- * 
- * @since 4.0
- */
-public class SocketHttpClientConnection 
-        extends AbstractHttpClientConnection implements HttpInetConnection {
-
-    private volatile boolean open;
-    private Socket socket = null;
-    
-    public SocketHttpClientConnection() {
-        super();
-    }
-    
-    protected void assertNotOpen() {
-        if (this.open) {
-            throw new IllegalStateException("Connection is already open");
-        }
-    }
-    
-    protected void assertOpen() {
-        if (!this.open) {
-            throw new IllegalStateException("Connection is not open");
-        }
-    }
-
-    protected SessionInputBuffer createSessionInputBuffer(
-            final Socket socket, 
-            int buffersize,
-            final HttpParams params) throws IOException {
-        return new SocketInputBuffer(socket, buffersize, params);
-    }
-    
-    protected SessionOutputBuffer createSessionOutputBuffer(
-            final Socket socket, 
-            int buffersize,
-            final HttpParams params) throws IOException {
-        return new SocketOutputBuffer(socket, buffersize, params);
-    }
-    
-    protected void bind(
-            final Socket socket, 
-            final HttpParams params) throws IOException {
-        if (socket == null) {
-            throw new IllegalArgumentException("Socket may not be null");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        this.socket = socket;
-
-        int buffersize = HttpConnectionParams.getSocketBufferSize(params);
-
-        init(
-                createSessionInputBuffer(socket, buffersize, params), 
-                createSessionOutputBuffer(socket, buffersize, params),
-                params);
-        
-        this.open = true;
-    }
-
-    public boolean isOpen() {
-        return this.open;
-    }
-    
-    protected Socket getSocket() {
-        return this.socket;
-    }
-
-    public InetAddress getLocalAddress() {
-        if (this.socket != null) {
-            return this.socket.getLocalAddress();
-        } else {
-            return null;
-        }
-    }
-
-    public int getLocalPort() {
-        if (this.socket != null) {
-            return this.socket.getLocalPort();
-        } else {
-            return -1;
-        }
-    }
-
-    public InetAddress getRemoteAddress() {
-        if (this.socket != null) {
-            return this.socket.getInetAddress();
-        } else {
-            return null;
-        }
-    }
-
-    public int getRemotePort() {
-        if (this.socket != null) {
-            return this.socket.getPort();
-        } else {
-            return -1;
-        }
-    }
-
-    public void setSocketTimeout(int timeout) {
-        assertOpen();
-        if (this.socket != null) {
-            try {
-                this.socket.setSoTimeout(timeout);
-            } catch (SocketException ignore) {
-                // It is not quite clear from the Sun's documentation if there are any 
-                // other legitimate cases for a socket exception to be thrown when setting 
-                // SO_TIMEOUT besides the socket being already closed
-            }
-        }
-    }
-    
-    public int getSocketTimeout() {
-        if (this.socket != null) {
-            try {
-                return this.socket.getSoTimeout();
-            } catch (SocketException ignore) {
-                return -1;
-            }
-        } else {
-            return -1;
-        }
-    }
-
-    public void shutdown() throws IOException {
-        this.open = false;
-        Socket tmpsocket = this.socket;
-        if (tmpsocket != null) {
-            tmpsocket.close();
-        }
-    }
-    
-    public void close() throws IOException {
-        if (!this.open) {
-            return;
-        }
-        this.open = false;
-        doFlush();
-        try {
-            try {
-                this.socket.shutdownOutput();
-            } catch (IOException ignore) {
-            }
-            try {
-                this.socket.shutdownInput();
-            } catch (IOException ignore) {
-            }
-        } catch (UnsupportedOperationException ignore) {
-            // if one isn't supported, the other one isn't either
-        }
-        this.socket.close();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/SocketHttpServerConnection.java b/src/org/apache/http/impl/SocketHttpServerConnection.java
deleted file mode 100644
index cfa2bf9..0000000
--- a/src/org/apache/http/impl/SocketHttpServerConnection.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/SocketHttpServerConnection.java $
- * $Revision: 561083 $
- * $Date: 2007-07-30 11:31:17 -0700 (Mon, 30 Jul 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.impl;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.net.SocketException;
-
-import org.apache.http.HttpInetConnection;
-import org.apache.http.impl.io.SocketInputBuffer;
-import org.apache.http.impl.io.SocketOutputBuffer;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.io.SessionOutputBuffer;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-
-/**
- * Implementation of a server-side HTTP connection that can be bound to a 
- * network Socket in order to receive and transmit data.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 561083 $
- * 
- * @since 4.0
- */
-public class SocketHttpServerConnection extends 
-        AbstractHttpServerConnection implements HttpInetConnection {
-
-    private volatile boolean open;
-    private Socket socket = null;
-    
-    public SocketHttpServerConnection() {
-        super();
-    }
-
-    protected void assertNotOpen() {
-        if (this.open) {
-            throw new IllegalStateException("Connection is already open");
-        }
-    }
-    
-    protected void assertOpen() {
-        if (!this.open) {
-            throw new IllegalStateException("Connection is not open");
-        }
-    }
-    
-    protected SessionInputBuffer createHttpDataReceiver(
-            final Socket socket, 
-            int buffersize,
-            final HttpParams params) throws IOException {
-        return new SocketInputBuffer(socket, buffersize, params);
-    }
-    
-    protected SessionOutputBuffer createHttpDataTransmitter(
-            final Socket socket, 
-            int buffersize,
-            final HttpParams params) throws IOException {
-        return new SocketOutputBuffer(socket, buffersize, params);
-    }
-    
-    protected void bind(final Socket socket, final HttpParams params) throws IOException {
-        if (socket == null) {
-            throw new IllegalArgumentException("Socket may not be null");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        this.socket = socket;
-        
-        int buffersize = HttpConnectionParams.getSocketBufferSize(params);
-        
-        init(
-                createHttpDataReceiver(socket, buffersize, params), 
-                createHttpDataTransmitter(socket, buffersize, params),
-                params);
-        
-        this.open = true;
-    }
-
-    protected Socket getSocket() {
-        return this.socket;
-    }
-
-    public boolean isOpen() {
-        return this.open;
-    }
-
-    public InetAddress getLocalAddress() {
-        if (this.socket != null) {
-            return this.socket.getLocalAddress();
-        } else {
-            return null;
-        }
-    }
-
-    public int getLocalPort() {
-        if (this.socket != null) {
-            return this.socket.getLocalPort();
-        } else {
-            return -1;
-        }
-    }
-
-    public InetAddress getRemoteAddress() {
-        if (this.socket != null) {
-            return this.socket.getInetAddress();
-        } else {
-            return null;
-        }
-    }
-
-    public int getRemotePort() {
-        if (this.socket != null) {
-            return this.socket.getPort();
-        } else {
-            return -1;
-        }
-    }
-
-    public void setSocketTimeout(int timeout) {
-        assertOpen();
-        if (this.socket != null) {
-            try {
-                this.socket.setSoTimeout(timeout);
-            } catch (SocketException ignore) {
-                // It is not quite clear from the Sun's documentation if there are any 
-                // other legitimate cases for a socket exception to be thrown when setting 
-                // SO_TIMEOUT besides the socket being already closed
-            }
-        }
-    }
-    
-    public int getSocketTimeout() {
-        if (this.socket != null) {
-            try {
-                return this.socket.getSoTimeout();
-            } catch (SocketException ignore) {
-                return -1;
-            }
-        } else {
-            return -1;
-        }
-    }
-
-    public void shutdown() throws IOException {
-        this.open = false;
-        Socket tmpsocket = this.socket;
-        if (tmpsocket != null) {
-            tmpsocket.close();
-        }
-    }
-    
-    public void close() throws IOException {
-        if (!this.open) {
-            return;
-        }
-        this.open = false;
-        doFlush();
-        try {
-            this.socket.shutdownOutput();
-        } catch (IOException ignore) {
-        }
-        try {
-            this.socket.shutdownInput();
-        } catch (IOException ignore) {
-        }
-        this.socket.close();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/auth/AuthSchemeBase.java b/src/org/apache/http/impl/auth/AuthSchemeBase.java
deleted file mode 100644
index 689ce5d..0000000
--- a/src/org/apache/http/impl/auth/AuthSchemeBase.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/AuthSchemeBase.java $
- * $Revision: 653867 $
- * $Date: 2008-05-06 11:17:29 -0700 (Tue, 06 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.impl.auth;
-
-import org.apache.http.FormattedHeader;
-import org.apache.http.Header;
-import org.apache.http.auth.AUTH;
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Abstract authentication scheme class that serves as a basis
- * for all authentication schemes supported by HttpClient. This class
- * defines the generic way of parsing an authentication challenge. It 
- * does not make any assumptions regarding the format of the challenge 
- * nor does it impose any specific way of responding to that challenge.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
-*/
-public abstract class AuthSchemeBase implements AuthScheme {
-
-    /**
-     * Flag whether authenticating against a proxy.
-     */
-    private boolean proxy;
-    
-    public AuthSchemeBase() {
-        super();
-    }
-
-    /**
-     * Processes the given challenge token. Some authentication schemes
-     * may involve multiple challenge-response exchanges. Such schemes must be able 
-     * to maintain the state information when dealing with sequential challenges 
-     * 
-     * @param header the challenge header
-     * 
-     * @throws MalformedChallengeException is thrown if the authentication challenge
-     * is malformed
-     */
-    public void processChallenge(final Header header) throws MalformedChallengeException {
-        if (header == null) {
-            throw new IllegalArgumentException("Header may not be null");
-        }
-        String authheader = header.getName();
-        if (authheader.equalsIgnoreCase(AUTH.WWW_AUTH)) {
-            this.proxy = false;
-        } else if (authheader.equalsIgnoreCase(AUTH.PROXY_AUTH)) {
-            this.proxy = true;
-        } else {
-            throw new MalformedChallengeException("Unexpected header name: " + authheader);
-        }
-
-        CharArrayBuffer buffer;
-        int pos;
-        if (header instanceof FormattedHeader) {
-            buffer = ((FormattedHeader) header).getBuffer();
-            pos = ((FormattedHeader) header).getValuePos();
-        } else {
-            String s = header.getValue();
-            if (s == null) {
-                throw new MalformedChallengeException("Header value is null");
-            }
-            buffer = new CharArrayBuffer(s.length());
-            buffer.append(s);
-            pos = 0;
-        }
-        while (pos < buffer.length() && HTTP.isWhitespace(buffer.charAt(pos))) {
-            pos++;
-        }
-        int beginIndex = pos;
-        while (pos < buffer.length() && !HTTP.isWhitespace(buffer.charAt(pos))) {
-            pos++;
-        }
-        int endIndex = pos;
-        String s = buffer.substring(beginIndex, endIndex);
-        if (!s.equalsIgnoreCase(getSchemeName())) {
-            throw new MalformedChallengeException("Invalid scheme identifier: " + s);
-        }
-        
-        parseChallenge(buffer, pos, buffer.length());
-    }
-
-    protected abstract void parseChallenge(
-            CharArrayBuffer buffer, int pos, int len) throws MalformedChallengeException;
-
-    /**
-     * Returns <code>true</code> if authenticating against a proxy, <code>false</code>
-     * otherwise.
-     *  
-     * @return <code>true</code> if authenticating against a proxy, <code>false</code>
-     * otherwise
-     */
-    public boolean isProxy() {
-        return this.proxy;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/auth/BasicScheme.java b/src/org/apache/http/impl/auth/BasicScheme.java
deleted file mode 100644
index 88ea110..0000000
--- a/src/org/apache/http/impl/auth/BasicScheme.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/BasicScheme.java $
- * $Revision: 658430 $
- * $Date: 2008-05-20 14:04:27 -0700 (Tue, 20 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.impl.auth;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.http.Header;
-import org.apache.http.HttpRequest;
-import org.apache.http.auth.AuthenticationException;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.AUTH;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.auth.params.AuthParams;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.util.CharArrayBuffer;
-import org.apache.http.util.EncodingUtils;
-
-/**
- * <p>
- * Basic authentication scheme as defined in RFC 2617.
- * </p>
- * 
- * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @author Rodney Waldhoff
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- * @author Ortwin Glueck
- * @author Sean C. Sullivan
- * @author <a href="mailto:adrian@ephox.com">Adrian Sutton</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-
-public class BasicScheme extends RFC2617Scheme {
-    
-    /** Whether the basic authentication process is complete */
-    private boolean complete;
-    
-    /**
-     * Default constructor for the basic authetication scheme.
-     */
-    public BasicScheme() {
-        super();
-        this.complete = false;
-    }
-
-    /**
-     * Returns textual designation of the basic authentication scheme.
-     * 
-     * @return <code>basic</code>
-     */
-    public String getSchemeName() {
-        return "basic";
-    }
-
-    /**
-     * Processes the Basic challenge.
-     *  
-     * @param header the challenge header
-     * 
-     * @throws MalformedChallengeException is thrown if the authentication challenge
-     * is malformed
-     */
-    @Override
-    public void processChallenge(
-            final Header header) throws MalformedChallengeException {
-        super.processChallenge(header);
-        this.complete = true;
-    }
-
-    /**
-     * Tests if the Basic authentication process has been completed.
-     * 
-     * @return <tt>true</tt> if Basic authorization has been processed,
-     *   <tt>false</tt> otherwise.
-     */
-    public boolean isComplete() {
-        return this.complete;
-    }
-
-    /**
-     * Returns <tt>false</tt>. Basic authentication scheme is request based.
-     * 
-     * @return <tt>false</tt>.
-     */
-    public boolean isConnectionBased() {
-        return false;    
-    }
-
-    /**
-     * Produces basic authorization header for the given set of {@link Credentials}.
-     * 
-     * @param credentials The set of credentials to be used for athentication
-     * @param request The request being authenticated
-     * @throws org.apache.http.auth.InvalidCredentialsException if authentication credentials
-     *         are not valid or not applicable for this authentication scheme
-     * @throws AuthenticationException if authorization string cannot 
-     *   be generated due to an authentication failure
-     * 
-     * @return a basic authorization string
-     */
-    public Header authenticate(
-            final Credentials credentials, 
-            final HttpRequest request) throws AuthenticationException {
-
-        if (credentials == null) {
-            throw new IllegalArgumentException("Credentials may not be null");
-        }
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        
-        String charset = AuthParams.getCredentialCharset(request.getParams());
-        return authenticate(credentials, charset, isProxy());
-    }
-    
-    /**
-     * Returns a basic <tt>Authorization</tt> header value for the given 
-     * {@link Credentials} and charset.
-     * 
-     * @param credentials The credentials to encode.
-     * @param charset The charset to use for encoding the credentials
-     * 
-     * @return a basic authorization header
-     */
-    public static Header authenticate(
-            final Credentials credentials, 
-            final String charset, 
-            boolean proxy) {
-        if (credentials == null) {
-            throw new IllegalArgumentException("Credentials may not be null"); 
-        }
-        if (charset == null) {
-            throw new IllegalArgumentException("charset may not be null");
-        }
-
-        StringBuilder tmp = new StringBuilder();
-        tmp.append(credentials.getUserPrincipal().getName());
-        tmp.append(":");
-        tmp.append((credentials.getPassword() == null) ? "null" : credentials.getPassword());
-
-        byte[] base64password = Base64.encodeBase64(
-                EncodingUtils.getBytes(tmp.toString(), charset));
-        
-        CharArrayBuffer buffer = new CharArrayBuffer(32);
-        if (proxy) {
-            buffer.append(AUTH.PROXY_AUTH_RESP);
-        } else {
-            buffer.append(AUTH.WWW_AUTH_RESP);
-        }
-        buffer.append(": Basic ");
-        buffer.append(base64password, 0, base64password.length);
-        
-        return new BufferedHeader(buffer);
-    }
-    
-}
diff --git a/src/org/apache/http/impl/auth/BasicSchemeFactory.java b/src/org/apache/http/impl/auth/BasicSchemeFactory.java
deleted file mode 100644
index c5d28b0..0000000
--- a/src/org/apache/http/impl/auth/BasicSchemeFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/BasicSchemeFactory.java $
- * $Revision: 534839 $
- * $Date: 2007-05-03 06:03:41 -0700 (Thu, 03 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/>.
- *
- */
-
-package org.apache.http.impl.auth;
-
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.auth.AuthSchemeFactory;
-import org.apache.http.params.HttpParams;
-
-/**
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public class BasicSchemeFactory implements AuthSchemeFactory {    
-
-    public AuthScheme newInstance(final HttpParams params) {
-        return new BasicScheme();
-    }
-
-}
diff --git a/src/org/apache/http/impl/auth/DigestScheme.java b/src/org/apache/http/impl/auth/DigestScheme.java
deleted file mode 100644
index 803807b..0000000
--- a/src/org/apache/http/impl/auth/DigestScheme.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/DigestScheme.java $
- * $Revision: 659595 $
- * $Date: 2008-05-23 09:47:14 -0700 (Fri, 23 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.impl.auth;
-
-import java.security.MessageDigest;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.apache.http.Header;
-import org.apache.http.HttpRequest;
-import org.apache.http.auth.AuthenticationException;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.AUTH;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.auth.params.AuthParams;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.message.BasicHeaderValueFormatter;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.util.CharArrayBuffer;
-import org.apache.http.util.EncodingUtils;
-
-/**
- * <p>
- * Digest authentication scheme as defined in RFC 2617.
- * Both MD5 (default) and MD5-sess are supported.
- * Currently only qop=auth or no qop is supported. qop=auth-int
- * is unsupported. If auth and auth-int are provided, auth is
- * used.
- * </p>
- * <p>
- * Credential charset is configured via the 
- * {@link org.apache.http.auth.params.AuthPNames#CREDENTIAL_CHARSET
- *        credential charset} parameter.
- * Since the digest username is included as clear text in the generated 
- * Authentication header, the charset of the username must be compatible
- * with the 
- * {@link org.apache.http.params.CoreProtocolPNames#HTTP_ELEMENT_CHARSET
- *        http element charset}.
- * </p>
- * 
- * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @author Rodney Waldhoff
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- * @author Ortwin Glueck
- * @author Sean C. Sullivan
- * @author <a href="mailto:adrian@ephox.com">Adrian Sutton</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-
-public class DigestScheme extends RFC2617Scheme {
-    
-    /**
-     * Hexa values used when creating 32 character long digest in HTTP DigestScheme
-     * in case of authentication.
-     * 
-     * @see #encode(byte[])
-     */
-    private static final char[] HEXADECIMAL = {
-        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 
-        'e', 'f'
-    };
-    
-    /** Whether the digest authentication process is complete */
-    private boolean complete;
-    
-    //TODO: supply a real nonce-count, currently a server will interprete a repeated request as a replay  
-    private static final String NC = "00000001"; //nonce-count is always 1
-    private static final int QOP_MISSING = 0;
-    private static final int QOP_AUTH_INT = 1;
-    private static final int QOP_AUTH = 2;
-
-    private int qopVariant = QOP_MISSING;
-    private String cnonce;
-
-    /**
-     * Default constructor for the digest authetication scheme.
-     */
-    public DigestScheme() {
-        super();
-        this.complete = false;
-    }
-
-    /**
-     * Processes the Digest challenge.
-     *  
-     * @param header the challenge header
-     * 
-     * @throws MalformedChallengeException is thrown if the authentication challenge
-     * is malformed
-     */
-    @Override
-    public void processChallenge(
-            final Header header) throws MalformedChallengeException {
-        super.processChallenge(header);
-        
-        if (getParameter("realm") == null) {
-            throw new MalformedChallengeException("missing realm in challange");
-        }
-        if (getParameter("nonce") == null) {
-            throw new MalformedChallengeException("missing nonce in challange");   
-        }
-        
-        boolean unsupportedQop = false;
-        // qop parsing
-        String qop = getParameter("qop");
-        if (qop != null) {
-            StringTokenizer tok = new StringTokenizer(qop,",");
-            while (tok.hasMoreTokens()) {
-                String variant = tok.nextToken().trim();
-                if (variant.equals("auth")) {
-                    qopVariant = QOP_AUTH;
-                    break; //that's our favourite, because auth-int is unsupported
-                } else if (variant.equals("auth-int")) {
-                    qopVariant = QOP_AUTH_INT;               
-                } else {
-                    unsupportedQop = true;
-                }     
-            }
-        }        
-        
-        if (unsupportedQop && (qopVariant == QOP_MISSING)) {
-            throw new MalformedChallengeException("None of the qop methods is supported");   
-        }
-        // Reset cnonce
-        this.cnonce = null;
-        this.complete = true;
-    }
-
-    /**
-     * Tests if the Digest authentication process has been completed.
-     * 
-     * @return <tt>true</tt> if Digest authorization has been processed,
-     *   <tt>false</tt> otherwise.
-     */
-    public boolean isComplete() {
-        String s = getParameter("stale");
-        if ("true".equalsIgnoreCase(s)) {
-            return false;
-        } else {
-            return this.complete;
-        }
-    }
-
-    /**
-     * Returns textual designation of the digest authentication scheme.
-     * 
-     * @return <code>digest</code>
-     */
-    public String getSchemeName() {
-        return "digest";
-    }
-
-    /**
-     * Returns <tt>false</tt>. Digest authentication scheme is request based.
-     * 
-     * @return <tt>false</tt>.
-     */
-    public boolean isConnectionBased() {
-        return false;    
-    }
-
-    public void overrideParamter(final String name, final String value) {
-        getParameters().put(name, value);
-    }
-    
-    private String getCnonce() {
-        if (this.cnonce == null) {
-            this.cnonce = createCnonce();
-        }
-        return this.cnonce; 
-    }
-    
-    /**
-     * Produces a digest authorization string for the given set of 
-     * {@link Credentials}, method name and URI.
-     * 
-     * @param credentials A set of credentials to be used for athentication
-     * @param request    The request being authenticated
-     * 
-     * @throws org.apache.http.auth.InvalidCredentialsException if authentication credentials
-     *         are not valid or not applicable for this authentication scheme
-     * @throws AuthenticationException if authorization string cannot 
-     *   be generated due to an authentication failure
-     * 
-     * @return a digest authorization string
-     */
-    public Header authenticate(
-            final Credentials credentials, 
-            final HttpRequest request) throws AuthenticationException {
-
-        if (credentials == null) {
-            throw new IllegalArgumentException("Credentials may not be null");
-        }
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        
-        // Add method name and request-URI to the parameter map
-        getParameters().put("methodname", request.getRequestLine().getMethod());
-        getParameters().put("uri", request.getRequestLine().getUri());
-        String charset = getParameter("charset");
-        if (charset == null) {
-            charset = AuthParams.getCredentialCharset(request.getParams());
-            getParameters().put("charset", charset);
-        }
-        String digest = createDigest(credentials);
-        return createDigestHeader(credentials, digest);
-    }
-    
-    private static MessageDigest createMessageDigest(
-            final String digAlg) throws UnsupportedDigestAlgorithmException {
-        try {
-            return MessageDigest.getInstance(digAlg);
-        } catch (Exception e) {
-            throw new UnsupportedDigestAlgorithmException(
-              "Unsupported algorithm in HTTP Digest authentication: "
-               + digAlg);
-        }
-    }
-    
-    /**
-     * Creates an MD5 response digest.
-     * 
-     * @return The created digest as string. This will be the response tag's
-     *         value in the Authentication HTTP header.
-     * @throws AuthenticationException when MD5 is an unsupported algorithm
-     */
-    private String createDigest(final Credentials credentials) throws AuthenticationException {
-        // Collecting required tokens
-        String uri = getParameter("uri");
-        String realm = getParameter("realm");
-        String nonce = getParameter("nonce");
-        String method = getParameter("methodname");
-        String algorithm = getParameter("algorithm");
-        if (uri == null) {
-            throw new IllegalStateException("URI may not be null");
-        }
-        if (realm == null) {
-            throw new IllegalStateException("Realm may not be null");
-        }
-        if (nonce == null) {
-            throw new IllegalStateException("Nonce may not be null");
-        }
-        // If an algorithm is not specified, default to MD5.
-        if (algorithm == null) {
-            algorithm = "MD5";
-        }
-        // If an charset is not specified, default to ISO-8859-1.
-        String charset = getParameter("charset");
-        if (charset == null) {
-            charset = "ISO-8859-1";
-        }
-
-        if (qopVariant == QOP_AUTH_INT) {
-            throw new AuthenticationException(
-                "Unsupported qop in HTTP Digest authentication");   
-        }
-
-        MessageDigest md5Helper = createMessageDigest("MD5");
-
-        String uname = credentials.getUserPrincipal().getName();
-        String pwd = credentials.getPassword();
-        
-        // 3.2.2.2: Calculating digest
-        StringBuilder tmp = new StringBuilder(uname.length() + realm.length() + pwd.length() + 2);
-        tmp.append(uname);
-        tmp.append(':');
-        tmp.append(realm);
-        tmp.append(':');
-        tmp.append(pwd);
-        // unq(username-value) ":" unq(realm-value) ":" passwd
-        String a1 = tmp.toString();
-        
-        //a1 is suitable for MD5 algorithm
-        if(algorithm.equals("MD5-sess")) {
-            // H( unq(username-value) ":" unq(realm-value) ":" passwd )
-            //      ":" unq(nonce-value)
-            //      ":" unq(cnonce-value)
-
-            String cnonce = getCnonce();
-            
-            String tmp2=encode(md5Helper.digest(EncodingUtils.getBytes(a1, charset)));
-            StringBuilder tmp3 = new StringBuilder(tmp2.length() + nonce.length() + cnonce.length() + 2);
-            tmp3.append(tmp2);
-            tmp3.append(':');
-            tmp3.append(nonce);
-            tmp3.append(':');
-            tmp3.append(cnonce);
-            a1 = tmp3.toString();
-        } else if (!algorithm.equals("MD5")) {
-            throw new AuthenticationException("Unhandled algorithm " + algorithm + " requested");
-        }
-        String md5a1 = encode(md5Helper.digest(EncodingUtils.getBytes(a1, charset)));
-
-        String a2 = null;
-        if (qopVariant == QOP_AUTH_INT) {
-            // Unhandled qop auth-int
-            //we do not have access to the entity-body or its hash
-            //TODO: add Method ":" digest-uri-value ":" H(entity-body)      
-        } else {
-            a2 = method + ':' + uri;
-        }
-        String md5a2 = encode(md5Helper.digest(EncodingUtils.getAsciiBytes(a2)));
-
-        // 3.2.2.1
-        String serverDigestValue;
-        if (qopVariant == QOP_MISSING) {
-            StringBuilder tmp2 = new StringBuilder(md5a1.length() + nonce.length() + md5a2.length());
-            tmp2.append(md5a1);
-            tmp2.append(':');
-            tmp2.append(nonce);
-            tmp2.append(':');
-            tmp2.append(md5a2);
-            serverDigestValue = tmp2.toString();
-        } else {
-            String qopOption = getQopVariantString();
-            String cnonce = getCnonce();
-            
-            StringBuilder tmp2 = new StringBuilder(md5a1.length() + nonce.length()
-                + NC.length() + cnonce.length() + qopOption.length() + md5a2.length() + 5);
-            tmp2.append(md5a1);
-            tmp2.append(':');
-            tmp2.append(nonce);
-            tmp2.append(':');
-            tmp2.append(NC);
-            tmp2.append(':');
-            tmp2.append(cnonce);
-            tmp2.append(':');
-            tmp2.append(qopOption);
-            tmp2.append(':');
-            tmp2.append(md5a2); 
-            serverDigestValue = tmp2.toString();
-        }
-
-        String serverDigest =
-            encode(md5Helper.digest(EncodingUtils.getAsciiBytes(serverDigestValue)));
-
-        return serverDigest;
-    }
-
-    /**
-     * Creates digest-response header as defined in RFC2617.
-     * 
-     * @param credentials User credentials
-     * @param digest The response tag's value as String.
-     * 
-     * @return The digest-response as String.
-     */
-    private Header createDigestHeader(
-            final Credentials credentials, 
-            final String digest) throws AuthenticationException {
-        
-        CharArrayBuffer buffer = new CharArrayBuffer(128);
-        if (isProxy()) {
-            buffer.append(AUTH.PROXY_AUTH_RESP);
-        } else {
-            buffer.append(AUTH.WWW_AUTH_RESP);
-        }
-        buffer.append(": Digest ");
-        
-        String uri = getParameter("uri");
-        String realm = getParameter("realm");
-        String nonce = getParameter("nonce");
-        String opaque = getParameter("opaque");
-        String response = digest;
-        String algorithm = getParameter("algorithm");
-
-        String uname = credentials.getUserPrincipal().getName();
-        
-        List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>(20);
-        params.add(new BasicNameValuePair("username", uname));
-        params.add(new BasicNameValuePair("realm", realm));
-        params.add(new BasicNameValuePair("nonce", nonce));
-        params.add(new BasicNameValuePair("uri", uri));
-        params.add(new BasicNameValuePair("response", response));
-        
-        if (qopVariant != QOP_MISSING) {
-            params.add(new BasicNameValuePair("qop", getQopVariantString()));
-            params.add(new BasicNameValuePair("nc", NC));
-            params.add(new BasicNameValuePair("cnonce", getCnonce()));
-        }
-        if (algorithm != null) {
-            params.add(new BasicNameValuePair("algorithm", algorithm));
-        }    
-        if (opaque != null) {
-            params.add(new BasicNameValuePair("opaque", opaque));
-        }
-
-        for (int i = 0; i < params.size(); i++) {
-            BasicNameValuePair param = params.get(i);
-            if (i > 0) {
-                buffer.append(", ");
-            }
-            boolean noQuotes = "nc".equals(param.getName()) ||
-                               "qop".equals(param.getName());
-            BasicHeaderValueFormatter.DEFAULT
-                .formatNameValuePair(buffer, param, !noQuotes);
-        }
-        return new BufferedHeader(buffer);
-    }
-
-    private String getQopVariantString() {
-        String qopOption;
-        if (qopVariant == QOP_AUTH_INT) {
-            qopOption = "auth-int";   
-        } else {
-            qopOption = "auth";
-        }
-        return qopOption;            
-    }
-
-    /**
-     * Encodes the 128 bit (16 bytes) MD5 digest into a 32 characters long 
-     * <CODE>String</CODE> according to RFC 2617.
-     * 
-     * @param binaryData array containing the digest
-     * @return encoded MD5, or <CODE>null</CODE> if encoding failed
-     */
-    private static String encode(byte[] binaryData) {
-        if (binaryData.length != 16) {
-            return null;
-        } 
-
-        char[] buffer = new char[32];
-        for (int i = 0; i < 16; i++) {
-            int low = (binaryData[i] & 0x0f);
-            int high = ((binaryData[i] & 0xf0) >> 4);
-            buffer[i * 2] = HEXADECIMAL[high];
-            buffer[(i * 2) + 1] = HEXADECIMAL[low];
-        }
-
-        return new String(buffer);
-    }
-
-
-    /**
-     * Creates a random cnonce value based on the current time.
-     * 
-     * @return The cnonce value as String.
-     * @throws UnsupportedDigestAlgorithmException if MD5 algorithm is not supported.
-     */
-    public static String createCnonce() {
-        String cnonce;
-
-        MessageDigest md5Helper = createMessageDigest("MD5");
-
-        cnonce = Long.toString(System.currentTimeMillis());
-        cnonce = encode(md5Helper.digest(EncodingUtils.getAsciiBytes(cnonce)));
-
-        return cnonce;
-    }
-}
diff --git a/src/org/apache/http/impl/auth/DigestSchemeFactory.java b/src/org/apache/http/impl/auth/DigestSchemeFactory.java
deleted file mode 100644
index 38f2e12..0000000
--- a/src/org/apache/http/impl/auth/DigestSchemeFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/DigestSchemeFactory.java $
- * $Revision: 534839 $
- * $Date: 2007-05-03 06:03:41 -0700 (Thu, 03 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/>.
- *
- */
-
-package org.apache.http.impl.auth;
-
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.auth.AuthSchemeFactory;
-import org.apache.http.params.HttpParams;
-
-/**
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public class DigestSchemeFactory implements AuthSchemeFactory {    
-
-    public AuthScheme newInstance(final HttpParams params) {
-        return new DigestScheme();
-    }
-
-}
diff --git a/src/org/apache/http/impl/auth/NTLMEngine.java b/src/org/apache/http/impl/auth/NTLMEngine.java
deleted file mode 100644
index 7b6bf42..0000000
--- a/src/org/apache/http/impl/auth/NTLMEngine.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/NTLMEngine.java $
- * $Revision: 659788 $
- * $Date: 2008-05-24 03:42:23 -0700 (Sat, 24 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.impl.auth;
-
-/**
- * Abstract NTLM authentication engine. The engine can be used to
- * generate Type1 messages and Type3 messages in response to a 
- * Type2 challenge.
- * <p/>
- * For details see <a href="http://davenport.sourceforge.net/ntlm.html">this resource</a>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
-*/
-public interface NTLMEngine {
-
-    /**
-     * Generates a Type1 message given the domain and workstation.
-     * 
-     * @param domain Optional Windows domain name. Can be <code>null</code>.
-     * @param workstation Optional Windows workstation name. Can be 
-     *  <code>null</code>.
-     * @return Type1 message
-     * @throws NTLMEngineException
-     */
-    String generateType1Msg(
-            String domain, 
-            String workstation) throws NTLMEngineException;
-    
-    /**
-     * Generates a Type3 message given the user credentials and the 
-     * authentication challenge.
-     *  
-     * @param username Windows user name
-     * @param password Password
-     * @param domain Windows domain name
-     * @param workstation Windows workstation name
-     * @param challenge Type2 challenge.
-     * @return Type3 response.
-     * @throws NTLMEngineException
-     */
-    String generateType3Msg(
-            String username,
-            String password,
-            String domain, 
-            String workstation,
-            String challenge) throws NTLMEngineException;
-    
-}
diff --git a/src/org/apache/http/impl/auth/NTLMEngineException.java b/src/org/apache/http/impl/auth/NTLMEngineException.java
deleted file mode 100644
index 73baabc..0000000
--- a/src/org/apache/http/impl/auth/NTLMEngineException.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/NTLMEngineException.java $
- * $Revision: 655048 $
- * $Date: 2008-05-10 04:22:12 -0700 (Sat, 10 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.impl.auth;
-
-import org.apache.http.auth.AuthenticationException;
-
-/**
- * Signals NTLM protocol failure.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class NTLMEngineException extends AuthenticationException {
-
-    private static final long serialVersionUID = 6027981323731768824L;
-
-    public NTLMEngineException() {
-        super();
-    }
-
-    /**
-     * Creates a new NTLMEngineException with the specified message.
-     * 
-     * @param message the exception detail message
-     */
-    public NTLMEngineException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new NTLMEngineException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public NTLMEngineException(String message, Throwable cause) {
-        super(message, cause);
-    }
-    
-}
diff --git a/src/org/apache/http/impl/auth/NTLMScheme.java b/src/org/apache/http/impl/auth/NTLMScheme.java
deleted file mode 100644
index 8dfdbba..0000000
--- a/src/org/apache/http/impl/auth/NTLMScheme.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/NTLMScheme.java $
- * $Revision: 655048 $
- * $Date: 2008-05-10 04:22:12 -0700 (Sat, 10 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.impl.auth;
-
-import org.apache.http.Header;
-import org.apache.http.HttpRequest;
-import org.apache.http.auth.AUTH;
-import org.apache.http.auth.AuthenticationException;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.InvalidCredentialsException;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.auth.NTCredentials;
-import org.apache.http.impl.auth.AuthSchemeBase;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.util.CharArrayBuffer;
-
-public class NTLMScheme extends AuthSchemeBase {
-
-    enum State {
-        UNINITIATED,
-        CHALLENGE_RECEIVED,
-        MSG_TYPE1_GENERATED,
-        MSG_TYPE2_RECEVIED,
-        MSG_TYPE3_GENERATED,
-        FAILED,
-    }
-    
-    private final NTLMEngine engine;
-    
-    private State state;
-    private String challenge;
-    
-    public NTLMScheme(final NTLMEngine engine) {
-        super();
-        if (engine == null) {
-            throw new IllegalArgumentException("NTLM engine may not be null");
-        }
-        this.engine = engine;
-        this.state = State.UNINITIATED;
-        this.challenge = null;
-    }
-    
-    public String getSchemeName() {
-        return "ntlm";
-    }
-
-    public String getParameter(String name) {
-        // String parameters not supported
-        return null;
-    }
-
-    public String getRealm() {
-        // NTLM does not support the concept of an authentication realm
-        return null;
-    }
-
-    public boolean isConnectionBased() {
-        return true;
-    }
-
-    @Override
-    protected void parseChallenge(
-            final CharArrayBuffer buffer, int pos, int len) throws MalformedChallengeException {
-        String challenge = buffer.substringTrimmed(pos, len);
-        if (challenge.length() == 0) {
-            if (this.state == State.UNINITIATED) {
-                this.state = State.CHALLENGE_RECEIVED;
-            } else {
-                this.state = State.FAILED;
-            }
-            this.challenge = null;
-        } else {
-            this.state = State.MSG_TYPE2_RECEVIED;
-            this.challenge = challenge;
-        }
-    }
-
-    public Header authenticate(
-            final Credentials credentials, 
-            final HttpRequest request) throws AuthenticationException {
-        NTCredentials ntcredentials = null;
-        try {
-            ntcredentials = (NTCredentials) credentials;
-        } catch (ClassCastException e) {
-            throw new InvalidCredentialsException(
-             "Credentials cannot be used for NTLM authentication: " 
-              + credentials.getClass().getName());
-        }
-        String response = null;
-        if (this.state == State.CHALLENGE_RECEIVED || this.state == State.FAILED) {
-            response = this.engine.generateType1Msg(
-                    ntcredentials.getDomain(), 
-                    ntcredentials.getWorkstation());
-            this.state = State.MSG_TYPE1_GENERATED;
-        } else if (this.state == State.MSG_TYPE2_RECEVIED) {
-            response = this.engine.generateType3Msg(
-                    ntcredentials.getUserName(), 
-                    ntcredentials.getPassword(), 
-                    ntcredentials.getDomain(), 
-                    ntcredentials.getWorkstation(),
-                    this.challenge);
-            this.state = State.MSG_TYPE3_GENERATED;
-        } else {
-            throw new AuthenticationException("Unexpected state: " + this.state);
-        }
-        CharArrayBuffer buffer = new CharArrayBuffer(32);
-        if (isProxy()) {
-            buffer.append(AUTH.PROXY_AUTH_RESP);
-        } else {
-            buffer.append(AUTH.WWW_AUTH_RESP);
-        }
-        buffer.append(": NTLM ");
-        buffer.append(response);
-        return new BufferedHeader(buffer);
-    }
-
-    public boolean isComplete() {
-        return this.state == State.MSG_TYPE3_GENERATED || this.state == State.FAILED;
-    }
-
-}
diff --git a/src/org/apache/http/impl/auth/RFC2617Scheme.java b/src/org/apache/http/impl/auth/RFC2617Scheme.java
deleted file mode 100644
index 0ed0a28..0000000
--- a/src/org/apache/http/impl/auth/RFC2617Scheme.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/RFC2617Scheme.java $
- * $Revision: 659595 $
- * $Date: 2008-05-23 09:47:14 -0700 (Fri, 23 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.impl.auth;
-
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.message.BasicHeaderValueParser;
-import org.apache.http.message.HeaderValueParser;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Abstract authentication scheme class that lays foundation for all
- * RFC 2617 compliant authetication schemes and provides capabilities common 
- * to all authentication schemes defined in RFC 2617.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
-*/
-public abstract class RFC2617Scheme extends AuthSchemeBase {
-
-    /**
-     * Authentication parameter map.
-     */
-    private Map<String, String> params;
-
-    /**
-     * Default constructor for RFC2617 compliant authetication schemes.
-     */
-    public RFC2617Scheme() {
-        super();
-    }
-
-    @Override
-    protected void parseChallenge(
-            final CharArrayBuffer buffer, int pos, int len) throws MalformedChallengeException {
-        HeaderValueParser parser = BasicHeaderValueParser.DEFAULT;
-        ParserCursor cursor = new ParserCursor(pos, buffer.length()); 
-        HeaderElement[] elements = parser.parseElements(buffer, cursor);
-        if (elements.length == 0) {
-            throw new MalformedChallengeException("Authentication challenge is empty");
-        }
-        
-        this.params = new HashMap<String, String>(elements.length);
-        for (HeaderElement element : elements) {
-            this.params.put(element.getName(), element.getValue());
-        }
-    }
-
-    /**
-     * Returns authentication parameters map. Keys in the map are lower-cased.
-     * 
-     * @return the map of authentication parameters
-     */
-    protected Map<String, String> getParameters() {
-        if (this.params == null) {
-            this.params = new HashMap<String, String>();
-        }
-        return this.params;
-    }
-
-    /**
-     * Returns authentication parameter with the given name, if available.
-     * 
-     * @param name The name of the parameter to be returned
-     * 
-     * @return the parameter with the given name
-     */
-    public String getParameter(final String name) {
-        if (name == null) {
-            throw new IllegalArgumentException("Parameter name may not be null"); 
-        }
-        if (this.params == null) {
-            return null;
-        }
-        return this.params.get(name.toLowerCase(Locale.ENGLISH));
-    }
-
-    /**
-     * Returns authentication realm. The realm may not be null.
-     * 
-     * @return the authentication realm
-     */
-    public String getRealm() {
-        return getParameter("realm");
-    }
-
-}
diff --git a/src/org/apache/http/impl/auth/UnsupportedDigestAlgorithmException.java b/src/org/apache/http/impl/auth/UnsupportedDigestAlgorithmException.java
deleted file mode 100644
index abd0a66..0000000
--- a/src/org/apache/http/impl/auth/UnsupportedDigestAlgorithmException.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/auth/UnsupportedDigestAlgorithmException.java $
- * $Revision: 527479 $
- * $Date: 2007-04-11 05:55:12 -0700 (Wed, 11 Apr 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.impl.auth;
-
-/**
- * Authentication credentials required to respond to a authentication 
- * challenge are invalid
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class UnsupportedDigestAlgorithmException extends RuntimeException {
-
-    private static final long serialVersionUID = 319558534317118022L;
-
-    /**
-     * Creates a new UnsupportedAuthAlgoritmException with a <tt>null</tt> detail message. 
-     */
-    public UnsupportedDigestAlgorithmException() {
-        super();
-    }
-
-    /**
-     * Creates a new UnsupportedAuthAlgoritmException with the specified message.
-     * 
-     * @param message the exception detail message
-     */
-    public UnsupportedDigestAlgorithmException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new UnsupportedAuthAlgoritmException with the specified detail message and cause.
-     * 
-     * @param message the exception detail message
-     * @param cause the <tt>Throwable</tt> that caused this exception, or <tt>null</tt>
-     * if the cause is unavailable, unknown, or not a <tt>Throwable</tt>
-     */
-    public UnsupportedDigestAlgorithmException(String message, Throwable cause) {
-        super(message, cause);
-    }
-}
diff --git a/src/org/apache/http/impl/auth/package.html b/src/org/apache/http/impl/auth/package.html
deleted file mode 100644
index e301283..0000000
--- a/src/org/apache/http/impl/auth/package.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<body>
-
-</body>
-
diff --git a/src/org/apache/http/impl/client/AbstractAuthenticationHandler.java b/src/org/apache/http/impl/client/AbstractAuthenticationHandler.java
deleted file mode 100644
index 57699d5..0000000
--- a/src/org/apache/http/impl/client/AbstractAuthenticationHandler.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractAuthenticationHandler.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.impl.client;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.FormattedHeader;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.auth.AuthSchemeRegistry;
-import org.apache.http.auth.AuthenticationException;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.client.AuthenticationHandler;
-import org.apache.http.client.protocol.ClientContext;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public abstract class AbstractAuthenticationHandler implements AuthenticationHandler {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    private static final List<String> DEFAULT_SCHEME_PRIORITY = Arrays.asList(new String[] {
-            "ntlm",
-            "digest",
-            "basic"
-    });
-    
-    public AbstractAuthenticationHandler() {
-        super();
-    }
-    
-    protected Map<String, Header> parseChallenges(
-            final Header[] headers) throws MalformedChallengeException {
-        
-        Map<String, Header> map = new HashMap<String, Header>(headers.length);
-        for (Header header : headers) {
-            CharArrayBuffer buffer;
-            int pos;
-            if (header instanceof FormattedHeader) {
-                buffer = ((FormattedHeader) header).getBuffer();
-                pos = ((FormattedHeader) header).getValuePos();
-            } else {
-                String s = header.getValue();
-                if (s == null) {
-                    throw new MalformedChallengeException("Header value is null");
-                }
-                buffer = new CharArrayBuffer(s.length());
-                buffer.append(s);
-                pos = 0;
-            }
-            while (pos < buffer.length() && HTTP.isWhitespace(buffer.charAt(pos))) {
-                pos++;
-            }
-            int beginIndex = pos;
-            while (pos < buffer.length() && !HTTP.isWhitespace(buffer.charAt(pos))) {
-                pos++;
-            }
-            int endIndex = pos;
-            String s = buffer.substring(beginIndex, endIndex);
-            map.put(s.toLowerCase(Locale.ENGLISH), header);
-        }
-        return map;
-    }
-    
-    protected List<String> getAuthPreferences() {
-        return DEFAULT_SCHEME_PRIORITY;
-    }
-    
-    public AuthScheme selectScheme(
-            final Map<String, Header> challenges, 
-            final HttpResponse response,
-            final HttpContext context) throws AuthenticationException {
-        
-        AuthSchemeRegistry registry = (AuthSchemeRegistry) context.getAttribute(
-                ClientContext.AUTHSCHEME_REGISTRY);
-        if (registry == null) {
-            throw new IllegalStateException("AuthScheme registry not set in HTTP context");
-        }
-        
-        List<?> authPrefs = (List<?>) context.getAttribute(
-                ClientContext.AUTH_SCHEME_PREF);
-        if (authPrefs == null) {
-            authPrefs = getAuthPreferences();
-        }
-        
-        if (this.log.isDebugEnabled()) {
-            this.log.debug("Authentication schemes in the order of preference: " 
-                + authPrefs);
-        }
-
-        AuthScheme authScheme = null;
-        for (int i = 0; i < authPrefs.size(); i++) {
-            String id = (String) authPrefs.get(i);
-            Header challenge = challenges.get(id.toLowerCase(Locale.ENGLISH)); 
-
-            if (challenge != null) {
-                if (this.log.isDebugEnabled()) {
-                    this.log.debug(id + " authentication scheme selected");
-                }
-                try {
-                    authScheme = registry.getAuthScheme(id, response.getParams());
-                    break;
-                } catch (IllegalStateException e) {
-                    if (this.log.isWarnEnabled()) {
-                        this.log.warn("Authentication scheme " + id + " not supported");
-                        // Try again
-                    }
-                }
-            } else {
-                if (this.log.isDebugEnabled()) {
-                    this.log.debug("Challenge for " + id + " authentication scheme not available");
-                    // Try again
-                }
-            }
-        }
-        if (authScheme == null) {
-            // If none selected, something is wrong
-            throw new AuthenticationException(
-                "Unable to respond to any of these challenges: "
-                    + challenges);
-        }
-        return authScheme;
-    }
-
-}
diff --git a/src/org/apache/http/impl/client/AbstractHttpClient.java b/src/org/apache/http/impl/client/AbstractHttpClient.java
deleted file mode 100644
index 3a1b838..0000000
--- a/src/org/apache/http/impl/client/AbstractHttpClient.java
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java $
- * $Revision: 677250 $
- * $Date: 2008-07-16 04:45:47 -0700 (Wed, 16 Jul 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.impl.client;
-
-import java.io.IOException;
-import java.net.URI;
-import java.lang.reflect.UndeclaredThrowableException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.ConnectionReuseStrategy;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.HttpEntity;
-import org.apache.http.auth.AuthSchemeRegistry;
-import org.apache.http.client.AuthenticationHandler;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.RequestDirector;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.client.CookieStore;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.HttpRequestRetryHandler;
-import org.apache.http.client.RedirectHandler;
-import org.apache.http.client.UserTokenHandler;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.ConnectionKeepAliveStrategy;
-import org.apache.http.conn.routing.HttpRoutePlanner;
-import org.apache.http.cookie.CookieSpecRegistry;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.BasicHttpProcessor;
-import org.apache.http.protocol.DefaultedHttpContext;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpProcessor;
-import org.apache.http.protocol.HttpRequestExecutor;
-
-/**
- * Convenience base class for HTTP client implementations.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 677250 $
- *
- * @since 4.0
- */
-public abstract class AbstractHttpClient implements HttpClient {
-
-    private final Log log = LogFactory.getLog(getClass());
-
-    /** The parameters. */
-    private HttpParams defaultParams;
-
-    /** The request executor. */
-    private HttpRequestExecutor requestExec;
-
-    /** The connection manager. */
-    private ClientConnectionManager connManager;
-
-    /** The connection re-use strategy. */
-    private ConnectionReuseStrategy reuseStrategy;
-    
-    /** The connection keep-alive strategy. */
-    private ConnectionKeepAliveStrategy keepAliveStrategy;
-
-    /** The cookie spec registry. */
-    private CookieSpecRegistry supportedCookieSpecs;
-
-    /** The authentication scheme registry. */
-    private AuthSchemeRegistry supportedAuthSchemes;
-    
-    /** The HTTP processor. */
-    private BasicHttpProcessor httpProcessor;
-
-    /** The request retry handler. */
-    private HttpRequestRetryHandler retryHandler;
-
-    /** The redirect handler. */
-    private RedirectHandler redirectHandler;
-
-    /** The target authentication handler. */
-    private AuthenticationHandler targetAuthHandler;
-
-    /** The proxy authentication handler. */
-    private AuthenticationHandler proxyAuthHandler;
-
-    /** The cookie store. */
-    private CookieStore cookieStore;
-
-    /** The credentials provider. */
-    private CredentialsProvider credsProvider;
-    
-    /** The route planner. */
-    private HttpRoutePlanner routePlanner;
-
-    /** The user token handler. */
-    private UserTokenHandler userTokenHandler;
-
-
-    /**
-     * Creates a new HTTP client.
-     *
-     * @param conman    the connection manager
-     * @param params    the parameters
-     */
-    protected AbstractHttpClient(
-            final ClientConnectionManager conman,
-            final HttpParams params) {
-        defaultParams        = params;
-        connManager          = conman;
-    } // constructor
-
-    protected abstract HttpParams createHttpParams();
-
-    
-    protected abstract HttpContext createHttpContext();
-
-    
-    protected abstract HttpRequestExecutor createRequestExecutor();
-
-
-    protected abstract ClientConnectionManager createClientConnectionManager();
-
-
-    protected abstract AuthSchemeRegistry createAuthSchemeRegistry();
-
-    
-    protected abstract CookieSpecRegistry createCookieSpecRegistry();
-
-    
-    protected abstract ConnectionReuseStrategy createConnectionReuseStrategy();
-
-    
-    protected abstract ConnectionKeepAliveStrategy createConnectionKeepAliveStrategy();
-
-    
-    protected abstract BasicHttpProcessor createHttpProcessor();
-
-    
-    protected abstract HttpRequestRetryHandler createHttpRequestRetryHandler();
-
-    
-    protected abstract RedirectHandler createRedirectHandler();
-
-    
-    protected abstract AuthenticationHandler createTargetAuthenticationHandler();
-
-    
-    protected abstract AuthenticationHandler createProxyAuthenticationHandler();
-
-    
-    protected abstract CookieStore createCookieStore();
-    
-    
-    protected abstract CredentialsProvider createCredentialsProvider();
-    
-    
-    protected abstract HttpRoutePlanner createHttpRoutePlanner();
-
-    
-    protected abstract UserTokenHandler createUserTokenHandler();
-
-    
-    // non-javadoc, see interface HttpClient
-    public synchronized final HttpParams getParams() {
-        if (defaultParams == null) {
-            defaultParams = createHttpParams();
-        }
-        return defaultParams;
-    }
-
-
-    /**
-     * Replaces the parameters.
-     * The implementation here does not update parameters of dependent objects.
-     *
-     * @param params    the new default parameters
-     */
-    public synchronized void setParams(HttpParams params) {
-        defaultParams = params;
-    }
-
-
-    public synchronized final ClientConnectionManager getConnectionManager() {
-        if (connManager == null) {
-            connManager = createClientConnectionManager();
-        }
-        return connManager;
-    }
-
-
-    public synchronized final HttpRequestExecutor getRequestExecutor() {
-        if (requestExec == null) {
-            requestExec = createRequestExecutor();
-        }
-        return requestExec;
-    }
-
-
-    public synchronized final AuthSchemeRegistry getAuthSchemes() {
-        if (supportedAuthSchemes == null) {
-            supportedAuthSchemes = createAuthSchemeRegistry();
-        }
-        return supportedAuthSchemes;
-    }
-
-
-    public synchronized void setAuthSchemes(final AuthSchemeRegistry authSchemeRegistry) {
-        supportedAuthSchemes = authSchemeRegistry;
-    }
-
-
-    public synchronized final CookieSpecRegistry getCookieSpecs() {
-        if (supportedCookieSpecs == null) {
-            supportedCookieSpecs = createCookieSpecRegistry();
-        }
-        return supportedCookieSpecs;
-    }
-
-
-    public synchronized void setCookieSpecs(final CookieSpecRegistry cookieSpecRegistry) {
-        supportedCookieSpecs = cookieSpecRegistry;
-    }
-
-    
-    public synchronized final ConnectionReuseStrategy getConnectionReuseStrategy() {
-        if (reuseStrategy == null) {
-            reuseStrategy = createConnectionReuseStrategy();
-        }
-        return reuseStrategy;
-    }
-
-
-    public synchronized void setReuseStrategy(final ConnectionReuseStrategy reuseStrategy) {
-        this.reuseStrategy = reuseStrategy;
-    }
-
-    
-    public synchronized final ConnectionKeepAliveStrategy getConnectionKeepAliveStrategy() {
-        if (keepAliveStrategy == null) {
-            keepAliveStrategy = createConnectionKeepAliveStrategy();
-        }
-        return keepAliveStrategy;
-    }
-
-    
-    public synchronized void setKeepAliveStrategy(final ConnectionKeepAliveStrategy keepAliveStrategy) {
-        this.keepAliveStrategy = keepAliveStrategy;
-    }
-
-
-    public synchronized final HttpRequestRetryHandler getHttpRequestRetryHandler() {
-        if (retryHandler == null) {
-            retryHandler = createHttpRequestRetryHandler();
-        }
-        return retryHandler;
-    }
-
-
-    public synchronized void setHttpRequestRetryHandler(final HttpRequestRetryHandler retryHandler) {
-        this.retryHandler = retryHandler;
-    }
-
-
-    public synchronized final RedirectHandler getRedirectHandler() {
-        if (redirectHandler == null) {
-            redirectHandler = createRedirectHandler();
-        }
-        return redirectHandler;
-    }
-
-
-    public synchronized void setRedirectHandler(final RedirectHandler redirectHandler) {
-        this.redirectHandler = redirectHandler;
-    }
-
-
-    public synchronized final AuthenticationHandler getTargetAuthenticationHandler() {
-        if (targetAuthHandler == null) {
-            targetAuthHandler = createTargetAuthenticationHandler();
-        }
-        return targetAuthHandler;
-    }
-
-
-    public synchronized void setTargetAuthenticationHandler(
-            final AuthenticationHandler targetAuthHandler) {
-        this.targetAuthHandler = targetAuthHandler;
-    }
-
-
-    public synchronized final AuthenticationHandler getProxyAuthenticationHandler() {
-        if (proxyAuthHandler == null) {
-            proxyAuthHandler = createProxyAuthenticationHandler();
-        }
-        return proxyAuthHandler;
-    }
-
-
-    public synchronized void setProxyAuthenticationHandler(
-            final AuthenticationHandler proxyAuthHandler) {
-        this.proxyAuthHandler = proxyAuthHandler;
-    }
-
-
-    public synchronized final CookieStore getCookieStore() {
-        if (cookieStore == null) {
-            cookieStore = createCookieStore();
-        }
-        return cookieStore;
-    }
-
-
-    public synchronized void setCookieStore(final CookieStore cookieStore) {
-        this.cookieStore = cookieStore;
-    }
-
-
-    public synchronized final CredentialsProvider getCredentialsProvider() {
-        if (credsProvider == null) {
-            credsProvider = createCredentialsProvider();
-        }
-        return credsProvider;
-    }
-
-
-    public synchronized void setCredentialsProvider(final CredentialsProvider credsProvider) {
-        this.credsProvider = credsProvider;
-    }
-
-
-    public synchronized final HttpRoutePlanner getRoutePlanner() {
-        if (this.routePlanner == null) {
-            this.routePlanner = createHttpRoutePlanner();
-        }
-        return this.routePlanner;
-    }
-
-
-    public synchronized void setRoutePlanner(final HttpRoutePlanner routePlanner) {
-        this.routePlanner = routePlanner;
-    }
-    
-    
-    public synchronized final UserTokenHandler getUserTokenHandler() {
-        if (this.userTokenHandler == null) {
-            this.userTokenHandler = createUserTokenHandler();
-        }
-        return this.userTokenHandler;
-    }
-
-
-    public synchronized void setUserTokenHandler(final UserTokenHandler userTokenHandler) {
-        this.userTokenHandler = userTokenHandler;
-    }
-    
-    
-    protected synchronized final BasicHttpProcessor getHttpProcessor() {
-        if (httpProcessor == null) {
-            httpProcessor = createHttpProcessor();
-        }
-        return httpProcessor;
-    }
-
-
-    public synchronized void addResponseInterceptor(final HttpResponseInterceptor itcp) {
-        getHttpProcessor().addInterceptor(itcp);
-    }
-
-
-    public synchronized void addResponseInterceptor(final HttpResponseInterceptor itcp, int index) {
-        getHttpProcessor().addInterceptor(itcp, index);
-    }
-
-
-    public synchronized HttpResponseInterceptor getResponseInterceptor(int index) {
-        return getHttpProcessor().getResponseInterceptor(index);
-    }
-
-
-    public synchronized int getResponseInterceptorCount() {
-        return getHttpProcessor().getResponseInterceptorCount();
-    }
-
-
-    public synchronized void clearResponseInterceptors() {
-        getHttpProcessor().clearResponseInterceptors();
-    }
-
-
-    public void removeResponseInterceptorByClass(Class<? extends HttpResponseInterceptor> clazz) {
-        getHttpProcessor().removeResponseInterceptorByClass(clazz);
-    }
-
-    
-    public synchronized void addRequestInterceptor(final HttpRequestInterceptor itcp) {
-        getHttpProcessor().addInterceptor(itcp);
-    }
-
-
-    public synchronized void addRequestInterceptor(final HttpRequestInterceptor itcp, int index) {
-        getHttpProcessor().addInterceptor(itcp, index);
-    }
-
-
-    public synchronized HttpRequestInterceptor getRequestInterceptor(int index) {
-        return getHttpProcessor().getRequestInterceptor(index);
-    }
-
-
-    public synchronized int getRequestInterceptorCount() {
-        return getHttpProcessor().getRequestInterceptorCount();
-    }
-
-
-    public synchronized void clearRequestInterceptors() {
-        getHttpProcessor().clearRequestInterceptors();
-    }
-
-
-    public void removeRequestInterceptorByClass(Class<? extends HttpRequestInterceptor> clazz) {
-        getHttpProcessor().removeRequestInterceptorByClass(clazz);
-    }
-
-
-    // non-javadoc, see interface HttpClient
-    public final HttpResponse execute(HttpUriRequest request)
-        throws IOException, ClientProtocolException {
-
-        return execute(request, (HttpContext) null);
-    }
-
-
-    /**
-     * Maps to {@link HttpClient#execute(HttpHost,HttpRequest,HttpContext)
-     *                           execute(target, request, context)}.
-     * The target is determined from the URI of the request.
-     *
-     * @param request   the request to execute
-     * @param context   the request-specific execution context,
-     *                  or <code>null</code> to use a default context
-     */
-    public final HttpResponse execute(HttpUriRequest request,
-                                      HttpContext context)
-        throws IOException, ClientProtocolException {
-
-        if (request == null) {
-            throw new IllegalArgumentException
-                ("Request must not be null.");
-        }
-
-        return execute(determineTarget(request), request, context);
-    }
-
-    private HttpHost determineTarget(HttpUriRequest request) {
-        // A null target may be acceptable if there is a default target.
-        // Otherwise, the null target is detected in the director.
-        HttpHost target = null;
-
-        URI requestURI = request.getURI();
-        if (requestURI.isAbsolute()) {
-            target = new HttpHost(
-                    requestURI.getHost(),
-                    requestURI.getPort(),
-                    requestURI.getScheme());
-        }
-        return target;
-    }
-
-    // non-javadoc, see interface HttpClient
-    public final HttpResponse execute(HttpHost target, HttpRequest request)
-        throws IOException, ClientProtocolException {
-
-        return execute(target, request, (HttpContext) null);
-    }
-
-
-    // non-javadoc, see interface HttpClient
-    public final HttpResponse execute(HttpHost target, HttpRequest request,
-                                      HttpContext context)
-        throws IOException, ClientProtocolException {
-
-        if (request == null) {
-            throw new IllegalArgumentException
-                ("Request must not be null.");
-        }
-        // a null target may be acceptable, this depends on the route planner
-        // a null context is acceptable, default context created below
-
-        HttpContext execContext = null;
-        RequestDirector director = null;
-        
-        // Initialize the request execution context making copies of 
-        // all shared objects that are potentially threading unsafe.
-        synchronized (this) {
-
-            HttpContext defaultContext = createHttpContext();
-            if (context == null) {
-                execContext = defaultContext;
-            } else {
-                execContext = new DefaultedHttpContext(context, defaultContext);
-            }
-            // Create a director for this request
-            director = createClientRequestDirector(
-                    getRequestExecutor(),
-                    getConnectionManager(),
-                    getConnectionReuseStrategy(),
-                    getConnectionKeepAliveStrategy(),
-                    getRoutePlanner(),
-                    getHttpProcessor().copy(),
-                    getHttpRequestRetryHandler(),
-                    getRedirectHandler(),
-                    getTargetAuthenticationHandler(),
-                    getProxyAuthenticationHandler(),
-                    getUserTokenHandler(),
-                    determineParams(request));
-        }
-
-        try {
-            return director.execute(target, request, execContext);
-        } catch(HttpException httpException) {
-            throw new ClientProtocolException(httpException);
-        }
-    } // execute
-
-    
-    protected RequestDirector createClientRequestDirector(
-            final HttpRequestExecutor requestExec,
-            final ClientConnectionManager conman,
-            final ConnectionReuseStrategy reustrat,
-            final ConnectionKeepAliveStrategy kastrat,
-            final HttpRoutePlanner rouplan,
-            final HttpProcessor httpProcessor,
-            final HttpRequestRetryHandler retryHandler,
-            final RedirectHandler redirectHandler,
-            final AuthenticationHandler targetAuthHandler,
-            final AuthenticationHandler proxyAuthHandler,
-            final UserTokenHandler stateHandler,
-            final HttpParams params) {
-        return new DefaultRequestDirector(
-                requestExec,
-                conman,
-                reustrat,
-                kastrat,
-                rouplan,
-                httpProcessor,
-                retryHandler,
-                redirectHandler,
-                targetAuthHandler,
-                proxyAuthHandler,
-                stateHandler,
-                params);
-    }
-
-    /**
-     * Obtains parameters for executing a request.
-     * The default implementation in this class creates a new
-     * {@link ClientParamsStack} from the request parameters
-     * and the client parameters.
-     * <br/>
-     * This method is called by the default implementation of
-     * {@link #execute(HttpHost,HttpRequest,HttpContext)}
-     * to obtain the parameters for the
-     * {@link DefaultRequestDirector}.
-     *
-     * @param req    the request that will be executed
-     *
-     * @return  the parameters to use
-     */
-    protected HttpParams determineParams(HttpRequest req) {
-        return new ClientParamsStack
-            (null, getParams(), req.getParams(), null);
-    }
-
-
-    // non-javadoc, see interface HttpClient
-    public <T> T execute(
-            final HttpUriRequest request, 
-            final ResponseHandler<? extends T> responseHandler) 
-                throws IOException, ClientProtocolException {
-        return execute(request, responseHandler, null);
-    }
-
-
-    // non-javadoc, see interface HttpClient
-    public <T> T execute(
-            final HttpUriRequest request,
-            final ResponseHandler<? extends T> responseHandler, 
-            final HttpContext context)
-                throws IOException, ClientProtocolException {
-        HttpHost target = determineTarget(request);
-        return execute(target, request, responseHandler, context);
-    }
-
-
-    // non-javadoc, see interface HttpClient
-    public <T> T execute(
-            final HttpHost target, 
-            final HttpRequest request,
-            final ResponseHandler<? extends T> responseHandler) 
-                throws IOException, ClientProtocolException {
-        return execute(target, request, responseHandler, null);
-    }
-
-
-    // non-javadoc, see interface HttpClient
-    public <T> T execute(
-            final HttpHost target, 
-            final HttpRequest request,
-            final ResponseHandler<? extends T> responseHandler, 
-            final HttpContext context) 
-                throws IOException, ClientProtocolException {
-        if (responseHandler == null) {
-            throw new IllegalArgumentException
-                ("Response handler must not be null.");
-        }
-
-        HttpResponse response = execute(target, request, context);
-
-        T result;
-        try {
-            result = responseHandler.handleResponse(response);
-        } catch (Throwable t) {
-            HttpEntity entity = response.getEntity();
-            if (entity != null) {
-                try {
-                    entity.consumeContent();
-                } catch (Throwable t2) {
-                    // Log this exception. The original exception is more
-                    // important and will be thrown to the caller.
-                    this.log.warn("Error consuming content after an exception.", t2);
-                }
-            }
-
-            if (t instanceof Error) {
-                throw (Error) t;
-            }
-
-            if (t instanceof RuntimeException) {
-                throw (RuntimeException) t;
-            }
-
-            if (t instanceof IOException) {
-                throw (IOException) t;
-            }
-            
-            throw new UndeclaredThrowableException(t);
-        }
-
-        // Handling the response was successful. Ensure that the content has
-        // been fully consumed.
-        HttpEntity entity = response.getEntity();
-        if (entity != null) {
-            // Let this exception go to the caller.
-            entity.consumeContent();
-        }
-
-        return result;
-    }
-
-
-} // class AbstractHttpClient
diff --git a/src/org/apache/http/impl/client/BasicCookieStore.java b/src/org/apache/http/impl/client/BasicCookieStore.java
deleted file mode 100644
index 9970961..0000000
--- a/src/org/apache/http/impl/client/BasicCookieStore.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/BasicCookieStore.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.client;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.http.client.CookieStore;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieIdentityComparator;
-
-/**
- * Default implementation of {@link CookieStore}
- * 
- * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @author Rodney Waldhoff
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- * @author Sean C. Sullivan
- * @author <a href="mailto:becke@u.washington.edu">Michael Becke</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:adrian@intencha.com">Adrian Sutton</a>
- * 
- * @since 4.0
- */
-public class BasicCookieStore implements CookieStore {
-
-    private final ArrayList<Cookie> cookies;
-
-    private final Comparator<Cookie> cookieComparator;
-    
-    // -------------------------------------------------------- Class Variables
-
-    /**
-     * Default constructor.
-     */
-    public BasicCookieStore() {
-        super();
-        this.cookies = new ArrayList<Cookie>();
-        this.cookieComparator = new CookieIdentityComparator();
-    }
-
-    /**
-     * Adds an {@link Cookie HTTP cookie}, replacing any existing equivalent cookies.
-     * If the given cookie has already expired it will not be added, but existing 
-     * values will still be removed.
-     * 
-     * @param cookie the {@link Cookie cookie} to be added
-     * 
-     * @see #addCookies(Cookie[])
-     * 
-     */
-    public synchronized void addCookie(Cookie cookie) {
-        if (cookie != null) {
-            // first remove any old cookie that is equivalent
-            for (Iterator<Cookie> it = cookies.iterator(); it.hasNext();) {
-                if (cookieComparator.compare(cookie, it.next()) == 0) {
-                    it.remove();
-                    break;
-                }
-            }
-            if (!cookie.isExpired(new Date())) {
-                cookies.add(cookie);
-            }
-        }
-    }
-
-    /**
-     * Adds an array of {@link Cookie HTTP cookies}. Cookies are added individually and 
-     * in the given array order. If any of the given cookies has already expired it will 
-     * not be added, but existing values will still be removed.
-     * 
-     * @param cookies the {@link Cookie cookies} to be added
-     * 
-     * @see #addCookie(Cookie)
-     * 
-     */
-    public synchronized void addCookies(Cookie[] cookies) {
-        if (cookies != null) {
-            for (Cookie cooky : cookies) {
-                this.addCookie(cooky);
-            }
-        }
-    }
-
-    /**
-     * Returns an immutable array of {@link Cookie cookies} that this HTTP
-     * state currently contains.
-     * 
-     * @return an array of {@link Cookie cookies}.
-     */
-    public synchronized List<Cookie> getCookies() {
-        return Collections.unmodifiableList(this.cookies);
-    }
-
-    /**
-     * Removes all of {@link Cookie cookies} in this HTTP state
-     * that have expired by the specified {@link java.util.Date date}. 
-     * 
-     * @return true if any cookies were purged.
-     * 
-     * @see Cookie#isExpired(Date)
-     */
-    public synchronized boolean clearExpired(final Date date) {
-        if (date == null) {
-            return false;
-        }
-        boolean removed = false;
-        for (Iterator<Cookie> it = cookies.iterator(); it.hasNext();) {
-            if (it.next().isExpired(date)) {
-                it.remove();
-                removed = true;
-            }
-        }
-        return removed;
-    }
-
-    @Override
-    public String toString() {
-        return cookies.toString();
-    }
-    
-    /**
-     * Clears all cookies.
-     */
-    public synchronized void clear() {
-        cookies.clear();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/client/BasicCredentialsProvider.java b/src/org/apache/http/impl/client/BasicCredentialsProvider.java
deleted file mode 100644
index 02427ea..0000000
--- a/src/org/apache/http/impl/client/BasicCredentialsProvider.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/BasicCredentialsProvider.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.client;
-
-import java.util.HashMap;
-
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.Credentials;
-import org.apache.http.client.CredentialsProvider;
-
-/**
- * Default implementation of {@link CredentialsProvider}
- * 
- * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @author Rodney Waldhoff
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- * @author Sean C. Sullivan
- * @author <a href="mailto:becke@u.washington.edu">Michael Becke</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:adrian@intencha.com">Adrian Sutton</a>
- * 
- * @since 4.0
- */
-public class BasicCredentialsProvider implements CredentialsProvider {
-
-    private final HashMap<AuthScope, Credentials> credMap;
-
-    /**
-     * Default constructor.
-     */
-    public BasicCredentialsProvider() {
-        super();
-        this.credMap = new HashMap<AuthScope, Credentials>();
-    }
-
-    /** 
-     * Sets the {@link Credentials credentials} for the given authentication 
-     * scope. Any previous credentials for the given scope will be overwritten.
-     * 
-     * @param authscope the {@link AuthScope authentication scope}
-     * @param credentials the authentication {@link Credentials credentials} 
-     * for the given scope.
-     * 
-     * @see #getCredentials(AuthScope)
-     */
-    public synchronized void setCredentials(
-            final AuthScope authscope, 
-            final Credentials credentials) {
-        if (authscope == null) {
-            throw new IllegalArgumentException("Authentication scope may not be null");
-        }
-        credMap.put(authscope, credentials);
-    }
-
-    /**
-     * Find matching {@link Credentials credentials} for the given authentication scope.
-     *
-     * @param map the credentials hash map
-     * @param authscope the {@link AuthScope authentication scope}
-     * @return the credentials 
-     * 
-     */
-    private static Credentials matchCredentials(
-            final HashMap<AuthScope, Credentials> map, 
-            final AuthScope authscope) {
-        // see if we get a direct hit
-        Credentials creds = map.get(authscope);
-        if (creds == null) {
-            // Nope.
-            // Do a full scan
-            int bestMatchFactor  = -1;
-            AuthScope bestMatch  = null;
-            for (AuthScope current: map.keySet()) {
-                int factor = authscope.match(current);
-                if (factor > bestMatchFactor) {
-                    bestMatchFactor = factor;
-                    bestMatch = current;
-                }
-            }
-            if (bestMatch != null) {
-                creds = map.get(bestMatch);
-            }
-        }
-        return creds;
-    }
-    
-    /**
-     * Get the {@link Credentials credentials} for the given authentication scope.
-     *
-     * @param authscope the {@link AuthScope authentication scope}
-     * @return the credentials 
-     * 
-     * @see #setCredentials(AuthScope, Credentials)
-     */
-    public synchronized Credentials getCredentials(final AuthScope authscope) {
-        if (authscope == null) {
-            throw new IllegalArgumentException("Authentication scope may not be null");
-        }
-        return matchCredentials(this.credMap, authscope);
-    }
-
-    @Override
-    public String toString() {
-        return credMap.toString();
-    }
-    
-    /**
-     * Clears all credentials.
-     */
-    public synchronized void clear() {
-        this.credMap.clear();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/client/BasicResponseHandler.java b/src/org/apache/http/impl/client/BasicResponseHandler.java
deleted file mode 100644
index f17d30d..0000000
--- a/src/org/apache/http/impl/client/BasicResponseHandler.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/BasicResponseHandler.java $
- * $Revision: 677240 $
- * $Date: 2008-07-16 04:25:47 -0700 (Wed, 16 Jul 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.impl.client;
-
-import java.io.IOException;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.client.HttpResponseException;
-import org.apache.http.util.EntityUtils;
-
-/**
- * A {@link ResponseHandler} that returns the response body as a String
- * for successful (2xx) responses. If the response code was >= 300, the response
- * body is consumed and an {@link HttpResponseException} is thrown.
- * 
- * If this is used with
- * {@link org.apache.http.client.HttpClient#execute(
- *  org.apache.http.client.methods.HttpUriRequest, ResponseHandler),
- * HttpClient may handle redirects (3xx responses) internally.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 677240 $
- * 
- * @since 4.0
- */
-public class BasicResponseHandler implements ResponseHandler<String> {
-
-    /**
-     * Returns the response body as a String if the response was successful (a
-     * 2xx status code). If no response body exists, this returns null. If the
-     * response was unsuccessful (>= 300 status code), throws an
-     * {@link HttpResponseException}.
-     */
-    public String handleResponse(final HttpResponse response)
-            throws HttpResponseException, IOException {
-        StatusLine statusLine = response.getStatusLine();
-        if (statusLine.getStatusCode() >= 300) {
-            throw new HttpResponseException(statusLine.getStatusCode(),
-                    statusLine.getReasonPhrase());
-        }
-
-        HttpEntity entity = response.getEntity();
-        return entity == null ? null : EntityUtils.toString(entity);
-    }
-
-}
diff --git a/src/org/apache/http/impl/client/ClientParamsStack.java b/src/org/apache/http/impl/client/ClientParamsStack.java
deleted file mode 100644
index a017e5d..0000000
--- a/src/org/apache/http/impl/client/ClientParamsStack.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/ClientParamsStack.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.impl.client;
-
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.AbstractHttpParams;
-
-
-/**
- * Represents a stack of parameter collections.
- * When retrieving a parameter, the stack is searched in a fixed order
- * and the first match returned. Setting parameters via the stack is
- * not supported. To minimize overhead, the stack has a fixed size and
- * does not maintain an internal array.
- * The supported stack entries, sorted by increasing priority, are:
- * <ol>
- * <li>Application parameters:
- *     expected to be the same for all clients used by an application.
- *     These provide "global", that is application-wide, defaults.
- *     </li>
- * <li>Client parameters:
- *     specific to an instance of
- *     {@link org.apache.http.client.HttpClient HttpClient}.
- *     These provide client specific defaults.
- *     </li>
- * <li>Request parameters:
- *     specific to a single request execution.
- *     For overriding client and global defaults.
- *     </li>
- * <li>Override parameters:
- *     specific to an instance of
- *     {@link org.apache.http.client.HttpClient HttpClient}.
- *     These can be used to set parameters that cannot be overridden
- *     on a per-request basis.
- *     </li>
- * </ol>
- * Each stack entry may be <code>null</code>. That is preferable over
- * an empty params collection, since it avoids searching the empty collection
- * when looking up parameters.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * @version $Revision: 673450 $
- */
-public class ClientParamsStack extends AbstractHttpParams {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    /** The application parameter collection, or <code>null</code>. */
-    protected final HttpParams applicationParams;
-
-    /** The client parameter collection, or <code>null</code>. */
-    protected final HttpParams clientParams;
-
-    /** The request parameter collection, or <code>null</code>. */
-    protected final HttpParams requestParams;
-
-    /** The override parameter collection, or <code>null</code>. */
-    protected final HttpParams overrideParams;
-
-
-    /**
-     * Creates a new parameter stack from elements.
-     * The arguments will be stored as-is, there is no copying to
-     * prevent modification.
-     *
-     * @param aparams   application parameters, or <code>null</code>
-     * @param cparams   client parameters, or <code>null</code>
-     * @param rparams   request parameters, or <code>null</code>
-     * @param oparams   override parameters, or <code>null</code>
-     */
-    public ClientParamsStack(HttpParams aparams, HttpParams cparams,
-                             HttpParams rparams, HttpParams oparams) {
-        applicationParams = aparams;
-        clientParams      = cparams;
-        requestParams     = rparams;
-        overrideParams    = oparams;
-    }
-
-
-    /**
-     * Creates a copy of a parameter stack.
-     * The new stack will have the exact same entries as the argument stack.
-     * There is no copying of parameters.
-     *
-     * @param stack     the stack to copy
-     */
-    public ClientParamsStack(ClientParamsStack stack) {
-        this(stack.getApplicationParams(),
-             stack.getClientParams(),
-             stack.getRequestParams(),
-             stack.getOverrideParams());
-    }
-
-
-    /**
-     * Creates a modified copy of a parameter stack.
-     * The new stack will contain the explicitly passed elements.
-     * For elements where the explicit argument is <code>null</code>,
-     * the corresponding element from the argument stack is used.
-     * There is no copying of parameters.
-     *
-     * @param stack     the stack to modify
-     * @param aparams   application parameters, or <code>null</code>
-     * @param cparams   client parameters, or <code>null</code>
-     * @param rparams   request parameters, or <code>null</code>
-     * @param oparams   override parameters, or <code>null</code>
-     */
-    public ClientParamsStack(ClientParamsStack stack,
-                             HttpParams aparams, HttpParams cparams,
-                             HttpParams rparams, HttpParams oparams) {
-        this((aparams != null) ? aparams : stack.getApplicationParams(),
-             (cparams != null) ? cparams : stack.getClientParams(),
-             (rparams != null) ? rparams : stack.getRequestParams(),
-             (oparams != null) ? oparams : stack.getOverrideParams());
-    }
-
-
-    /**
-     * Obtains the application parameters of this stack.
-     *
-     * @return  the application parameters, or <code>null</code>
-     */
-    public final HttpParams getApplicationParams() {
-        return applicationParams;
-    }
-
-    /**
-     * Obtains the client parameters of this stack.
-     *
-     * @return  the client parameters, or <code>null</code>
-     */
-    public final HttpParams getClientParams() {
-        return clientParams;
-    }
-
-    /**
-     * Obtains the request parameters of this stack.
-     *
-     * @return  the request parameters, or <code>null</code>
-     */
-    public final HttpParams getRequestParams() {
-        return requestParams;
-    }
-
-    /**
-     * Obtains the override parameters of this stack.
-     *
-     * @return  the override parameters, or <code>null</code>
-     */
-    public final HttpParams getOverrideParams() {
-        return overrideParams;
-    }
-
-
-    /**
-     * Obtains a parameter from this stack.
-     * See class comment for search order.
-     *
-     * @param name      the name of the parameter to obtain
-     *
-     * @return  the highest-priority value for that parameter, or
-     *          <code>null</code> if it is not set anywhere in this stack
-     */
-    public Object getParameter(String name) {
-        if (name == null) {
-            throw new IllegalArgumentException
-                ("Parameter name must not be null.");
-        }
-
-        Object result = null;
-
-        if (overrideParams != null) {
-            result = overrideParams.getParameter(name);
-        }
-        if ((result == null) && (requestParams != null)) {
-            result = requestParams.getParameter(name);
-        }
-        if ((result == null) && (clientParams != null)) {
-            result = clientParams.getParameter(name);
-        }
-        if ((result == null) && (applicationParams != null)) {
-            result = applicationParams.getParameter(name);
-        }
-        if (this.log.isDebugEnabled()) {
-            this.log.debug("'" + name + "': " + result);
-        }
-
-        return result;
-    }
-
-    /**
-     * Does <i>not</i> set a parameter.
-     * Parameter stacks are read-only. It is possible, though discouraged,
-     * to access and modify specific stack entries.
-     * Derived classes may change this behavior.
-     *
-     * @param name      ignored
-     * @param value     ignored
-     *
-     * @return  nothing
-     *
-     * @throws UnsupportedOperationException    always
-     */
-    public HttpParams setParameter(String name, Object value)
-        throws UnsupportedOperationException {
-
-        throw new UnsupportedOperationException
-            ("Setting parameters in a stack is not supported.");
-    }
-
-
-    /**
-     * Does <i>not</i> remove a parameter.
-     * Parameter stacks are read-only. It is possible, though discouraged,
-     * to access and modify specific stack entries.
-     * Derived classes may change this behavior.
-     *
-     * @param name      ignored
-     *
-     * @return  nothing
-     *
-     * @throws UnsupportedOperationException    always
-     */
-    public boolean removeParameter(String name) {
-        throw new UnsupportedOperationException
-        ("Removing parameters in a stack is not supported.");
-    }
-
-
-    /**
-     * Does <i>not</i> copy parameters.
-     * Parameter stacks are lightweight objects, expected to be instantiated
-     * as needed and to be used only in a very specific context. On top of
-     * that, they are read-only. The typical copy operation to prevent
-     * accidental modification of parameters passed by the application to
-     * a framework object is therefore pointless and disabled.
-     * Create a new stack if you really need a copy.
-     * <br/>
-     * Derived classes may change this behavior.
-     *
-     * @return <code>this</code> parameter stack
-     */
-    public HttpParams copy() {
-        return this;
-    }
-
-
-}
diff --git a/src/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.java b/src/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.java
deleted file mode 100644
index c7641d2..0000000
--- a/src/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $HeadURL: $
- * $Revision: $
- * $Date: $
- *
- * ====================================================================
- * 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.impl.client;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.HeaderElementIterator;
-import org.apache.http.HttpResponse;
-import org.apache.http.conn.ConnectionKeepAliveStrategy;
-import org.apache.http.message.BasicHeaderElementIterator;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * Default implementation of a strategy deciding duration
- * that a connection can remain idle.
- * 
- * The default implementation looks solely at the 'Keep-Alive'
- * header's timeout token.
- *
- * @author <a href="mailto:sberlin at gmail.com">Sam Berlin</a>
- *
- * @version $Revision: $
- * 
- * @since 4.0
- */
-public class DefaultConnectionKeepAliveStrategy implements ConnectionKeepAliveStrategy {
-    
-    public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        HeaderElementIterator it = new BasicHeaderElementIterator(
-                response.headerIterator(HTTP.CONN_KEEP_ALIVE));
-        while (it.hasNext()) {
-            HeaderElement he = it.nextElement();
-            String param = he.getName(); 
-            String value = he.getValue();
-            if (value != null && param.equalsIgnoreCase("timeout")) {
-                try {
-                    return Long.parseLong(value) * 1000;
-                } catch(NumberFormatException ignore) {
-                }
-            }
-        }
-        return -1;
-    }
-
-}
diff --git a/src/org/apache/http/impl/client/DefaultHttpClient.java b/src/org/apache/http/impl/client/DefaultHttpClient.java
deleted file mode 100644
index f0b694e..0000000
--- a/src/org/apache/http/impl/client/DefaultHttpClient.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultHttpClient.java $
- * $Revision: 677250 $
- * $Date: 2008-07-16 04:45:47 -0700 (Wed, 16 Jul 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.impl.client;
-
-import org.apache.http.ConnectionReuseStrategy;
-import org.apache.http.HttpVersion;
-import org.apache.http.auth.AuthSchemeRegistry;
-import org.apache.http.client.AuthenticationHandler;
-import org.apache.http.client.CookieStore;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.HttpRequestRetryHandler;
-import org.apache.http.client.RedirectHandler;
-import org.apache.http.client.UserTokenHandler;
-import org.apache.http.client.params.AuthPolicy;
-import org.apache.http.client.params.ClientPNames;
-import org.apache.http.client.params.CookiePolicy;
-import org.apache.http.client.protocol.ClientContext;
-import org.apache.http.client.protocol.RequestAddCookies;
-import org.apache.http.client.protocol.RequestDefaultHeaders;
-import org.apache.http.client.protocol.RequestProxyAuthentication;
-import org.apache.http.client.protocol.RequestTargetAuthentication;
-import org.apache.http.client.protocol.ResponseProcessCookies;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.ClientConnectionManagerFactory;
-import org.apache.http.conn.ConnectionKeepAliveStrategy;
-import org.apache.http.conn.routing.HttpRoutePlanner;
-import org.apache.http.conn.scheme.PlainSocketFactory;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-import org.apache.http.cookie.CookieSpecRegistry;
-import org.apache.http.impl.DefaultConnectionReuseStrategy;
-import org.apache.http.impl.auth.BasicSchemeFactory;
-import org.apache.http.impl.auth.DigestSchemeFactory;
-import org.apache.http.impl.conn.DefaultHttpRoutePlanner;
-import org.apache.http.impl.conn.SingleClientConnManager;
-import org.apache.http.impl.cookie.BestMatchSpecFactory;
-import org.apache.http.impl.cookie.BrowserCompatSpecFactory;
-import org.apache.http.impl.cookie.NetscapeDraftSpecFactory;
-import org.apache.http.impl.cookie.RFC2109SpecFactory;
-import org.apache.http.impl.cookie.RFC2965SpecFactory;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.HttpProtocolParams;
-import org.apache.http.protocol.BasicHttpContext;
-import org.apache.http.protocol.BasicHttpProcessor;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpRequestExecutor;
-import org.apache.http.protocol.RequestConnControl;
-import org.apache.http.protocol.RequestContent;
-import org.apache.http.protocol.RequestExpectContinue;
-import org.apache.http.protocol.RequestTargetHost;
-import org.apache.http.protocol.RequestUserAgent;
-import org.apache.http.util.VersionInfo;
-
-
-
-/**
- * Default implementation of an HTTP client.
- * <br/>
- * This class replaces <code>HttpClient</code> in HttpClient 3.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 677250 $
- *
- * @since 4.0
- */
-public class DefaultHttpClient extends AbstractHttpClient {
-
-
-    /**
-     * Creates a new HTTP client from parameters and a connection manager.
-     *
-     * @param params    the parameters
-     * @param conman    the connection manager
-     */
-    public DefaultHttpClient(
-            final ClientConnectionManager conman,
-            final HttpParams params) {
-        super(conman, params);
-    }
-    
-       
-    public DefaultHttpClient(final HttpParams params) {
-        super(null, params);
-    }
-
-    
-    public DefaultHttpClient() {
-        super(null, null);
-    }
-
-    
-    @Override
-    protected HttpParams createHttpParams() {
-        HttpParams params = new BasicHttpParams();
-        HttpProtocolParams.setVersion(params, 
-                HttpVersion.HTTP_1_1);
-        HttpProtocolParams.setContentCharset(params, 
-                HTTP.DEFAULT_CONTENT_CHARSET);
-        HttpProtocolParams.setUseExpectContinue(params, 
-                true);
-
-        // determine the release version from packaged version info
-        final VersionInfo vi = VersionInfo.loadVersionInfo
-            ("org.apache.http.client", getClass().getClassLoader());
-        final String release = (vi != null) ?
-            vi.getRelease() : VersionInfo.UNAVAILABLE;
-        HttpProtocolParams.setUserAgent(params, 
-                "Apache-HttpClient/" + release + " (java 1.4)");
-
-        return params;
-    }
-
-    
-    @Override
-    protected HttpRequestExecutor createRequestExecutor() {
-        return new HttpRequestExecutor();
-    }
-
-
-    @Override
-    protected ClientConnectionManager createClientConnectionManager() {
-        SchemeRegistry registry = new SchemeRegistry();
-        registry.register(
-                new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
-        registry.register(
-                new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
-
-        ClientConnectionManager connManager = null;     
-        HttpParams params = getParams();
-        
-        ClientConnectionManagerFactory factory = null;
-
-        // Try first getting the factory directly as an object.
-        factory = (ClientConnectionManagerFactory) params
-                .getParameter(ClientPNames.CONNECTION_MANAGER_FACTORY);
-        if (factory == null) { // then try getting its class name.
-            String className = (String) params.getParameter(
-                    ClientPNames.CONNECTION_MANAGER_FACTORY_CLASS_NAME);
-            if (className != null) {
-                try {
-                    Class<?> clazz = Class.forName(className);
-                    factory = (ClientConnectionManagerFactory) clazz.newInstance();
-                } catch (ClassNotFoundException ex) {
-                    throw new IllegalStateException("Invalid class name: " + className);
-                } catch (IllegalAccessException ex) {
-                    throw new IllegalAccessError(ex.getMessage());
-                } catch (InstantiationException ex) {
-                    throw new InstantiationError(ex.getMessage());
-                }
-            }
-        }
-        
-        if(factory != null) {
-            connManager = factory.newInstance(params, registry);
-        } else {
-            connManager = new SingleClientConnManager(getParams(), registry); 
-        }
-        
-        return connManager;
-    }
-
-
-    @Override
-    protected HttpContext createHttpContext() {
-        HttpContext context = new BasicHttpContext();
-        context.setAttribute(
-                ClientContext.AUTHSCHEME_REGISTRY, 
-                getAuthSchemes());
-        context.setAttribute(
-                ClientContext.COOKIESPEC_REGISTRY, 
-                getCookieSpecs());
-        context.setAttribute(
-                ClientContext.COOKIE_STORE, 
-                getCookieStore());
-        context.setAttribute(
-                ClientContext.CREDS_PROVIDER, 
-                getCredentialsProvider());
-        return context;
-    }
-
-    
-    @Override
-    protected ConnectionReuseStrategy createConnectionReuseStrategy() {
-        return new DefaultConnectionReuseStrategy();
-    }
-    
-    @Override
-    protected ConnectionKeepAliveStrategy createConnectionKeepAliveStrategy() {
-        return new DefaultConnectionKeepAliveStrategy();
-    }
-    
-
-    @Override
-    protected AuthSchemeRegistry createAuthSchemeRegistry() {
-        AuthSchemeRegistry registry = new AuthSchemeRegistry(); 
-        registry.register(
-                AuthPolicy.BASIC, 
-                new BasicSchemeFactory());
-        registry.register(
-                AuthPolicy.DIGEST, 
-                new DigestSchemeFactory());
-        return registry;
-    }
-
-
-    @Override
-    protected CookieSpecRegistry createCookieSpecRegistry() {
-        CookieSpecRegistry registry = new CookieSpecRegistry();
-        registry.register(
-                CookiePolicy.BEST_MATCH, 
-                new BestMatchSpecFactory());
-        registry.register(
-                CookiePolicy.BROWSER_COMPATIBILITY, 
-                new BrowserCompatSpecFactory());
-        registry.register(
-                CookiePolicy.NETSCAPE, 
-                new NetscapeDraftSpecFactory());
-        registry.register(
-                CookiePolicy.RFC_2109, 
-                new RFC2109SpecFactory());
-        registry.register(
-                CookiePolicy.RFC_2965, 
-                new RFC2965SpecFactory());
-        return registry;
-    }
-
-
-    @Override
-    protected BasicHttpProcessor createHttpProcessor() {
-        BasicHttpProcessor httpproc = new BasicHttpProcessor();
-        httpproc.addInterceptor(new RequestDefaultHeaders());
-        // Required protocol interceptors
-        httpproc.addInterceptor(new RequestContent());
-        httpproc.addInterceptor(new RequestTargetHost());
-        // Recommended protocol interceptors
-        httpproc.addInterceptor(new RequestConnControl());
-        httpproc.addInterceptor(new RequestUserAgent());
-        httpproc.addInterceptor(new RequestExpectContinue());
-        // HTTP state management interceptors
-        httpproc.addInterceptor(new RequestAddCookies());
-        httpproc.addInterceptor(new ResponseProcessCookies());
-        // HTTP authentication interceptors
-        httpproc.addInterceptor(new RequestTargetAuthentication());
-        httpproc.addInterceptor(new RequestProxyAuthentication());
-        return httpproc;
-    }
-
-
-    @Override
-    protected HttpRequestRetryHandler createHttpRequestRetryHandler() {
-        return new DefaultHttpRequestRetryHandler();
-    }
-
-
-    @Override
-    protected RedirectHandler createRedirectHandler() {
-        return new DefaultRedirectHandler();
-    }
-
-
-    @Override
-    protected AuthenticationHandler createTargetAuthenticationHandler() {
-        return new DefaultTargetAuthenticationHandler();
-    }
-
-
-    @Override
-    protected AuthenticationHandler createProxyAuthenticationHandler() {
-        return new DefaultProxyAuthenticationHandler();
-    }
-
-
-    @Override
-    protected CookieStore createCookieStore() {
-        return new BasicCookieStore();
-    }
-
-
-    @Override
-    protected CredentialsProvider createCredentialsProvider() {
-        return new BasicCredentialsProvider();
-    }
-
-
-    @Override
-    protected HttpRoutePlanner createHttpRoutePlanner() {
-        return new DefaultHttpRoutePlanner
-            (getConnectionManager().getSchemeRegistry());
-    }
-
-
-    @Override
-    protected UserTokenHandler createUserTokenHandler() {
-        return new DefaultUserTokenHandler();
-    }
-    
-} // class DefaultHttpClient
diff --git a/src/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java b/src/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java
deleted file mode 100644
index 7f66990..0000000
--- a/src/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java $
- * $Revision: 652726 $
- * $Date: 2008-05-01 18:16:51 -0700 (Thu, 01 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.impl.client;
-
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.net.UnknownHostException;
-
-import javax.net.ssl.SSLHandshakeException;
-
-import org.apache.http.NoHttpResponseException;
-import org.apache.http.client.HttpRequestRetryHandler;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.ExecutionContext;
-
-/**
- * The default {@link HttpRequestRetryHandler} used by request executors.
- * 
- * @author Michael Becke
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public class DefaultHttpRequestRetryHandler implements HttpRequestRetryHandler {
-
-    /** the number of times a method will be retried */
-    private final int retryCount;
-    
-    /** Whether or not methods that have successfully sent their request will be retried */
-    private final boolean requestSentRetryEnabled;
-    
-    /**
-     * Default constructor
-     */
-    public DefaultHttpRequestRetryHandler(int retryCount, boolean requestSentRetryEnabled) {
-        super();
-        this.retryCount = retryCount;
-        this.requestSentRetryEnabled = requestSentRetryEnabled;
-    }
-    
-    /**
-     * Default constructor
-     */
-    public DefaultHttpRequestRetryHandler() {
-        this(3, false);
-    }
-    /** 
-     * Used <code>retryCount</code> and <code>requestSentRetryEnabled</code> to determine
-     * if the given method should be retried.
-     */
-    public boolean retryRequest(
-            final IOException exception, 
-            int executionCount,
-            final HttpContext context) {
-        if (exception == null) {
-            throw new IllegalArgumentException("Exception parameter may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-        if (executionCount > this.retryCount) {
-            // Do not retry if over max retry count
-            return false;
-        }
-        if (exception instanceof NoHttpResponseException) {
-            // Retry if the server dropped connection on us
-            return true;
-        }
-        if (exception instanceof InterruptedIOException) {
-            // Timeout
-            return false;
-        }
-        if (exception instanceof UnknownHostException) {
-            // Unknown host
-            return false;
-        }
-        if (exception instanceof SSLHandshakeException) {
-            // SSL handshake exception
-            return false;
-        }
-        Boolean b = (Boolean)
-            context.getAttribute(ExecutionContext.HTTP_REQ_SENT);
-        boolean sent = (b != null && b.booleanValue());
-        if (!sent || this.requestSentRetryEnabled) {
-            // Retry if the request has not been sent fully or
-            // if it's OK to retry methods that have been sent
-            return true;
-        }
-        // otherwise do not retry
-        return false;
-    }
-    
-    /**
-     * @return <code>true</code> if this handler will retry methods that have 
-     * successfully sent their request, <code>false</code> otherwise
-     */
-    public boolean isRequestSentRetryEnabled() {
-        return requestSentRetryEnabled;
-    }
-
-    /**
-     * @return the maximum number of times a method will be retried
-     */
-    public int getRetryCount() {
-        return retryCount;
-    }
-}
diff --git a/src/org/apache/http/impl/client/DefaultProxyAuthenticationHandler.java b/src/org/apache/http/impl/client/DefaultProxyAuthenticationHandler.java
deleted file mode 100644
index c188da8..0000000
--- a/src/org/apache/http/impl/client/DefaultProxyAuthenticationHandler.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultProxyAuthenticationHandler.java $
- * $Revision: 603615 $
- * $Date: 2007-12-12 06:03:21 -0800 (Wed, 12 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.impl.client;
-
-import java.util.Map;
-
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.auth.AUTH;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public class DefaultProxyAuthenticationHandler extends AbstractAuthenticationHandler {
-
-    public DefaultProxyAuthenticationHandler() {
-        super();
-    }
-    
-    public boolean isAuthenticationRequested(
-            final HttpResponse response, 
-            final HttpContext context) {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        int status = response.getStatusLine().getStatusCode();
-        return status == HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED;
-    }
-
-    public Map<String, Header> getChallenges(
-            final HttpResponse response, 
-            final HttpContext context) throws MalformedChallengeException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        Header[] headers = response.getHeaders(AUTH.PROXY_AUTH);
-        return parseChallenges(headers);
-    }
-
-}
diff --git a/src/org/apache/http/impl/client/DefaultRedirectHandler.java b/src/org/apache/http/impl/client/DefaultRedirectHandler.java
deleted file mode 100644
index 0811b28..0000000
--- a/src/org/apache/http/impl/client/DefaultRedirectHandler.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultRedirectHandler.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.impl.client;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.Header;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.ProtocolException;
-import org.apache.http.client.CircularRedirectException;
-import org.apache.http.client.RedirectHandler;
-import org.apache.http.client.params.ClientPNames;
-import org.apache.http.client.utils.URIUtils;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.ExecutionContext;
-
-
-/**
- * Default implementation of {@link RedirectHandler}.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 673450 $
- *
- * @since 4.0
- */
-public class DefaultRedirectHandler implements RedirectHandler {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    private static final String REDIRECT_LOCATIONS = "http.protocol.redirect-locations";
-
-    public DefaultRedirectHandler() {
-        super();
-    }
-    
-    public boolean isRedirectRequested(
-            final HttpResponse response,
-            final HttpContext context) {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        int statusCode = response.getStatusLine().getStatusCode();
-        switch (statusCode) {
-        case HttpStatus.SC_MOVED_TEMPORARILY:
-        case HttpStatus.SC_MOVED_PERMANENTLY:
-        case HttpStatus.SC_SEE_OTHER:
-        case HttpStatus.SC_TEMPORARY_REDIRECT:
-            return true;
-        default:
-            return false;
-        } //end of switch
-    }
- 
-    public URI getLocationURI(
-            final HttpResponse response, 
-            final HttpContext context) throws ProtocolException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        //get the location header to find out where to redirect to
-        Header locationHeader = response.getFirstHeader("location");
-        if (locationHeader == null) {
-            // got a redirect response, but no location header
-            throw new ProtocolException(
-                    "Received redirect response " + response.getStatusLine()
-                    + " but no location header");
-        }
-        String location = locationHeader.getValue();
-        if (this.log.isDebugEnabled()) {
-            this.log.debug("Redirect requested to location '" + location + "'");
-        }
-
-        URI uri;
-        try {
-            uri = new URI(location);            
-        } catch (URISyntaxException ex) {
-            throw new ProtocolException("Invalid redirect URI: " + location, ex);
-        }
-
-        HttpParams params = response.getParams();
-        // rfc2616 demands the location value be a complete URI
-        // Location       = "Location" ":" absoluteURI
-        if (!uri.isAbsolute()) {
-            if (params.isParameterTrue(ClientPNames.REJECT_RELATIVE_REDIRECT)) {
-                throw new ProtocolException("Relative redirect location '" 
-                        + uri + "' not allowed");
-            }
-            // Adjust location URI
-            HttpHost target = (HttpHost) context.getAttribute(
-                    ExecutionContext.HTTP_TARGET_HOST);
-            if (target == null) {
-                throw new IllegalStateException("Target host not available " +
-                        "in the HTTP context");
-            }
-            
-            HttpRequest request = (HttpRequest) context.getAttribute(
-                    ExecutionContext.HTTP_REQUEST);
-            
-            try {
-                URI requestURI = new URI(request.getRequestLine().getUri());
-                URI absoluteRequestURI = URIUtils.rewriteURI(requestURI, target, true);
-                uri = URIUtils.resolve(absoluteRequestURI, uri); 
-            } catch (URISyntaxException ex) {
-                throw new ProtocolException(ex.getMessage(), ex);
-            }
-        }
-        
-        if (params.isParameterFalse(ClientPNames.ALLOW_CIRCULAR_REDIRECTS)) {
-            
-            RedirectLocations redirectLocations = (RedirectLocations) context.getAttribute(
-                    REDIRECT_LOCATIONS);
-            
-            if (redirectLocations == null) {
-                redirectLocations = new RedirectLocations();
-                context.setAttribute(REDIRECT_LOCATIONS, redirectLocations);
-            }
-            
-            URI redirectURI;
-            if (uri.getFragment() != null) {
-                try {
-                    HttpHost target = new HttpHost(
-                            uri.getHost(), 
-                            uri.getPort(),
-                            uri.getScheme());
-                    redirectURI = URIUtils.rewriteURI(uri, target, true);
-                } catch (URISyntaxException ex) {
-                    throw new ProtocolException(ex.getMessage(), ex);
-                }
-            } else {
-                redirectURI = uri;
-            }
-            
-            if (redirectLocations.contains(redirectURI)) {
-                throw new CircularRedirectException("Circular redirect to '" +
-                        redirectURI + "'");
-            } else {
-                redirectLocations.add(redirectURI);
-            }
-        }
-        
-        return uri;
-    }
-
-}
diff --git a/src/org/apache/http/impl/client/DefaultRequestDirector.java b/src/org/apache/http/impl/client/DefaultRequestDirector.java
deleted file mode 100644
index 511f8a0..0000000
--- a/src/org/apache/http/impl/client/DefaultRequestDirector.java
+++ /dev/null
@@ -1,1088 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultRequestDirector.java $
- * $Revision: 676023 $
- * $Date: 2008-07-11 09:40:56 -0700 (Fri, 11 Jul 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.impl.client;
-
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.ConnectionReuseStrategy;
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.ProtocolException;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.AuthState;
-import org.apache.http.auth.AuthenticationException;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.client.AuthenticationHandler;
-import org.apache.http.client.RequestDirector;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.HttpRequestRetryHandler;
-import org.apache.http.client.NonRepeatableRequestException;
-import org.apache.http.client.RedirectException;
-import org.apache.http.client.RedirectHandler;
-import org.apache.http.client.UserTokenHandler;
-import org.apache.http.client.methods.AbortableHttpRequest;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.params.ClientPNames;
-import org.apache.http.client.params.HttpClientParams;
-import org.apache.http.client.protocol.ClientContext;
-import org.apache.http.client.utils.URIUtils;
-import org.apache.http.conn.BasicManagedEntity;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.ClientConnectionRequest;
-import org.apache.http.conn.ConnectionKeepAliveStrategy;
-import org.apache.http.conn.ManagedClientConnection;
-import org.apache.http.conn.params.ConnManagerParams;
-import org.apache.http.conn.routing.BasicRouteDirector;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.routing.HttpRouteDirector;
-import org.apache.http.conn.routing.HttpRoutePlanner;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.entity.BufferedHttpEntity;
-import org.apache.http.message.BasicHttpRequest;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.HttpProtocolParams;
-import org.apache.http.protocol.ExecutionContext;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpProcessor;
-import org.apache.http.protocol.HttpRequestExecutor;
-
-/**
- * Default implementation of {@link RequestDirector}.
- * <br/>
- * This class replaces the <code>HttpMethodDirector</code> in HttpClient 3.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 676023 $
- *
- * @since 4.0
- */
-public class DefaultRequestDirector implements RequestDirector {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    /** The connection manager. */
-    protected final ClientConnectionManager connManager;
-
-    /** The route planner. */
-    protected final HttpRoutePlanner routePlanner;
-
-    /** The connection re-use strategy. */
-    protected final ConnectionReuseStrategy reuseStrategy;
-    
-    /** The keep-alive duration strategy. */
-    protected final ConnectionKeepAliveStrategy keepAliveStrategy;
-
-    /** The request executor. */
-    protected final HttpRequestExecutor requestExec;
-
-    /** The HTTP protocol processor. */
-    protected final HttpProcessor httpProcessor;
-    
-    /** The request retry handler. */
-    protected final HttpRequestRetryHandler retryHandler;
-    
-    /** The redirect handler. */
-    protected final RedirectHandler redirectHandler;
-    
-    /** The target authentication handler. */
-    private final AuthenticationHandler targetAuthHandler;
-    
-    /** The proxy authentication handler. */
-    private final AuthenticationHandler proxyAuthHandler;
-    
-    /** The user token handler. */
-    private final UserTokenHandler userTokenHandler;
-    
-    /** The HTTP parameters. */
-    protected final HttpParams params;
-    
-    /** The currently allocated connection. */
-    protected ManagedClientConnection managedConn;
-
-    private int redirectCount;
-
-    private int maxRedirects;
-    
-    private final AuthState targetAuthState;
-    
-    private final AuthState proxyAuthState;
-    
-    public DefaultRequestDirector(
-            final HttpRequestExecutor requestExec,
-            final ClientConnectionManager conman,
-            final ConnectionReuseStrategy reustrat,
-            final ConnectionKeepAliveStrategy kastrat,
-            final HttpRoutePlanner rouplan,
-            final HttpProcessor httpProcessor,
-            final HttpRequestRetryHandler retryHandler,
-            final RedirectHandler redirectHandler,
-            final AuthenticationHandler targetAuthHandler,
-            final AuthenticationHandler proxyAuthHandler,
-            final UserTokenHandler userTokenHandler,
-            final HttpParams params) {
-
-        if (requestExec == null) {
-            throw new IllegalArgumentException
-                ("Request executor may not be null.");
-        }
-        if (conman == null) {
-            throw new IllegalArgumentException
-                ("Client connection manager may not be null.");
-        }
-        if (reustrat == null) {
-            throw new IllegalArgumentException
-                ("Connection reuse strategy may not be null.");
-        }
-        if (kastrat == null) {
-            throw new IllegalArgumentException
-                ("Connection keep alive strategy may not be null.");
-        }
-        if (rouplan == null) {
-            throw new IllegalArgumentException
-                ("Route planner may not be null.");
-        }
-        if (httpProcessor == null) {
-            throw new IllegalArgumentException
-                ("HTTP protocol processor may not be null.");
-        }
-        if (retryHandler == null) {
-            throw new IllegalArgumentException
-                ("HTTP request retry handler may not be null.");
-        }
-        if (redirectHandler == null) {
-            throw new IllegalArgumentException
-                ("Redirect handler may not be null.");
-        }
-        if (targetAuthHandler == null) {
-            throw new IllegalArgumentException
-                ("Target authentication handler may not be null.");
-        }
-        if (proxyAuthHandler == null) {
-            throw new IllegalArgumentException
-                ("Proxy authentication handler may not be null.");
-        }
-        if (userTokenHandler == null) {
-            throw new IllegalArgumentException
-                ("User token handler may not be null.");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("HTTP parameters may not be null");
-        }
-        this.requestExec       = requestExec;
-        this.connManager       = conman;
-        this.reuseStrategy     = reustrat;
-        this.keepAliveStrategy = kastrat;
-        this.routePlanner      = rouplan;
-        this.httpProcessor     = httpProcessor;
-        this.retryHandler      = retryHandler;
-        this.redirectHandler   = redirectHandler;
-        this.targetAuthHandler = targetAuthHandler;
-        this.proxyAuthHandler  = proxyAuthHandler;
-        this.userTokenHandler  = userTokenHandler; 
-        this.params            = params;
-
-        this.managedConn       = null;
-        
-        this.redirectCount = 0;
-        this.maxRedirects = this.params.getIntParameter(ClientPNames.MAX_REDIRECTS, 100);
-        this.targetAuthState = new AuthState();
-        this.proxyAuthState = new AuthState();
-    } // constructor
-
-
-    private RequestWrapper wrapRequest(
-            final HttpRequest request) throws ProtocolException {
-        if (request instanceof HttpEntityEnclosingRequest) {
-            return new EntityEnclosingRequestWrapper(
-                    (HttpEntityEnclosingRequest) request);
-        } else {
-            return new RequestWrapper(
-                    request);
-        }
-    }
-    
-    
-    protected void rewriteRequestURI(
-            final RequestWrapper request,
-            final HttpRoute route) throws ProtocolException {
-        try {
-            
-            URI uri = request.getURI();
-            if (route.getProxyHost() != null && !route.isTunnelled()) {
-                // Make sure the request URI is absolute
-                if (!uri.isAbsolute()) {
-                    HttpHost target = route.getTargetHost();
-                    uri = URIUtils.rewriteURI(uri, target);
-                    request.setURI(uri);
-                }
-            } else {
-                // Make sure the request URI is relative
-                if (uri.isAbsolute()) {
-                    uri = URIUtils.rewriteURI(uri, null);
-                    request.setURI(uri);
-                }
-            }
-            
-        } catch (URISyntaxException ex) {
-            throw new ProtocolException("Invalid URI: " + 
-                    request.getRequestLine().getUri(), ex);
-        }
-    }
-    
-    
-    // non-javadoc, see interface ClientRequestDirector
-    public HttpResponse execute(HttpHost target, HttpRequest request,
-                                HttpContext context)
-        throws HttpException, IOException {
-
-        HttpRequest orig = request;
-        RequestWrapper origWrapper = wrapRequest(orig);
-        origWrapper.setParams(params);
-        HttpRoute origRoute = determineRoute(target, origWrapper, context);
-
-        RoutedRequest roureq = new RoutedRequest(origWrapper, origRoute); 
-
-        long timeout = ConnManagerParams.getTimeout(params);
-        
-        int execCount = 0;
-        
-        boolean reuse = false;
-        HttpResponse response = null;
-        boolean done = false;
-        try {
-            while (!done) {
-                // In this loop, the RoutedRequest may be replaced by a
-                // followup request and route. The request and route passed
-                // in the method arguments will be replaced. The original
-                // request is still available in 'orig'.
-
-                RequestWrapper wrapper = roureq.getRequest();
-                HttpRoute route = roureq.getRoute();
-                
-                // See if we have a user token bound to the execution context
-                Object userToken = context.getAttribute(ClientContext.USER_TOKEN);
-                
-                // Allocate connection if needed
-                if (managedConn == null) {
-                    ClientConnectionRequest connRequest = connManager.requestConnection(
-                            route, userToken);
-                    if (orig instanceof AbortableHttpRequest) {
-                        ((AbortableHttpRequest) orig).setConnectionRequest(connRequest);
-                    }
-                    
-                    try {
-                        managedConn = connRequest.getConnection(timeout, TimeUnit.MILLISECONDS);
-                    } catch(InterruptedException interrupted) {
-                        InterruptedIOException iox = new InterruptedIOException();
-                        iox.initCause(interrupted);
-                        throw iox;
-                    }
-
-                    if (HttpConnectionParams.isStaleCheckingEnabled(params)) {
-                        // validate connection
-                        this.log.debug("Stale connection check");
-                        if (managedConn.isStale()) {
-                            this.log.debug("Stale connection detected");
-                            managedConn.close();
-                        }
-                    }
-                }
-
-                if (orig instanceof AbortableHttpRequest) {
-                    ((AbortableHttpRequest) orig).setReleaseTrigger(managedConn);
-                }
-
-                // Reopen connection if needed
-                if (!managedConn.isOpen()) {
-                    managedConn.open(route, context, params);
-                } 
-                
-                try {
-                    establishRoute(route, context);
-                } catch (TunnelRefusedException ex) {
-                    if (this.log.isDebugEnabled()) {
-                        this.log.debug(ex.getMessage());
-                    }
-                    response = ex.getResponse();
-                    break;
-                }
-
-                // Reset headers on the request wrapper
-                wrapper.resetHeaders();
-                
-                // Re-write request URI if needed
-                rewriteRequestURI(wrapper, route);
-
-                // Use virtual host if set
-                target = (HttpHost) wrapper.getParams().getParameter(
-                        ClientPNames.VIRTUAL_HOST);
-
-                if (target == null) {
-                    target = route.getTargetHost();
-                }
-
-                HttpHost proxy = route.getProxyHost();
-
-                // Populate the execution context
-                context.setAttribute(ExecutionContext.HTTP_TARGET_HOST,
-                        target);
-                context.setAttribute(ExecutionContext.HTTP_PROXY_HOST,
-                        proxy);
-                context.setAttribute(ExecutionContext.HTTP_CONNECTION,
-                        managedConn);
-                context.setAttribute(ClientContext.TARGET_AUTH_STATE,
-                        targetAuthState);
-                context.setAttribute(ClientContext.PROXY_AUTH_STATE,
-                        proxyAuthState);
-                
-                // Run request protocol interceptors
-                requestExec.preProcess(wrapper, httpProcessor, context);
-                
-                context.setAttribute(ExecutionContext.HTTP_REQUEST,
-                        wrapper);
-
-                boolean retrying = true;
-                while (retrying) {
-                    // Increment total exec count (with redirects)
-                    execCount++;
-                    // Increment exec count for this particular request
-                    wrapper.incrementExecCount();
-                    if (wrapper.getExecCount() > 1 && !wrapper.isRepeatable()) {
-                        throw new NonRepeatableRequestException("Cannot retry request " +
-                                "with a non-repeatable request entity");
-                    }
-                    
-                    try {
-                        if (this.log.isDebugEnabled()) {
-                            this.log.debug("Attempt " + execCount + " to execute request");
-                        }
-                        response = requestExec.execute(wrapper, managedConn, context);
-                        retrying = false;
-                        
-                    } catch (IOException ex) {
-                        this.log.debug("Closing the connection.");
-                        managedConn.close();
-                        if (retryHandler.retryRequest(ex, execCount, context)) {
-                            if (this.log.isInfoEnabled()) {
-                                this.log.info("I/O exception ("+ ex.getClass().getName() + 
-                                        ") caught when processing request: "
-                                        + ex.getMessage());
-                            }
-                            if (this.log.isDebugEnabled()) {
-                                this.log.debug(ex.getMessage(), ex);
-                            }
-                            this.log.info("Retrying request");
-                        } else {
-                            throw ex;
-                        }
-
-                        // If we have a direct route to the target host
-                        // just re-open connection and re-try the request
-                        if (route.getHopCount() == 1) {
-                            this.log.debug("Reopening the direct connection.");
-                            managedConn.open(route, context, params);
-                        } else {
-                            // otherwise give up
-                            retrying = false;
-                        }
-                        
-                    }
-
-                }
-
-                // Run response protocol interceptors
-                response.setParams(params);
-                requestExec.postProcess(response, httpProcessor, context);
-                
-
-                // The connection is in or can be brought to a re-usable state.
-                reuse = reuseStrategy.keepAlive(response, context);
-                if(reuse) {
-                    // Set the idle duration of this connection
-                    long duration = keepAliveStrategy.getKeepAliveDuration(response, context);
-                    managedConn.setIdleDuration(duration, TimeUnit.MILLISECONDS);
-                }
-                
-                RoutedRequest followup = handleResponse(roureq, response, context);
-                if (followup == null) {
-                    done = true;
-                } else {
-                    if (reuse) {
-                        this.log.debug("Connection kept alive");
-                        // Make sure the response body is fully consumed, if present
-                        HttpEntity entity = response.getEntity();
-                        if (entity != null) {
-                            entity.consumeContent();
-                        }
-                        // entity consumed above is not an auto-release entity,
-                        // need to mark the connection re-usable explicitly
-                        managedConn.markReusable();
-                    } else {
-                        managedConn.close();
-                    }
-                    // check if we can use the same connection for the followup
-                    if (!followup.getRoute().equals(roureq.getRoute())) {
-                        releaseConnection();
-                    }
-                    roureq = followup;
-                }
-                
-                userToken = this.userTokenHandler.getUserToken(context);
-                context.setAttribute(ClientContext.USER_TOKEN, userToken);
-                if (managedConn != null) {
-                    managedConn.setState(userToken);
-                }
-            } // while not done
-
-
-            // check for entity, release connection if possible
-            if ((response == null) || (response.getEntity() == null) ||
-                !response.getEntity().isStreaming()) {
-                // connection not needed and (assumed to be) in re-usable state
-                if (reuse)
-                    managedConn.markReusable();
-                releaseConnection();
-            } else {
-                // install an auto-release entity
-                HttpEntity entity = response.getEntity();
-                entity = new BasicManagedEntity(entity, managedConn, reuse);
-                response.setEntity(entity);
-            }
-
-            return response;
-            
-        } catch (HttpException ex) {
-            abortConnection();
-            throw ex;
-        } catch (IOException ex) {
-            abortConnection();
-            throw ex;
-        } catch (RuntimeException ex) {
-            abortConnection();
-            throw ex;
-        }
-    } // execute
-
-    /**
-     * Returns the connection back to the connection manager
-     * and prepares for retrieving a new connection during
-     * the next request.
-     */
-    protected void releaseConnection() {
-        // Release the connection through the ManagedConnection instead of the
-        // ConnectionManager directly.  This lets the connection control how
-        // it is released.
-        try {
-            managedConn.releaseConnection();
-        } catch(IOException ignored) {
-            this.log.debug("IOException releasing connection", ignored);
-        }
-        managedConn = null;
-    }
-
-    /**
-     * Determines the route for a request.
-     * Called by {@link #execute}
-     * to determine the route for either the original or a followup request.
-     *
-     * @param target    the target host for the request.
-     *                  Implementations may accept <code>null</code>
-     *                  if they can still determine a route, for example
-     *                  to a default target or by inspecting the request.
-     * @param request   the request to execute
-     * @param context   the context to use for the execution,
-     *                  never <code>null</code>
-     *
-     * @return  the route the request should take
-     *
-     * @throws HttpException    in case of a problem
-     */
-    protected HttpRoute determineRoute(HttpHost    target,
-                                           HttpRequest request,
-                                           HttpContext context)
-        throws HttpException {
-
-        if (target == null) {
-            target = (HttpHost) request.getParams().getParameter(
-                ClientPNames.DEFAULT_HOST);
-        }
-        if (target == null) {
-            throw new IllegalStateException
-                ("Target host must not be null, or set in parameters.");
-        }
-
-        return this.routePlanner.determineRoute(target, request, context);
-    }
-
-
-    /**
-     * Establishes the target route.
-     *
-     * @param route     the route to establish
-     * @param context   the context for the request execution
-     *
-     * @throws HttpException    in case of a problem
-     * @throws IOException      in case of an IO problem
-     */
-    protected void establishRoute(HttpRoute route, HttpContext context)
-        throws HttpException, IOException {
-
-        //@@@ how to handle CONNECT requests for tunnelling?
-        //@@@ refuse to send external CONNECT via director? special handling?
-
-        //@@@ should the request parameters already be used below?
-        //@@@ probably yes, but they're not linked yet
-        //@@@ will linking above cause problems with linking in reqExec?
-        //@@@ probably not, because the parent is replaced
-        //@@@ just make sure we don't link parameters to themselves
-
-        HttpRouteDirector rowdy = new BasicRouteDirector();
-        int step;
-        do {
-            HttpRoute fact = managedConn.getRoute();
-            step = rowdy.nextStep(route, fact);
-
-            switch (step) {
-
-            case HttpRouteDirector.CONNECT_TARGET:
-            case HttpRouteDirector.CONNECT_PROXY:
-                managedConn.open(route, context, this.params);
-                break;
-
-            case HttpRouteDirector.TUNNEL_TARGET: {
-                boolean secure = createTunnelToTarget(route, context);
-                this.log.debug("Tunnel to target created.");
-                managedConn.tunnelTarget(secure, this.params);
-            }   break;
-
-            case HttpRouteDirector.TUNNEL_PROXY: {
-                // The most simple example for this case is a proxy chain
-                // of two proxies, where P1 must be tunnelled to P2.
-                // route: Source -> P1 -> P2 -> Target (3 hops)
-                // fact:  Source -> P1 -> Target       (2 hops)
-                final int hop = fact.getHopCount()-1; // the hop to establish
-                boolean secure = createTunnelToProxy(route, hop, context);
-                this.log.debug("Tunnel to proxy created.");
-                managedConn.tunnelProxy(route.getHopTarget(hop),
-                                        secure, this.params);
-            }   break;
-
-
-            case HttpRouteDirector.LAYER_PROTOCOL:
-                managedConn.layerProtocol(context, this.params);
-                break;
-
-            case HttpRouteDirector.UNREACHABLE:
-                throw new IllegalStateException
-                    ("Unable to establish route." +
-                     "\nplanned = " + route +
-                     "\ncurrent = " + fact);
-
-            case HttpRouteDirector.COMPLETE:
-                // do nothing
-                break;
-
-            default:
-                throw new IllegalStateException
-                    ("Unknown step indicator "+step+" from RouteDirector.");
-            } // switch
-
-        } while (step > HttpRouteDirector.COMPLETE);
-
-    } // establishConnection
-
-
-    /**
-     * Creates a tunnel to the target server.
-     * The connection must be established to the (last) proxy.
-     * A CONNECT request for tunnelling through the proxy will
-     * be created and sent, the response received and checked.
-     * This method does <i>not</i> update the connection with
-     * information about the tunnel, that is left to the caller.
-     *
-     * @param route     the route to establish
-     * @param context   the context for request execution
-     *
-     * @return  <code>true</code> if the tunnelled route is secure,
-     *          <code>false</code> otherwise.
-     *          The implementation here always returns <code>false</code>,
-     *          but derived classes may override.
-     *
-     * @throws HttpException    in case of a problem
-     * @throws IOException      in case of an IO problem
-     */
-    protected boolean createTunnelToTarget(HttpRoute route,
-                                           HttpContext context)
-        throws HttpException, IOException {
-
-        HttpHost proxy = route.getProxyHost();
-        HttpHost target = route.getTargetHost();
-        HttpResponse response = null;
-        
-        boolean done = false;
-        while (!done) {
-
-            done = true;
-            
-            if (!this.managedConn.isOpen()) {
-                this.managedConn.open(route, context, this.params);
-            }
-            
-            HttpRequest connect = createConnectRequest(route, context);
-            
-            String agent = HttpProtocolParams.getUserAgent(params);
-            if (agent != null) {
-                connect.addHeader(HTTP.USER_AGENT, agent);
-            }
-            connect.addHeader(HTTP.TARGET_HOST, target.toHostString());
-            
-            AuthScheme authScheme = this.proxyAuthState.getAuthScheme();
-            AuthScope authScope = this.proxyAuthState.getAuthScope();
-            Credentials creds = this.proxyAuthState.getCredentials();
-            if (creds != null) {
-                if (authScope != null || !authScheme.isConnectionBased()) {
-                    try {
-                        connect.addHeader(authScheme.authenticate(creds, connect));
-                    } catch (AuthenticationException ex) {
-                        if (this.log.isErrorEnabled()) {
-                            this.log.error("Proxy authentication error: " + ex.getMessage());
-                        }
-                    }
-                }
-            }
-            
-            response = requestExec.execute(connect, this.managedConn, context);
-            
-            int status = response.getStatusLine().getStatusCode();
-            if (status < 200) {
-                throw new HttpException("Unexpected response to CONNECT request: " +
-                        response.getStatusLine());
-            }
-            
-            CredentialsProvider credsProvider = (CredentialsProvider)
-                context.getAttribute(ClientContext.CREDS_PROVIDER);
-            
-            if (credsProvider != null && HttpClientParams.isAuthenticating(params)) {
-                if (this.proxyAuthHandler.isAuthenticationRequested(response, context)) {
-
-                    this.log.debug("Proxy requested authentication");
-                    Map<String, Header> challenges = this.proxyAuthHandler.getChallenges(
-                            response, context);
-                    try {
-                        processChallenges(
-                                challenges, this.proxyAuthState, this.proxyAuthHandler, 
-                                response, context);
-                    } catch (AuthenticationException ex) {
-                        if (this.log.isWarnEnabled()) {
-                            this.log.warn("Authentication error: " +  ex.getMessage());
-                            break;
-                        }
-                    }
-                    updateAuthState(this.proxyAuthState, proxy, credsProvider);
-                    
-                    if (this.proxyAuthState.getCredentials() != null) {
-                        done = false;
-
-                        // Retry request
-                        if (this.reuseStrategy.keepAlive(response, context)) {
-                            this.log.debug("Connection kept alive");
-                            // Consume response content
-                            HttpEntity entity = response.getEntity();
-                            if (entity != null) {
-                                entity.consumeContent();
-                            }                
-                        } else {
-                            this.managedConn.close();
-                        }
-                        
-                    }
-                    
-                } else {
-                    // Reset proxy auth scope
-                    this.proxyAuthState.setAuthScope(null);
-                }
-            }
-        }
-        
-        int status = response.getStatusLine().getStatusCode();
-
-        if (status > 299) {
-
-            // Buffer response content
-            HttpEntity entity = response.getEntity();
-            if (entity != null) {
-                response.setEntity(new BufferedHttpEntity(entity));
-            }                
-            
-            this.managedConn.close();
-            throw new TunnelRefusedException("CONNECT refused by proxy: " +
-                    response.getStatusLine(), response);
-        }
-
-        this.managedConn.markReusable();
-        
-        // How to decide on security of the tunnelled connection?
-        // The socket factory knows only about the segment to the proxy.
-        // Even if that is secure, the hop to the target may be insecure.
-        // Leave it to derived classes, consider insecure by default here.
-        return false;
-
-    } // createTunnelToTarget
-
-
-
-    /**
-     * Creates a tunnel to an intermediate proxy.
-     * This method is <i>not</i> implemented in this class.
-     * It just throws an exception here.
-     *
-     * @param route     the route to establish
-     * @param hop       the hop in the route to establish now.
-     *                  <code>route.getHopTarget(hop)</code>
-     *                  will return the proxy to tunnel to.
-     * @param context   the context for request execution
-     *
-     * @return  <code>true</code> if the partially tunnelled connection
-     *          is secure, <code>false</code> otherwise.
-     *
-     * @throws HttpException    in case of a problem
-     * @throws IOException      in case of an IO problem
-     */
-    protected boolean createTunnelToProxy(HttpRoute route, int hop,
-                                          HttpContext context)
-        throws HttpException, IOException {
-
-        // Have a look at createTunnelToTarget and replicate the parts
-        // you need in a custom derived class. If your proxies don't require
-        // authentication, it is not too hard. But for the stock version of
-        // HttpClient, we cannot make such simplifying assumptions and would
-        // have to include proxy authentication code. The HttpComponents team
-        // is currently not in a position to support rarely used code of this
-        // complexity. Feel free to submit patches that refactor the code in
-        // createTunnelToTarget to facilitate re-use for proxy tunnelling.
-
-        throw new UnsupportedOperationException
-            ("Proxy chains are not supported.");
-    }
-
-
-
-    /**
-     * Creates the CONNECT request for tunnelling.
-     * Called by {@link #createTunnelToTarget createTunnelToTarget}.
-     *
-     * @param route     the route to establish
-     * @param context   the context for request execution
-     *
-     * @return  the CONNECT request for tunnelling
-     */
-    protected HttpRequest createConnectRequest(HttpRoute route,
-                                               HttpContext context) {
-        // see RFC 2817, section 5.2 and 
-        // INTERNET-DRAFT: Tunneling TCP based protocols through 
-        // Web proxy servers
-            
-        HttpHost target = route.getTargetHost();
-        
-        String host = target.getHostName();
-        int port = target.getPort();
-        if (port < 0) {
-            Scheme scheme = connManager.getSchemeRegistry().
-                getScheme(target.getSchemeName());
-            port = scheme.getDefaultPort();
-        }
-        
-        StringBuilder buffer = new StringBuilder(host.length() + 6);
-        buffer.append(host);
-        buffer.append(':');
-        buffer.append(Integer.toString(port));
-        
-        String authority = buffer.toString();
-        ProtocolVersion ver = HttpProtocolParams.getVersion(params);
-        HttpRequest req = new BasicHttpRequest
-            ("CONNECT", authority, ver);
-
-        return req;
-    }
-
-
-    /**
-     * Analyzes a response to check need for a followup.
-     *
-     * @param roureq    the request and route. 
-     * @param response  the response to analayze
-     * @param context   the context used for the current request execution
-     *
-     * @return  the followup request and route if there is a followup, or
-     *          <code>null</code> if the response should be returned as is
-     *
-     * @throws HttpException    in case of a problem
-     * @throws IOException      in case of an IO problem
-     */
-    protected RoutedRequest handleResponse(RoutedRequest roureq,
-                                           HttpResponse response,
-                                           HttpContext context)
-        throws HttpException, IOException {
-
-        HttpRoute route = roureq.getRoute();
-        HttpHost proxy = route.getProxyHost();
-        RequestWrapper request = roureq.getRequest();
-        
-        HttpParams params = request.getParams();
-        if (HttpClientParams.isRedirecting(params) && 
-                this.redirectHandler.isRedirectRequested(response, context)) {
-
-            if (redirectCount >= maxRedirects) {
-                throw new RedirectException("Maximum redirects ("
-                        + maxRedirects + ") exceeded");
-            }
-            redirectCount++;
-            
-            URI uri = this.redirectHandler.getLocationURI(response, context);
-
-            HttpHost newTarget = new HttpHost(
-                    uri.getHost(), 
-                    uri.getPort(),
-                    uri.getScheme());
-            
-            HttpGet redirect = new HttpGet(uri);
-            
-            HttpRequest orig = request.getOriginal();
-            redirect.setHeaders(orig.getAllHeaders());
-            
-            RequestWrapper wrapper = new RequestWrapper(redirect);
-            wrapper.setParams(params);
-            
-            HttpRoute newRoute = determineRoute(newTarget, wrapper, context);
-            RoutedRequest newRequest = new RoutedRequest(wrapper, newRoute);
-            
-            if (this.log.isDebugEnabled()) {
-                this.log.debug("Redirecting to '" + uri + "' via " + newRoute);
-            }
-            
-            return newRequest;
-        }
-
-        CredentialsProvider credsProvider = (CredentialsProvider)
-            context.getAttribute(ClientContext.CREDS_PROVIDER);
-    
-        if (credsProvider != null && HttpClientParams.isAuthenticating(params)) {
-
-            if (this.targetAuthHandler.isAuthenticationRequested(response, context)) {
-
-                HttpHost target = (HttpHost)
-                    context.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
-                if (target == null) {
-                    target = route.getTargetHost();
-                }
-                
-                this.log.debug("Target requested authentication");
-                Map<String, Header> challenges = this.targetAuthHandler.getChallenges(
-                        response, context); 
-                try {
-                    processChallenges(challenges, 
-                            this.targetAuthState, this.targetAuthHandler,
-                            response, context);
-                } catch (AuthenticationException ex) {
-                    if (this.log.isWarnEnabled()) {
-                        this.log.warn("Authentication error: " +  ex.getMessage());
-                        return null;
-                    }
-                }
-                updateAuthState(this.targetAuthState, target, credsProvider);
-                
-                if (this.targetAuthState.getCredentials() != null) {
-                    // Re-try the same request via the same route
-                    return roureq;
-                } else {
-                    return null;
-                }
-            } else {
-                // Reset target auth scope
-                this.targetAuthState.setAuthScope(null);
-            }
-            
-            if (this.proxyAuthHandler.isAuthenticationRequested(response, context)) {
-
-                this.log.debug("Proxy requested authentication");
-                Map<String, Header> challenges = this.proxyAuthHandler.getChallenges(
-                        response, context);
-                try {
-                    processChallenges(challenges, 
-                            this.proxyAuthState, this.proxyAuthHandler, 
-                            response, context);
-                } catch (AuthenticationException ex) {
-                    if (this.log.isWarnEnabled()) {
-                        this.log.warn("Authentication error: " +  ex.getMessage());
-                        return null;
-                    }
-                }
-                updateAuthState(this.proxyAuthState, proxy, credsProvider);
-                
-                if (this.proxyAuthState.getCredentials() != null) {
-                    // Re-try the same request via the same route
-                    return roureq;
-                } else {
-                    return null;
-                }
-            } else {
-                // Reset proxy auth scope
-                this.proxyAuthState.setAuthScope(null);
-            }
-        }
-        return null;
-    } // handleResponse
-
-
-    /**
-     * Shuts down the connection.
-     * This method is called from a <code>catch</code> block in
-     * {@link #execute execute} during exception handling.
-     */
-    private void abortConnection() {
-        ManagedClientConnection mcc = managedConn;
-        if (mcc != null) {
-            // we got here as the result of an exception
-            // no response will be returned, release the connection
-            managedConn = null;
-            try {
-                mcc.abortConnection();
-            } catch (IOException ex) {
-                if (this.log.isDebugEnabled()) {
-                    this.log.debug(ex.getMessage(), ex);
-                }
-            }
-            // ensure the connection manager properly releases this connection
-            try {
-                mcc.releaseConnection();
-            } catch(IOException ignored) {
-                this.log.debug("Error releasing connection", ignored);
-            }
-        }
-    } // abortConnection
-
-
-    private void processChallenges(
-            final Map<String, Header> challenges, 
-            final AuthState authState,
-            final AuthenticationHandler authHandler,
-            final HttpResponse response, 
-            final HttpContext context) 
-                throws MalformedChallengeException, AuthenticationException {
-        
-        AuthScheme authScheme = authState.getAuthScheme();
-        if (authScheme == null) {
-            // Authentication not attempted before
-            authScheme = authHandler.selectScheme(challenges, response, context);
-            authState.setAuthScheme(authScheme);
-        }
-        String id = authScheme.getSchemeName();
-
-        Header challenge = challenges.get(id.toLowerCase(Locale.ENGLISH));
-        if (challenge == null) {
-            throw new AuthenticationException(id + 
-                " authorization challenge expected, but not found");
-        }
-        authScheme.processChallenge(challenge);
-        this.log.debug("Authorization challenge processed");
-    }
-    
-    
-    private void updateAuthState(
-            final AuthState authState, 
-            final HttpHost host,
-            final CredentialsProvider credsProvider) {
-        
-        if (!authState.isValid()) {
-            return;
-        }
-        
-        String hostname = host.getHostName();
-        int port = host.getPort();
-        if (port < 0) {
-            Scheme scheme = connManager.getSchemeRegistry().getScheme(host);
-            port = scheme.getDefaultPort();
-        }
-        
-        AuthScheme authScheme = authState.getAuthScheme();
-        AuthScope authScope = new AuthScope(
-                hostname,
-                port,
-                authScheme.getRealm(), 
-                authScheme.getSchemeName());  
-        
-        if (this.log.isDebugEnabled()) {
-            this.log.debug("Authentication scope: " + authScope);
-        }
-        Credentials creds = authState.getCredentials();
-        if (creds == null) {
-            creds = credsProvider.getCredentials(authScope);
-            if (this.log.isDebugEnabled()) {
-                if (creds != null) {
-                    this.log.debug("Found credentials");
-                } else {
-                    this.log.debug("Credentials not found");
-                }
-            }
-        } else {
-            if (authScheme.isComplete()) {
-                this.log.debug("Authentication failed");
-                creds = null;
-            }
-        }
-        authState.setAuthScope(authScope);
-        authState.setCredentials(creds);
-    }
-    
-} // class DefaultClientRequestDirector
diff --git a/src/org/apache/http/impl/client/DefaultTargetAuthenticationHandler.java b/src/org/apache/http/impl/client/DefaultTargetAuthenticationHandler.java
deleted file mode 100644
index 5794549..0000000
--- a/src/org/apache/http/impl/client/DefaultTargetAuthenticationHandler.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultTargetAuthenticationHandler.java $
- * $Revision: 603615 $
- * $Date: 2007-12-12 06:03:21 -0800 (Wed, 12 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.impl.client;
-
-import java.util.Map;
-
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.auth.AUTH;
-import org.apache.http.auth.MalformedChallengeException;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public class DefaultTargetAuthenticationHandler extends AbstractAuthenticationHandler {
-
-    public DefaultTargetAuthenticationHandler() {
-        super();
-    }
-    
-    public boolean isAuthenticationRequested(
-            final HttpResponse response, 
-            final HttpContext context) {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        int status = response.getStatusLine().getStatusCode();
-        return status == HttpStatus.SC_UNAUTHORIZED;
-    }
-
-    public Map<String, Header> getChallenges(
-            final HttpResponse response, 
-            final HttpContext context) throws MalformedChallengeException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        Header[] headers = response.getHeaders(AUTH.WWW_AUTH);
-        return parseChallenges(headers);
-    }
-
-}
diff --git a/src/org/apache/http/impl/client/DefaultUserTokenHandler.java b/src/org/apache/http/impl/client/DefaultUserTokenHandler.java
deleted file mode 100644
index c8a409f..0000000
--- a/src/org/apache/http/impl/client/DefaultUserTokenHandler.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultUserTokenHandler.java $
- * $Revision: 659971 $
- * $Date: 2008-05-25 05:01:22 -0700 (Sun, 25 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.impl.client;
-
-import java.security.Principal;
-
-import javax.net.ssl.SSLSession;
-
-import org.apache.http.auth.AuthScheme;
-import org.apache.http.auth.AuthState;
-import org.apache.http.auth.Credentials;
-import org.apache.http.client.UserTokenHandler;
-import org.apache.http.client.protocol.ClientContext;
-import org.apache.http.conn.ManagedClientConnection;
-import org.apache.http.protocol.ExecutionContext;
-import org.apache.http.protocol.HttpContext;
-
-public class DefaultUserTokenHandler implements UserTokenHandler {
-
-    public Object getUserToken(final HttpContext context) {
-        
-        Principal userPrincipal = null;
-        
-        AuthState targetAuthState = (AuthState) context.getAttribute(
-                ClientContext.TARGET_AUTH_STATE);
-        if (targetAuthState != null) {
-            userPrincipal = getAuthPrincipal(targetAuthState);
-            if (userPrincipal == null) {
-                AuthState proxyAuthState = (AuthState) context.getAttribute(
-                        ClientContext.PROXY_AUTH_STATE);
-                userPrincipal = getAuthPrincipal(proxyAuthState);
-            }
-        }
-        
-        if (userPrincipal == null) {
-            ManagedClientConnection conn = (ManagedClientConnection) context.getAttribute(
-                    ExecutionContext.HTTP_CONNECTION);
-            if (conn.isOpen()) {
-                SSLSession sslsession = conn.getSSLSession();
-                if (sslsession != null) {
-                    userPrincipal = sslsession.getLocalPrincipal();
-                }
-            }
-        }
-        
-        return userPrincipal;
-    }
-
-    private static Principal getAuthPrincipal(final AuthState authState) {
-        AuthScheme scheme = authState.getAuthScheme();
-        if (scheme != null && scheme.isComplete() && scheme.isConnectionBased()) {
-            Credentials creds = authState.getCredentials();
-            if (creds != null) {
-                return creds.getUserPrincipal(); 
-            }
-        }
-        return null;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/client/EntityEnclosingRequestWrapper.java b/src/org/apache/http/impl/client/EntityEnclosingRequestWrapper.java
deleted file mode 100644
index 05098cf..0000000
--- a/src/org/apache/http/impl/client/EntityEnclosingRequestWrapper.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/EntityEnclosingRequestWrapper.java $
- * $Revision: 674186 $
- * $Date: 2008-07-05 05:18:54 -0700 (Sat, 05 Jul 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.impl.client;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.ProtocolException;
-import org.apache.http.protocol.HTTP;
-
-/**
- * A wrapper class for {@link HttpEntityEnclosingRequest}s that can 
- * be used to change properties of the current request without 
- * modifying the original object.
- * </p>
- * This class is also capable of resetting the request headers to
- * the state of the original request.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 674186 $
- * 
- * @since 4.0
- */
-public class EntityEnclosingRequestWrapper extends RequestWrapper 
-    implements HttpEntityEnclosingRequest {
-    
-    private HttpEntity entity;
-    
-    public EntityEnclosingRequestWrapper(final HttpEntityEnclosingRequest request) 
-        throws ProtocolException {
-        super(request);
-        this.entity = request.getEntity();
-    }
-
-    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());
-    }
-
-    @Override
-    public boolean isRepeatable() {
-        return this.entity == null || this.entity.isRepeatable();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/client/RedirectLocations.java b/src/org/apache/http/impl/client/RedirectLocations.java
deleted file mode 100644
index d5c47e7..0000000
--- a/src/org/apache/http/impl/client/RedirectLocations.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/RedirectLocations.java $
- * $Revision: 652020 $
- * $Date: 2008-04-27 14:23:31 -0700 (Sun, 27 Apr 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.impl.client;
-
-import java.net.URI;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * A collection of URIs that were used as redirects.
- */
-public class RedirectLocations {
-
-    private final Set<URI> uris;
-    
-    public RedirectLocations() {
-        super();
-        this.uris = new HashSet<URI>();
-    }
-    
-    /**
-     * Returns true if this collection contains the given URI.
-     */
-    public boolean contains(final URI uri) {
-        return this.uris.contains(uri);
-    }
-    
-    /**
-     * Adds a new URI to the list of redirects.
-     */
-    public void add(final URI uri) {
-        this.uris.add(uri);
-    }
-
-    /**
-     * Removes a URI from the list of redirects.
-     */
-    public boolean remove(final URI uri) {
-        return this.uris.remove(uri);
-    }
-
-}
diff --git a/src/org/apache/http/impl/client/RequestWrapper.java b/src/org/apache/http/impl/client/RequestWrapper.java
deleted file mode 100644
index 04a641d..0000000
--- a/src/org/apache/http/impl/client/RequestWrapper.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/RequestWrapper.java $
- * $Revision: 674186 $
- * $Date: 2008-07-05 05:18:54 -0700 (Sat, 05 Jul 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.impl.client;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import org.apache.http.HttpRequest;
-import org.apache.http.ProtocolException;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.RequestLine;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.message.AbstractHttpMessage;
-import org.apache.http.message.BasicRequestLine;
-import org.apache.http.params.HttpProtocolParams;
-
-/**
- * A wrapper class for {@link HttpRequest}s that can be used to change
- * properties of the current request without modifying the original
- * object.
- * </p>
- * This class is also capable of resetting the request headers to
- * the state of the original request.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 674186 $
- * 
- * @since 4.0
- */
-public class RequestWrapper extends AbstractHttpMessage implements HttpUriRequest {
-    
-    private final HttpRequest original;
-
-    private URI uri;
-    private String method;
-    private ProtocolVersion version;
-    private int execCount;
-    
-    public RequestWrapper(final HttpRequest request) throws ProtocolException {
-        super();
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        this.original = request;
-        setParams(request.getParams());
-        // Make a copy of the original URI 
-        if (request instanceof HttpUriRequest) {
-            this.uri = ((HttpUriRequest) request).getURI();
-            this.method = ((HttpUriRequest) request).getMethod();
-            this.version = null;
-        } else {
-            RequestLine requestLine = request.getRequestLine();
-            try {
-                this.uri = new URI(requestLine.getUri());
-            } catch (URISyntaxException ex) {
-                throw new ProtocolException("Invalid request URI: " 
-                        + requestLine.getUri(), ex);
-            }
-            this.method = requestLine.getMethod();
-            this.version = request.getProtocolVersion();
-        }
-        this.execCount = 0;
-    }
-
-    public void resetHeaders() {
-        // Make a copy of original headers
-        this.headergroup.clear();
-        setHeaders(this.original.getAllHeaders());
-    }
-    
-    public String getMethod() {
-        return this.method;
-    }
-
-    public void setMethod(final String method) {
-        if (method == null) {
-            throw new IllegalArgumentException("Method name may not be null");
-        }
-        this.method = method;
-    }
-
-    public ProtocolVersion getProtocolVersion() {
-        if (this.version != null) {
-            return this.version;
-        } else {
-            return HttpProtocolParams.getVersion(getParams());
-        }
-    }
-
-    public void setProtocolVersion(final ProtocolVersion version) {
-        this.version = version;
-    }
-
-
-    public URI getURI() {
-        return this.uri;
-    }
-    
-    public void setURI(final URI uri) {
-        this.uri = uri;
-    }
-
-    public RequestLine getRequestLine() {
-        String method = getMethod();
-        ProtocolVersion ver = getProtocolVersion();
-        String uritext = null;
-        if (uri != null) {
-            uritext = uri.toASCIIString();
-        }
-        if (uritext == null || uritext.length() == 0) {
-            uritext = "/";
-        }
-        return new BasicRequestLine(method, uritext, ver);
-    }
-
-    public void abort() throws UnsupportedOperationException {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean isAborted() {
-        return false;
-    }
-
-    public HttpRequest getOriginal() {
-        return this.original;
-    }
-    
-    public boolean isRepeatable() {
-        return true;
-    }
-
-    public int getExecCount() {
-        return this.execCount;
-    }
-    
-    public void incrementExecCount() {
-        this.execCount++;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/client/RoutedRequest.java b/src/org/apache/http/impl/client/RoutedRequest.java
deleted file mode 100644
index 954ebe5..0000000
--- a/src/org/apache/http/impl/client/RoutedRequest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/RoutedRequest.java $
- * $Revision: 645846 $
- * $Date: 2008-04-08 03:53:39 -0700 (Tue, 08 Apr 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.impl.client;
-
-import org.apache.http.conn.routing.HttpRoute;
-
-
-/**
- * A request with the route along which it should be sent.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 645846 $
- *
- * @since 4.0
- */
-public class RoutedRequest {
-
-    protected final RequestWrapper request;
-    protected final HttpRoute route;
-
-    /**
-     * Creates a new routed request.
-     *
-     * @param req   the request
-     * @param route   the route
-     */
-    public RoutedRequest(final RequestWrapper req, final HttpRoute route) {
-        super();
-        this.request = req;
-        this.route   = route;
-    }
-
-    public final RequestWrapper getRequest() {
-        return request;
-    }
-
-    public final HttpRoute getRoute() {
-        return route;
-    }
-
-} // interface RoutedRequest
diff --git a/src/org/apache/http/impl/client/TunnelRefusedException.java b/src/org/apache/http/impl/client/TunnelRefusedException.java
deleted file mode 100644
index 601626f..0000000
--- a/src/org/apache/http/impl/client/TunnelRefusedException.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/TunnelRefusedException.java $
- * $Revision: 537650 $
- * $Date: 2007-05-13 12:58:22 -0700 (Sun, 13 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/>.
- *
- */
-
-package org.apache.http.impl.client;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpResponse;
-
-public class TunnelRefusedException extends HttpException {
-
-    private static final long serialVersionUID = -8646722842745617323L;
-
-    private final HttpResponse response;
-    
-    public TunnelRefusedException(final String message, final HttpResponse response) {
-        super(message);
-        this.response = response;
-    }
-
-    public HttpResponse getResponse() {
-        return this.response;
-    }
-
-}
diff --git a/src/org/apache/http/impl/client/package.html b/src/org/apache/http/impl/client/package.html
deleted file mode 100644
index e301283..0000000
--- a/src/org/apache/http/impl/client/package.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<body>
-
-</body>
-
diff --git a/src/org/apache/http/impl/conn/AbstractClientConnAdapter.java b/src/org/apache/http/impl/conn/AbstractClientConnAdapter.java
deleted file mode 100644
index 5cbe010..0000000
--- a/src/org/apache/http/impl/conn/AbstractClientConnAdapter.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/AbstractClientConnAdapter.java $
- * $Revision: 672969 $
- * $Date: 2008-06-30 18:09:50 -0700 (Mon, 30 Jun 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.impl.conn;
-
-
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.util.concurrent.TimeUnit;
-
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.SSLSession;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpConnectionMetrics;
-import org.apache.http.conn.OperatedClientConnection;
-import org.apache.http.conn.ManagedClientConnection;
-import org.apache.http.conn.ClientConnectionManager;
-
-
-/**
- * Abstract adapter from {@link OperatedClientConnection operated} to
- * {@link ManagedClientConnection managed} client connections.
- * Read and write methods are delegated to the wrapped connection.
- * Operations affecting the connection state have to be implemented
- * by derived classes. Operations for querying the connection state
- * are delegated to the wrapped connection if there is one, or
- * return a default value if there is none.
- * <br/>
- * This adapter tracks the checkpoints for reusable communication states,
- * as indicated by {@link #markReusable markReusable} and queried by
- * {@link #isMarkedReusable isMarkedReusable}.
- * All send and receive operations will automatically clear the mark.
- * <br/>
- * Connection release calls are delegated to the connection manager,
- * if there is one. {@link #abortConnection abortConnection} will
- * clear the reusability mark first. The connection manager is
- * expected to tolerate multiple calls to the release method.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 672969 $ $Date: 2008-06-30 18:09:50 -0700 (Mon, 30 Jun 2008) $
- *
- * @since 4.0
- */
-public abstract class AbstractClientConnAdapter
-    implements ManagedClientConnection {
-
-    /** Thread that requested this connection. */
-    private final Thread executionThread; 
-    
-    /**
-     * The connection manager, if any.
-     * This attribute MUST NOT be final, so the adapter can be detached
-     * from the connection manager without keeping a hard reference there.
-     */
-    private volatile ClientConnectionManager connManager;
-
-    /** The wrapped connection. */
-    private volatile OperatedClientConnection wrappedConnection;
-
-    /** The reusability marker. */
-    private volatile boolean markedReusable;
-
-    /** True if the connection has been aborted. */
-    private volatile boolean aborted;
-    
-    /** The duration this is valid for while idle (in ms). */
-    private volatile long duration;
-
-    /**
-     * Creates a new connection adapter.
-     * The adapter is initially <i>not</i>
-     * {@link #isMarkedReusable marked} as reusable.
-     *
-     * @param mgr       the connection manager, or <code>null</code>
-     * @param conn      the connection to wrap, or <code>null</code>
-     */
-    protected AbstractClientConnAdapter(ClientConnectionManager mgr,
-                                        OperatedClientConnection conn) {
-        super();
-        executionThread = Thread.currentThread();
-        connManager = mgr;
-        wrappedConnection = conn;
-        markedReusable = false;
-        aborted = false;
-        duration = Long.MAX_VALUE;
-    } // <constructor>
-
-
-    /**
-     * Detaches this adapter from the wrapped connection.
-     * This adapter becomes useless.
-     */
-    protected void detach() {
-        wrappedConnection = null;
-        connManager = null; // base class attribute
-        duration = Long.MAX_VALUE;
-    }
-
-    protected OperatedClientConnection getWrappedConnection() {
-        return wrappedConnection;
-    }
-    
-    protected ClientConnectionManager getManager() {
-        return connManager;
-    }
-    
-    /**
-     * Asserts that the connection has not been aborted.
-     *
-     * @throws InterruptedIOException   if the connection has been aborted
-     */
-    protected final void assertNotAborted() throws InterruptedIOException {
-        if (aborted) {
-            throw new InterruptedIOException("Connection has been shut down.");
-        }
-    }
-
-    /**
-     * Asserts that there is a wrapped connection to delegate to.
-     *
-     * @throws IllegalStateException    if there is no wrapped connection
-     *                                  or connection has been aborted
-     */
-    protected final void assertValid(
-            final OperatedClientConnection wrappedConn) {
-        if (wrappedConn == null) {
-            throw new IllegalStateException("No wrapped connection.");
-        }
-    }
-
-    // non-javadoc, see interface HttpConnection
-    public boolean isOpen() {
-        OperatedClientConnection conn = getWrappedConnection();
-        if (conn == null)
-            return false;
-
-        return conn.isOpen();
-    }
-
-
-    // non-javadoc, see interface HttpConnection
-    public boolean isStale() {
-        if (aborted)
-            return true;
-        OperatedClientConnection conn = getWrappedConnection();
-        if (conn == null)
-            return true;
-
-        return conn.isStale();
-    }
-
-
-    // non-javadoc, see interface HttpConnection
-    public void setSocketTimeout(int timeout) {
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        conn.setSocketTimeout(timeout);
-    }
-
-
-    // non-javadoc, see interface HttpConnection
-    public int getSocketTimeout() {
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        return conn.getSocketTimeout();
-    }
-
-
-    // non-javadoc, see interface HttpConnection
-    public HttpConnectionMetrics getMetrics() {
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        return conn.getMetrics();
-    }
-
-
-    // non-javadoc, see interface HttpClientConnection
-    public void flush()
-        throws IOException {
-
-        assertNotAborted();
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-
-        conn.flush();
-    }
-
-
-    // non-javadoc, see interface HttpClientConnection
-    public boolean isResponseAvailable(int timeout)
-        throws IOException {
-
-        assertNotAborted();
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-
-        return conn.isResponseAvailable(timeout);
-    }
-
-
-    // non-javadoc, see interface HttpClientConnection
-    public void receiveResponseEntity(HttpResponse response)
-        throws HttpException, IOException {
-
-        assertNotAborted();
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-
-        unmarkReusable();
-        conn.receiveResponseEntity(response);
-    }
-
-
-    // non-javadoc, see interface HttpClientConnection
-    public HttpResponse receiveResponseHeader()
-        throws HttpException, IOException {
-
-        assertNotAborted();
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-
-        unmarkReusable();
-        return conn.receiveResponseHeader();
-    }
-
-
-    // non-javadoc, see interface HttpClientConnection
-    public void sendRequestEntity(HttpEntityEnclosingRequest request)
-        throws HttpException, IOException {
-
-        assertNotAborted();
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-
-        unmarkReusable();
-        conn.sendRequestEntity(request);
-    }
-
-
-    // non-javadoc, see interface HttpClientConnection
-    public void sendRequestHeader(HttpRequest request)
-        throws HttpException, IOException {
-
-        assertNotAborted();
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        
-        unmarkReusable();
-        conn.sendRequestHeader(request);
-    }
-
-
-    // non-javadoc, see interface HttpInetConnection
-    public InetAddress getLocalAddress() {
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        return conn.getLocalAddress();
-    }
-
-    // non-javadoc, see interface HttpInetConnection
-    public int getLocalPort() {
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        return conn.getLocalPort();
-    }
-
-
-    // non-javadoc, see interface HttpInetConnection
-    public InetAddress getRemoteAddress() {
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        return conn.getRemoteAddress();
-    }
-
-    // non-javadoc, see interface HttpInetConnection
-    public int getRemotePort() {
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        return conn.getRemotePort();
-    }
-
-    // non-javadoc, see interface ManagedClientConnection
-    public boolean isSecure() {
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        return conn.isSecure();
-    }
-
-    // non-javadoc, see interface ManagedClientConnection
-    public SSLSession getSSLSession() {
-        OperatedClientConnection conn = getWrappedConnection();
-        assertValid(conn);
-        if (!isOpen())
-            return null;
-
-        SSLSession result = null;
-        Socket    sock    = conn.getSocket();
-        if (sock instanceof SSLSocket) {
-            result = ((SSLSocket)sock).getSession();
-        }
-        return result;
-    }
-
-    // non-javadoc, see interface ManagedClientConnection
-    public void markReusable() {
-        markedReusable = true;
-    }
-
-    // non-javadoc, see interface ManagedClientConnection
-    public void unmarkReusable() {
-        markedReusable = false;
-    }
-
-    // non-javadoc, see interface ManagedClientConnection
-    public boolean isMarkedReusable() {
-        return markedReusable;
-    }
-    
-    public void setIdleDuration(long duration, TimeUnit unit) {
-        if(duration > 0) {
-            this.duration = unit.toMillis(duration);
-        } else {
-            this.duration = -1;
-        }
-    }
-
-    // non-javadoc, see interface ConnectionReleaseTrigger
-    public void releaseConnection() {
-        if (connManager != null) {
-            connManager.releaseConnection(this, duration, TimeUnit.MILLISECONDS);
-        }
-    }
-
-    // non-javadoc, see interface ConnectionReleaseTrigger
-    public void abortConnection() {
-        if (aborted) {
-            return;
-        }
-        aborted = true;
-        unmarkReusable();
-        try {
-            shutdown();
-        } catch (IOException ignore) {
-        }
-        // Usually #abortConnection() is expected to be called from 
-        // a helper thread in order to unblock the main execution thread 
-        // blocked in an I/O operation. It may be unsafe to call 
-        // #releaseConnection() from the helper thread, so we have to rely
-        // on an IOException thrown by the closed socket on the main thread 
-        // to trigger the release of the connection back to the 
-        // connection manager.
-        // 
-        // However, if this method is called from the main execution thread 
-        // it should be safe to release the connection immediately. Besides, 
-        // this also helps ensure the connection gets released back to the 
-        // manager if #abortConnection() is called from the main execution 
-        // thread while there is no blocking I/O operation.
-        if (executionThread.equals(Thread.currentThread())) {
-            releaseConnection();
-        }
-    }
-
-} // class AbstractClientConnAdapter
diff --git a/src/org/apache/http/impl/conn/AbstractPoolEntry.java b/src/org/apache/http/impl/conn/AbstractPoolEntry.java
deleted file mode 100644
index 0e7d95f..0000000
--- a/src/org/apache/http/impl/conn/AbstractPoolEntry.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/AbstractPoolEntry.java $
- * $Revision: 658775 $
- * $Date: 2008-05-21 10:30:45 -0700 (Wed, 21 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.impl.conn;
-
-
-import java.io.IOException;
-
-import org.apache.http.HttpHost;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.routing.RouteTracker;
-import org.apache.http.conn.ClientConnectionOperator;
-import org.apache.http.conn.OperatedClientConnection;
-
-
-
-/**
- * A pool entry for use by connection manager implementations.
- * Pool entries work in conjunction with an
- * {@link AbstractClientConnAdapter adapter}.
- * The adapter is handed out to applications that obtain a connection.
- * The pool entry stores the underlying connection and tracks the
- * {@link HttpRoute route} established.
- * The adapter delegates methods for establishing the route to
- * it's pool entry.
- * <br/>
- * If the managed connections is released or revoked, the adapter
- * gets disconnected, but the pool entry still contains the
- * underlying connection and the established route.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author <a href="mailto:becke@u.washington.edu">Michael Becke</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 658775 $
- *
- * @since 4.0
- */
-public abstract class AbstractPoolEntry {
-
-    /** The connection operator. */
-    protected final ClientConnectionOperator connOperator;
-
-    /** The underlying connection being pooled or used. */
-    protected final OperatedClientConnection connection;
-
-    /** The route for which this entry gets allocated. */
-    //@@@ currently accessed from connection manager(s) as attribute
-    //@@@ avoid that, derived classes should decide whether update is allowed
-    //@@@ SCCM: yes, TSCCM: no
-    protected volatile HttpRoute route;
-    
-    /** Connection state object */
-    protected volatile Object state;
-    
-    /** The tracked route, or <code>null</code> before tracking starts. */
-    protected volatile RouteTracker tracker;
-
-
-    /**
-     * Creates a new pool entry.
-     *
-     * @param connOperator     the Connection Operator for this entry
-     * @param route   the planned route for the connection,
-     *                or <code>null</code>
-     */
-    protected AbstractPoolEntry(ClientConnectionOperator connOperator,
-                                HttpRoute route) {
-        super();
-        if (connOperator == null) {
-            throw new IllegalArgumentException("Connection operator may not be null");
-        }
-        this.connOperator = connOperator;
-        this.connection = connOperator.createConnection();
-        this.route = route;
-        this.tracker = null;
-    }
-
-    /**
-     * Returns the state object associated with this pool entry.
-     * 
-     * @return The state object
-     */
-    public Object getState() {
-        return state;
-    }
-    
-    /**
-     * Assigns a state object to this pool entry.
-     * 
-     * @param state The state object
-     */
-    public void setState(final Object state) {
-        this.state = state;
-    }
-    
-    /**
-     * Opens the underlying connection.
-     *
-     * @param route         the route along which to open the connection
-     * @param context       the context for opening the connection
-     * @param params        the parameters for opening the connection
-     *
-     * @throws IOException  in case of a problem
-     */
-    public void open(HttpRoute route,
-                     HttpContext context, HttpParams params)
-        throws IOException {
-
-        if (route == null) {
-            throw new IllegalArgumentException
-                ("Route must not be null.");
-        }
-        //@@@ is context allowed to be null? depends on operator?
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("Parameters must not be null.");
-        }
-        if ((this.tracker != null) && this.tracker.isConnected()) {
-            throw new IllegalStateException("Connection already open.");
-        }
-
-        // - collect the arguments
-        // - call the operator
-        // - update the tracking data
-        // In this order, we can be sure that only a successful
-        // opening of the connection will be tracked.
-
-        //@@@ verify route against planned route?
-
-        this.tracker = new RouteTracker(route);
-        final HttpHost proxy  = route.getProxyHost();
-
-        connOperator.openConnection
-            (this.connection,
-             (proxy != null) ? proxy : route.getTargetHost(),
-             route.getLocalAddress(),
-             context, params);
-
-        RouteTracker localTracker = tracker; // capture volatile        
-
-        // If this tracker was reset while connecting,
-        // fail early.
-        if (localTracker == null) {
-            throw new IOException("Request aborted");
-        }
-
-        if (proxy == null) {
-            localTracker.connectTarget(this.connection.isSecure());
-        } else {
-            localTracker.connectProxy(proxy, this.connection.isSecure());
-        }
-
-    } // open
-
-
-    /**
-     * Tracks tunnelling of the connection to the target.
-     * The tunnel has to be established outside by sending a CONNECT
-     * request to the (last) proxy.
-     *
-     * @param secure    <code>true</code> if the tunnel should be
-     *                  considered secure, <code>false</code> otherwise
-     * @param params    the parameters for tunnelling the connection
-     *
-     * @throws IOException  in case of a problem
-     */
-    public void tunnelTarget(boolean secure, HttpParams params)
-        throws IOException {
-
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("Parameters must not be null.");
-        }
-
-        //@@@ check for proxy in planned route?
-        if ((this.tracker == null) || !this.tracker.isConnected()) {
-            throw new IllegalStateException("Connection not open.");
-        }
-        if (this.tracker.isTunnelled()) {
-            throw new IllegalStateException
-                ("Connection is already tunnelled.");
-        }
-
-        // LOG.debug?
-
-        this.connection.update(null, tracker.getTargetHost(),
-                               secure, params);
-        this.tracker.tunnelTarget(secure);
-
-    } // tunnelTarget
-
-
-    /**
-     * Tracks tunnelling of the connection to a chained proxy.
-     * The tunnel has to be established outside by sending a CONNECT
-     * request to the previous proxy.
-     *
-     * @param next      the proxy to which the tunnel was established.
-     *  See {@link org.apache.http.conn.ManagedClientConnection#tunnelProxy
-     *                                  ManagedClientConnection.tunnelProxy}
-     *                  for details.
-     * @param secure    <code>true</code> if the tunnel should be
-     *                  considered secure, <code>false</code> otherwise
-     * @param params    the parameters for tunnelling the connection
-     *
-     * @throws IOException  in case of a problem
-     */
-    public void tunnelProxy(HttpHost next, boolean secure, HttpParams params)
-        throws IOException {
-
-        if (next == null) {
-            throw new IllegalArgumentException
-                ("Next proxy must not be null.");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("Parameters must not be null.");
-        }
-
-        //@@@ check for proxy in planned route?
-        if ((this.tracker == null) || !this.tracker.isConnected()) {
-            throw new IllegalStateException("Connection not open.");
-        }
-
-        // LOG.debug?
-
-        this.connection.update(null, next, secure, params);
-        this.tracker.tunnelProxy(next, secure);
-
-    } // tunnelProxy
-
-
-    /**
-     * Layers a protocol on top of an established tunnel.
-     *
-     * @param context   the context for layering
-     * @param params    the parameters for layering
-     *
-     * @throws IOException  in case of a problem
-     */
-    public void layerProtocol(HttpContext context, HttpParams params)
-        throws IOException {
-
-        //@@@ is context allowed to be null? depends on operator?
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("Parameters must not be null.");
-        }
-
-        if ((this.tracker == null) || !this.tracker.isConnected()) {
-            throw new IllegalStateException("Connection not open.");
-        }
-        if (!this.tracker.isTunnelled()) {
-            //@@@ allow this?
-            throw new IllegalStateException
-                ("Protocol layering without a tunnel not supported.");
-        }
-        if (this.tracker.isLayered()) {
-            throw new IllegalStateException
-                ("Multiple protocol layering not supported.");
-        }
-
-        // - collect the arguments
-        // - call the operator
-        // - update the tracking data
-        // In this order, we can be sure that only a successful
-        // layering on top of the connection will be tracked.
-
-        final HttpHost target = tracker.getTargetHost();
-
-        connOperator.updateSecureConnection(this.connection, target,
-                                             context, params);
-
-        this.tracker.layerProtocol(this.connection.isSecure());
-
-    } // layerProtocol
-
-
-    /**
-     * Shuts down the entry.
-     * 
-     * If {@link #open(HttpRoute, HttpContext, HttpParams)} is in progress,
-     * this will cause that open to possibly throw an {@link IOException}.
-     */
-    protected void shutdownEntry() { 
-        tracker = null;
-    }
-
-
-} // class AbstractPoolEntry
-
diff --git a/src/org/apache/http/impl/conn/AbstractPooledConnAdapter.java b/src/org/apache/http/impl/conn/AbstractPooledConnAdapter.java
deleted file mode 100644
index 2c5fd30..0000000
--- a/src/org/apache/http/impl/conn/AbstractPooledConnAdapter.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/AbstractPooledConnAdapter.java $
- * $Revision: 658775 $
- * $Date: 2008-05-21 10:30:45 -0700 (Wed, 21 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.impl.conn;
-
-
-import java.io.IOException;
-
-import org.apache.http.HttpHost;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.OperatedClientConnection;
-
-
-
-/**
- * Abstract adapter from pool {@link AbstractPoolEntry entries} to
- * {@link org.apache.http.conn.ManagedClientConnection managed}
- * client connections.
- * The connection in the pool entry is used to initialize the base class.
- * In addition, methods to establish a route are delegated to the
- * pool entry. {@link #shutdown shutdown} and {@link #close close}
- * will clear the tracked route in the pool entry and call the
- * respective method of the wrapped connection.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 658775 $ $Date: 2008-05-21 10:30:45 -0700 (Wed, 21 May 2008) $
- *
- * @since 4.0
- */
-public abstract class AbstractPooledConnAdapter extends AbstractClientConnAdapter {
-
-    /** The wrapped pool entry. */
-    protected volatile AbstractPoolEntry poolEntry;
-
-
-    /**
-     * Creates a new connection adapter.
-     *
-     * @param manager   the connection manager
-     * @param entry     the pool entry for the connection being wrapped
-     */
-    protected AbstractPooledConnAdapter(ClientConnectionManager manager,
-                                        AbstractPoolEntry entry) {
-        super(manager, entry.connection);
-        this.poolEntry = entry;
-    }
-
-
-    /**
-     * Asserts that this adapter is still attached.
-     *
-     * @throws IllegalStateException
-     *      if it is {@link #detach detach}ed
-     */
-    protected final void assertAttached() {
-        if (poolEntry == null) {
-            throw new IllegalStateException("Adapter is detached.");
-        }
-    }
-
-    /**
-     * Detaches this adapter from the wrapped connection.
-     * This adapter becomes useless.
-     */
-    @Override
-    protected void detach() {
-        super.detach();
-        poolEntry = null;
-    }
-
-
-    // non-javadoc, see interface ManagedHttpConnection
-    public HttpRoute getRoute() {
-
-        assertAttached();
-        return (poolEntry.tracker == null) ?
-            null : poolEntry.tracker.toRoute();
-    }
-
-    // non-javadoc, see interface ManagedHttpConnection
-    public void open(HttpRoute route,
-                     HttpContext context, HttpParams params)
-        throws IOException {
-
-        assertAttached();
-        poolEntry.open(route, context, params);
-    }
-
-
-    // non-javadoc, see interface ManagedHttpConnection
-    public void tunnelTarget(boolean secure, HttpParams params)
-        throws IOException {
-
-        assertAttached();
-        poolEntry.tunnelTarget(secure, params);
-    }
-
-
-    // non-javadoc, see interface ManagedHttpConnection
-    public void tunnelProxy(HttpHost next, boolean secure, HttpParams params)
-        throws IOException {
-
-        assertAttached();
-        poolEntry.tunnelProxy(next, secure, params);
-    }
-
-
-    // non-javadoc, see interface ManagedHttpConnection
-    public void layerProtocol(HttpContext context, HttpParams params)
-        throws IOException {
-
-        assertAttached();
-        poolEntry.layerProtocol(context, params);
-    }
-
-
-
-    // non-javadoc, see interface HttpConnection        
-    public void close() throws IOException {
-        if (poolEntry != null)
-            poolEntry.shutdownEntry();
-
-        OperatedClientConnection conn = getWrappedConnection();
-        if (conn != null) {
-            conn.close();
-        }
-    }
-
-    // non-javadoc, see interface HttpConnection        
-    public void shutdown() throws IOException {
-        if (poolEntry != null)
-            poolEntry.shutdownEntry();
-
-        OperatedClientConnection conn = getWrappedConnection();
-        if (conn != null) {
-            conn.shutdown();
-        }
-    }
-
-    
-    // non-javadoc, see interface ManagedClientConnection        
-    public Object getState() {
-        assertAttached();
-        return poolEntry.getState();
-    }
-
-
-    // non-javadoc, see interface ManagedClientConnection        
-    public void setState(final Object state) {
-        assertAttached();
-        poolEntry.setState(state);
-    }
-    
-
-} // class AbstractPooledConnAdapter
diff --git a/src/org/apache/http/impl/conn/DefaultClientConnection.java b/src/org/apache/http/impl/conn/DefaultClientConnection.java
deleted file mode 100644
index a41f57a..0000000
--- a/src/org/apache/http/impl/conn/DefaultClientConnection.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/DefaultClientConnection.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.impl.conn;
-
-
-import java.io.IOException;
-import java.net.Socket;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.Header;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseFactory;
-import org.apache.http.params.HttpParams;
-import org.apache.http.impl.SocketHttpClientConnection;
-import org.apache.http.io.HttpMessageParser;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.io.SessionOutputBuffer;
-
-import org.apache.http.conn.OperatedClientConnection;
-
-
-/**
- * Default implementation of an operated client connection.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 673450 $ $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 2008) $
- *
- * @since 4.0
- */
-public class DefaultClientConnection extends SocketHttpClientConnection
-    implements OperatedClientConnection {
-
-    private final Log log = LogFactory.getLog(getClass());
-    private final Log headerLog = LogFactory.getLog("org.apache.http.headers");
-    private final Log wireLog = LogFactory.getLog("org.apache.http.wire");
-
-    /** The unconnected socket */
-    private volatile Socket socket;
-
-    /** The target host of this connection. */
-    private HttpHost targetHost;
-
-    /** Whether this connection is secure. */
-    private boolean connSecure;
-    
-    /** True if this connection was shutdown. */
-    private volatile boolean shutdown;
-
-    public DefaultClientConnection() {
-        super();
-    }
-
-
-    // non-javadoc, see interface OperatedClientConnection
-    public final HttpHost getTargetHost() {
-        return this.targetHost;
-    }
-
-
-    // non-javadoc, see interface OperatedClientConnection
-    public final boolean isSecure() {
-        return this.connSecure;
-    }
-
-
-    @Override
-    public final Socket getSocket() {
-        return this.socket;
-    }
-
-
-    public void opening(Socket sock, HttpHost target) throws IOException {
-        assertNotOpen();        
-        this.socket = sock;
-        this.targetHost = target;
-        
-        // Check for shutdown after assigning socket, so that 
-        if (this.shutdown) {
-            sock.close(); // allow this to throw...
-            // ...but if it doesn't, explicitly throw one ourselves.
-            throw new IOException("Connection already shutdown");
-        }
-    }
-
-    
-    public void openCompleted(boolean secure, HttpParams params) throws IOException {
-        assertNotOpen();
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("Parameters must not be null.");
-        }
-        this.connSecure = secure;
-        bind(this.socket, params);
-    }
-
-    /**
-     * Force-closes this connection.
-     * If the connection is still in the process of being open (the method 
-     * {@link #opening opening} was already called but 
-     * {@link #openCompleted openCompleted} was not), the associated 
-     * socket that is being connected to a remote address will be closed. 
-     * That will interrupt a thread that is blocked on connecting 
-     * the socket.
-     * If the connection is not yet open, this will prevent the connection
-     * from being opened.
-     *
-     * @throws IOException      in case of a problem
-     */
-    @Override
-    public void shutdown() throws IOException {
-        log.debug("Connection shut down");
-        shutdown = true;
-        
-        super.shutdown();        
-        Socket sock = this.socket; // copy volatile attribute
-        if (sock != null)
-            sock.close();
-
-    } // shutdown
-
-    
-    @Override
-    public void close() throws IOException {
-        log.debug("Connection closed");
-        super.close();
-    }
-
-
-    @Override
-    protected SessionInputBuffer createSessionInputBuffer(
-            final Socket socket,
-            int buffersize,
-            final HttpParams params) throws IOException {
-        SessionInputBuffer inbuffer = super.createSessionInputBuffer(
-                socket, 
-                buffersize,
-                params);
-        if (wireLog.isDebugEnabled()) {
-            inbuffer = new LoggingSessionInputBuffer(inbuffer, new Wire(wireLog));
-        }
-        return inbuffer;
-    }
-
-    
-    @Override
-    protected SessionOutputBuffer createSessionOutputBuffer(
-            final Socket socket,
-            int buffersize,
-            final HttpParams params) throws IOException {
-        SessionOutputBuffer outbuffer = super.createSessionOutputBuffer(
-                socket,
-                buffersize,
-                params);
-        if (wireLog.isDebugEnabled()) {
-            outbuffer = new LoggingSessionOutputBuffer(outbuffer, new Wire(wireLog));
-        }
-        return outbuffer;
-    }
-
-    
-    @Override
-    protected HttpMessageParser createResponseParser(
-            final SessionInputBuffer buffer,
-            final HttpResponseFactory responseFactory, 
-            final HttpParams params) {
-        // override in derived class to specify a line parser
-        return new DefaultResponseParser
-            (buffer, null, responseFactory, params);
-    }
-
-
-    // non-javadoc, see interface OperatedClientConnection
-    public void update(Socket sock, HttpHost target,
-                       boolean secure, HttpParams params)
-        throws IOException {
-
-        assertOpen();
-        if (target == null) {
-            throw new IllegalArgumentException
-                ("Target host must not be null.");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("Parameters must not be null.");
-        }
-
-        if (sock != null) {
-            this.socket = sock;
-            bind(sock, params);
-        }
-        targetHost = target;
-        connSecure = secure;
-
-    } // update
-
-
-    @Override
-    public HttpResponse receiveResponseHeader() throws HttpException, IOException {
-        HttpResponse response = super.receiveResponseHeader();
-        if (headerLog.isDebugEnabled()) {
-            headerLog.debug("<< " + response.getStatusLine().toString());
-            Header[] headers = response.getAllHeaders();
-            for (Header header : headers) {
-                headerLog.debug("<< " + header.toString());
-            }
-        }
-        return response;
-    }
-
-
-    @Override
-    public void sendRequestHeader(HttpRequest request) throws HttpException, IOException {
-        super.sendRequestHeader(request);
-        if (headerLog.isDebugEnabled()) {
-            headerLog.debug(">> " + request.getRequestLine().toString());
-            Header[] headers = request.getAllHeaders();
-            for (Header header : headers) {
-                headerLog.debug(">> " + header.toString());
-            }
-        }
-    }
-
-} // class DefaultClientConnection
diff --git a/src/org/apache/http/impl/conn/DefaultClientConnectionOperator.java b/src/org/apache/http/impl/conn/DefaultClientConnectionOperator.java
deleted file mode 100644
index 41488e1..0000000
--- a/src/org/apache/http/impl/conn/DefaultClientConnectionOperator.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/DefaultClientConnectionOperator.java $
- * $Revision: 652193 $
- * $Date: 2008-04-29 17:10:36 -0700 (Tue, 29 Apr 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.impl.conn;
-
-import java.io.IOException;
-import java.net.ConnectException;
-import java.net.Socket;
-import java.net.InetAddress;
-
-import org.apache.http.HttpHost;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.protocol.HttpContext;
-
-import org.apache.http.conn.HttpHostConnectException;
-import org.apache.http.conn.OperatedClientConnection;
-import org.apache.http.conn.ClientConnectionOperator;
-import org.apache.http.conn.scheme.LayeredSocketFactory;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.conn.scheme.SocketFactory;
-
-
-/**
- * Default implementation of a
- * {@link ClientConnectionOperator ClientConnectionOperator}.
- * It uses a {@link SchemeRegistry SchemeRegistry} to look up
- * {@link SocketFactory SocketFactory} objects.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 652193 $ $Date: 2008-04-29 17:10:36 -0700 (Tue, 29 Apr 2008) $
- *
- * @since 4.0
- */
-public class DefaultClientConnectionOperator
-    implements ClientConnectionOperator {
-
-
-    /** The scheme registry for looking up socket factories. */
-    protected SchemeRegistry schemeRegistry;
-
-
-    /**
-     * Creates a new client connection operator for the given scheme registry.
-     *
-     * @param schemes   the scheme registry
-     */
-    public DefaultClientConnectionOperator(SchemeRegistry schemes) {
-        if (schemes == null) {
-            throw new IllegalArgumentException
-                ("Scheme registry must not be null.");
-        }
-        schemeRegistry = schemes;
-    }
-
-
-    // non-javadoc, see interface ClientConnectionOperator
-    public OperatedClientConnection createConnection() {
-        return new DefaultClientConnection();
-    }
-
-
-    // non-javadoc, see interface ClientConnectionOperator
-    public void openConnection(OperatedClientConnection conn,
-                               HttpHost target,
-                               InetAddress local,
-                               HttpContext context,
-                               HttpParams params)
-        throws IOException {
-
-        if (conn == null) {
-            throw new IllegalArgumentException
-                ("Connection must not be null.");
-        }
-        if (target == null) {
-            throw new IllegalArgumentException
-                ("Target host must not be null.");
-        }
-        // local address may be null
-        //@@@ is context allowed to be null?
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("Parameters must not be null.");
-        }
-        if (conn.isOpen()) {
-            throw new IllegalArgumentException
-                ("Connection must not be open.");
-        }
-
-        final Scheme schm = schemeRegistry.getScheme(target.getSchemeName());
-        final SocketFactory sf = schm.getSocketFactory();
-
-        Socket sock = sf.createSocket();
-        conn.opening(sock, target);
-
-        try {
-            sock = sf.connectSocket(sock, target.getHostName(),
-                    schm.resolvePort(target.getPort()),
-                    local, 0, params);
-        } catch (ConnectException ex) {
-            throw new HttpHostConnectException(target, ex);
-        }
-        prepareSocket(sock, context, params);
-        conn.openCompleted(sf.isSecure(sock), params);
-    } // openConnection
-
-
-    // non-javadoc, see interface ClientConnectionOperator
-    public void updateSecureConnection(OperatedClientConnection conn,
-                                       HttpHost target,
-                                       HttpContext context,
-                                       HttpParams params)
-        throws IOException {
-
-
-        if (conn == null) {
-            throw new IllegalArgumentException
-                ("Connection must not be null.");
-        }
-        if (target == null) {
-            throw new IllegalArgumentException
-                ("Target host must not be null.");
-        }
-        //@@@ is context allowed to be null?
-        if (params == null) {
-            throw new IllegalArgumentException
-                ("Parameters must not be null.");
-        }
-        if (!conn.isOpen()) {
-            throw new IllegalArgumentException
-                ("Connection must be open.");
-        }
-
-        final Scheme schm = schemeRegistry.getScheme(target.getSchemeName());
-        if (!(schm.getSocketFactory() instanceof LayeredSocketFactory)) {
-            throw new IllegalArgumentException
-                ("Target scheme (" + schm.getName() +
-                 ") must have layered socket factory.");
-        }
-
-        final LayeredSocketFactory lsf = (LayeredSocketFactory) schm.getSocketFactory();
-        final Socket sock; 
-        try {
-            sock = lsf.createSocket
-                (conn.getSocket(), target.getHostName(), target.getPort(), true);
-        } catch (ConnectException ex) {
-            throw new HttpHostConnectException(target, ex);
-        }
-        prepareSocket(sock, context, params);
-        conn.update(sock, target, lsf.isSecure(sock), params);
-        //@@@ error handling: close the layered socket in case of exception?
-
-    } // updateSecureConnection
-
-
-    /**
-     * Performs standard initializations on a newly created socket.
-     *
-     * @param sock      the socket to prepare
-     * @param context   the context for the connection
-     * @param params    the parameters from which to prepare the socket
-     *
-     * @throws IOException      in case of an IO problem
-     */
-    protected void prepareSocket(Socket sock, HttpContext context,
-                                 HttpParams params)
-        throws IOException {
-
-        // context currently not used, but derived classes may need it
-        //@@@ is context allowed to be null?
-
-        sock.setTcpNoDelay(HttpConnectionParams.getTcpNoDelay(params));
-        sock.setSoTimeout(HttpConnectionParams.getSoTimeout(params));
-
-        int linger = HttpConnectionParams.getLinger(params);
-        if (linger >= 0) {
-            sock.setSoLinger(linger > 0, linger);
-        }
-
-    } // prepareSocket
-
-
-} // class DefaultClientConnectionOperator
-
diff --git a/src/org/apache/http/impl/conn/DefaultHttpRoutePlanner.java b/src/org/apache/http/impl/conn/DefaultHttpRoutePlanner.java
deleted file mode 100644
index 90fd55f..0000000
--- a/src/org/apache/http/impl/conn/DefaultHttpRoutePlanner.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/DefaultHttpRoutePlanner.java $
- * $Revision: 658785 $
- * $Date: 2008-05-21 10:47:40 -0700 (Wed, 21 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.impl.conn;
-
-
-import java.net.InetAddress;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.protocol.HttpContext;
-
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.routing.HttpRoutePlanner;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-
-import org.apache.http.conn.params.ConnRouteParams;
-
-
-/**
- * Default implementation of an {@link HttpRoutePlanner}.
- * This implementation is based on
- * {@link org.apache.http.conn.params.ConnRoutePNames parameters}.
- * It will not make use of any Java system properties,
- * nor of system or browser proxy settings.
- */
-public class DefaultHttpRoutePlanner implements HttpRoutePlanner {
-
-    /** The scheme registry. */
-    protected SchemeRegistry schemeRegistry;
-
-
-    /**
-     * Creates a new default route planner.
-     *
-     * @param schreg    the scheme registry
-     */
-    public DefaultHttpRoutePlanner(SchemeRegistry schreg) {
-        if (schreg == null) {
-            throw new IllegalArgumentException
-                ("SchemeRegistry must not be null.");
-        }
-        schemeRegistry = schreg;
-    }
-
-
-    // non-javadoc, see interface HttpRoutePlanner
-    public HttpRoute determineRoute(HttpHost target,
-                                    HttpRequest request,
-                                    HttpContext context)
-        throws HttpException {
-
-        if (request == null) {
-            throw new IllegalStateException
-                ("Request must not be null.");
-        }
-
-        // If we have a forced route, we can do without a target.
-        HttpRoute route =
-            ConnRouteParams.getForcedRoute(request.getParams());
-        if (route != null)
-            return route;
-
-        // If we get here, there is no forced route.
-        // So we need a target to compute a route.
-
-        if (target == null) {
-            throw new IllegalStateException
-                ("Target host must not be null.");
-        }
-
-        final InetAddress local =
-            ConnRouteParams.getLocalAddress(request.getParams());
-        final HttpHost proxy =
-            ConnRouteParams.getDefaultProxy(request.getParams());
-
-        final Scheme schm = schemeRegistry.getScheme(target.getSchemeName());
-        // as it is typically used for TLS/SSL, we assume that
-        // a layered scheme implies a secure connection
-        final boolean secure = schm.isLayered();
-
-        if (proxy == null) {
-            route = new HttpRoute(target, local, secure);
-        } else {
-            route = new HttpRoute(target, local, proxy, secure);
-        }
-        return route;
-    }
-    
-    
-}
diff --git a/src/org/apache/http/impl/conn/DefaultResponseParser.java b/src/org/apache/http/impl/conn/DefaultResponseParser.java
deleted file mode 100644
index f817a10..0000000
--- a/src/org/apache/http/impl/conn/DefaultResponseParser.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/DefaultResponseParser.java $
- * $Revision: 617638 $
- * $Date: 2008-02-01 12:49:26 -0800 (Fri, 01 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.impl.conn;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.HttpResponseFactory;
-import org.apache.http.NoHttpResponseException;
-import org.apache.http.ProtocolException;
-import org.apache.http.StatusLine;
-import org.apache.http.conn.params.ConnConnectionPNames;
-import org.apache.http.impl.io.AbstractMessageParser;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.message.LineParser;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.params.HttpParams;
-import org.apache.http.util.CharArrayBuffer;
-
-public class DefaultResponseParser extends AbstractMessageParser {
-    
-    private final HttpResponseFactory responseFactory;
-    private final CharArrayBuffer lineBuf;
-    private final int maxGarbageLines;
-    
-    public DefaultResponseParser(
-            final SessionInputBuffer buffer,
-            final LineParser parser,
-            final HttpResponseFactory responseFactory,
-            final HttpParams params) {
-        super(buffer, parser, params);
-        if (responseFactory == null) {
-            throw new IllegalArgumentException
-                ("Response factory may not be null");
-        }
-        this.responseFactory = responseFactory;
-        this.lineBuf = new CharArrayBuffer(128);
-        this.maxGarbageLines = params.getIntParameter(
-            ConnConnectionPNames.MAX_STATUS_LINE_GARBAGE, Integer.MAX_VALUE);
-    }
-
-
-    @Override
-    protected HttpMessage parseHead(
-            final SessionInputBuffer sessionBuffer) throws IOException, HttpException {
-        // clear the buffer
-        this.lineBuf.clear();
-        //read out the HTTP status string
-        int count = 0;
-        ParserCursor cursor = null;
-        do {
-            int i = sessionBuffer.readLine(this.lineBuf);
-            if (i == -1 && count == 0) {
-                // The server just dropped connection on us
-                throw new NoHttpResponseException("The target server failed to respond");
-            }
-            cursor = new ParserCursor(0, this.lineBuf.length());
-            if (lineParser.hasProtocolVersion(this.lineBuf, cursor)) {
-                // Got one
-                break;
-            } else if (i == -1 || count >= this.maxGarbageLines) {
-                // Giving up
-                throw new ProtocolException("The server failed to respond with a " +
-                        "valid HTTP response");
-            }
-            count++;
-        } while(true);
-        //create the status line from the status string
-        StatusLine statusline = lineParser.parseStatusLine(this.lineBuf, cursor);
-        return this.responseFactory.newHttpResponse(statusline, null);
-    }
-
-}
diff --git a/src/org/apache/http/impl/conn/IdleConnectionHandler.java b/src/org/apache/http/impl/conn/IdleConnectionHandler.java
deleted file mode 100644
index 2cacda3..0000000
--- a/src/org/apache/http/impl/conn/IdleConnectionHandler.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/IdleConnectionHandler.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.impl.conn;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.HttpConnection;
-
-
-/**
- * A helper class for connection managers to track idle connections.
- * 
- * <p>This class is not synchronized.</p>
- * 
- * @see org.apache.http.conn.ClientConnectionManager#closeIdleConnections
- * 
- * @since 4.0
- */
-public class IdleConnectionHandler {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    /** Holds connections and the time they were added. */
-    private final Map<HttpConnection,TimeValues> connectionToTimes;
-    
-
-    public IdleConnectionHandler() {
-        super();
-        connectionToTimes = new HashMap<HttpConnection,TimeValues>();
-    }
-    
-    /**
-     * Registers the given connection with this handler.  The connection will be held until 
-     * {@link #remove} or {@link #closeIdleConnections} is called.
-     * 
-     * @param connection the connection to add
-     * 
-     * @see #remove
-     */
-    public void add(HttpConnection connection, long validDuration, TimeUnit unit) {
-        
-        Long timeAdded = Long.valueOf(System.currentTimeMillis());
-        
-        if (log.isDebugEnabled()) {
-            log.debug("Adding connection at: " + timeAdded);
-        }
-        
-        connectionToTimes.put(connection, new TimeValues(timeAdded, validDuration, unit));
-    }
-    
-    /**
-     * Removes the given connection from the list of connections to be closed when idle.
-     * This will return true if the connection is still valid, and false
-     * if the connection should be considered expired and not used.
-     * 
-     * @param connection
-     * @return True if the connection is still valid.
-     */
-    public boolean remove(HttpConnection connection) {
-        TimeValues times = connectionToTimes.remove(connection);
-        if(times == null) {
-            log.warn("Removing a connection that never existed!");
-            return true;
-        } else {
-            return System.currentTimeMillis() <= times.timeExpires;
-        }
-    }
-
-    /**
-     * Removes all connections referenced by this handler.
-     */
-    public void removeAll() {
-        this.connectionToTimes.clear();
-    }
-    
-    /**
-     * Closes connections that have been idle for at least the given amount of time.
-     * 
-     * @param idleTime the minimum idle time, in milliseconds, for connections to be closed
-     */
-    //@@@ add TimeUnit argument here?
-    public void closeIdleConnections(long idleTime) {
-        
-        // the latest time for which connections will be closed
-        long idleTimeout = System.currentTimeMillis() - idleTime;
-
-        if (log.isDebugEnabled()) {
-            log.debug("Checking for connections, idleTimeout: "  + idleTimeout);
-        }
-        
-        Iterator<HttpConnection> connectionIter =
-            connectionToTimes.keySet().iterator();
-        
-        while (connectionIter.hasNext()) {
-            HttpConnection conn = connectionIter.next();
-            TimeValues times = connectionToTimes.get(conn);
-            Long connectionTime = times.timeAdded;
-            if (connectionTime.longValue() <= idleTimeout) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Closing connection, connection time: "  + connectionTime);
-                }
-                connectionIter.remove();
-                try {
-                    conn.close();
-                } catch (IOException ex) {
-                    log.debug("I/O error closing connection", ex);
-                }
-            }
-        }
-    }
-    
-
-    public void closeExpiredConnections() {
-        long now = System.currentTimeMillis();
-        if (log.isDebugEnabled()) {
-            log.debug("Checking for expired connections, now: "  + now);
-        }
-        
-        Iterator<HttpConnection> connectionIter =
-            connectionToTimes.keySet().iterator();
-        
-        while (connectionIter.hasNext()) {
-            HttpConnection conn = connectionIter.next();
-            TimeValues times = connectionToTimes.get(conn);
-            if(times.timeExpires <= now) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Closing connection, expired @: "  + times.timeExpires);
-                }
-                connectionIter.remove();
-                try {
-                    conn.close();
-                } catch (IOException ex) {
-                    log.debug("I/O error closing connection", ex);
-                }
-            }
-        }        
-    }
-    
-    private static class TimeValues {
-        private final long timeAdded;
-        private final long timeExpires;
-
-        /**
-         * @param now The current time in milliseconds
-         * @param validDuration The duration this connection is valid for
-         * @param validUnit The unit of time the duration is specified in.
-         */
-        TimeValues(long now, long validDuration, TimeUnit validUnit) {
-            this.timeAdded = now;
-            if(validDuration > 0) {
-                this.timeExpires = now + validUnit.toMillis(validDuration);
-            } else {
-                this.timeExpires = Long.MAX_VALUE;
-            }
-        }
-    }
-}
diff --git a/src/org/apache/http/impl/conn/LoggingSessionInputBuffer.java b/src/org/apache/http/impl/conn/LoggingSessionInputBuffer.java
deleted file mode 100644
index 4f6477e..0000000
--- a/src/org/apache/http/impl/conn/LoggingSessionInputBuffer.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/LoggingSessionInputBuffer.java $
- * $Revision: 674186 $
- * $Date: 2008-07-05 05:18:54 -0700 (Sat, 05 Jul 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.impl.conn;
-
-import java.io.IOException;
-
-import org.apache.http.io.HttpTransportMetrics;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Logs all data read to the wire LOG.
- *
- * @author Ortwin Glueck
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class LoggingSessionInputBuffer implements SessionInputBuffer {
-     
-    /** Original session input buffer. */
-    private final SessionInputBuffer in;
-
-    /** The wire log to use for writing. */
-    private final Wire wire;
-    
-    /**
-     * Create an instance that wraps the specified session input buffer.
-     * @param in The session input buffer.
-     * @param wire The wire log to use.
-     */
-    public LoggingSessionInputBuffer(final SessionInputBuffer in, final Wire wire) {
-        super();
-        this.in = in;
-        this.wire = wire;
-    }
-
-    public boolean isDataAvailable(int timeout) throws IOException {
-        return this.in.isDataAvailable(timeout);
-    }
-
-    public int read(byte[] b, int off, int len) throws IOException {
-        int l = this.in.read(b,  off,  len);
-        if (this.wire.enabled() && l > 0) {
-            this.wire.input(b, off, l);
-        }
-        return l;
-    }
-
-    public int read() throws IOException {
-        int l = this.in.read();
-        if (this.wire.enabled() && l > 0) { 
-            this.wire.input(l);
-        }
-        return l;
-    }
-
-    public int read(byte[] b) throws IOException {
-        int l = this.in.read(b);
-        if (this.wire.enabled() && l > 0) {
-            this.wire.input(b, 0, l);
-        }
-        return l;
-    }
-
-    public String readLine() throws IOException {
-        String s = this.in.readLine();
-        if (this.wire.enabled() && s != null) {
-            this.wire.input(s + "[EOL]");
-        }
-        return s;
-    }
-
-    public int readLine(final CharArrayBuffer buffer) throws IOException {
-        int l = this.in.readLine(buffer);
-        if (this.wire.enabled() && l > 0) {
-            int pos = buffer.length() - l;
-            String s = new String(buffer.buffer(), pos, l);
-            this.wire.input(s + "[EOL]");
-        }
-        return l;
-    }
-
-    public HttpTransportMetrics getMetrics() {
-        return this.in.getMetrics();
-    }
-
-}
diff --git a/src/org/apache/http/impl/conn/LoggingSessionOutputBuffer.java b/src/org/apache/http/impl/conn/LoggingSessionOutputBuffer.java
deleted file mode 100644
index 1afab7d..0000000
--- a/src/org/apache/http/impl/conn/LoggingSessionOutputBuffer.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/LoggingSessionOutputBuffer.java $
- * $Revision: 674186 $
- * $Date: 2008-07-05 05:18:54 -0700 (Sat, 05 Jul 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.impl.conn;
-
-import java.io.IOException;
-
-import org.apache.http.io.HttpTransportMetrics;
-import org.apache.http.io.SessionOutputBuffer;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Logs all data written to the wire LOG.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class LoggingSessionOutputBuffer implements SessionOutputBuffer {
-
-    /** Original data transmitter. */
-    private final SessionOutputBuffer out;
-    
-    /** The wire log to use. */
-    private final Wire wire;
-
-    /**
-     * Create an instance that wraps the specified session output buffer.
-     * @param out The session output buffer.
-     * @param wire The Wire log to use.
-     */
-    public LoggingSessionOutputBuffer(final SessionOutputBuffer out, final Wire wire) {
-        super();
-        this.out = out;
-        this.wire = wire;
-    }
-    
-    public void write(byte[] b, int off, int len) throws IOException {
-        this.out.write(b,  off,  len);
-        if (this.wire.enabled()) {
-            this.wire.output(b, off, len);
-        }
-    }
-
-    public void write(int b) throws IOException {
-        this.out.write(b);
-        if (this.wire.enabled()) {
-            this.wire.output(b);
-        }
-    }
-
-    public void write(byte[] b) throws IOException {
-        this.out.write(b);
-        if (this.wire.enabled()) {
-            this.wire.output(b);
-        }
-    }
-
-    public void flush() throws IOException {
-        this.out.flush();
-    }
-
-    public void writeLine(final CharArrayBuffer buffer) throws IOException {
-        this.out.writeLine(buffer);
-        if (this.wire.enabled()) {
-            String s = new String(buffer.buffer(), 0, buffer.length());
-            this.wire.output(s + "[EOL]");
-        }
-    }
-
-    public void writeLine(final String s) throws IOException {
-        this.out.writeLine(s);
-        if (this.wire.enabled()) {
-            this.wire.output(s + "[EOL]");
-        }
-    }
-
-    public HttpTransportMetrics getMetrics() {
-        return this.out.getMetrics();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/conn/ProxySelectorRoutePlanner.java b/src/org/apache/http/impl/conn/ProxySelectorRoutePlanner.java
deleted file mode 100644
index 136caf4..0000000
--- a/src/org/apache/http/impl/conn/ProxySelectorRoutePlanner.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/ProxySelectorRoutePlanner.java $
- * $Revision: 658785 $
- * $Date: 2008-05-21 10:47:40 -0700 (Wed, 21 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.impl.conn;
-
-
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Proxy;
-import java.net.ProxySelector;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.List;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.protocol.HttpContext;
-
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.routing.HttpRoutePlanner;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-
-import org.apache.http.conn.params.ConnRouteParams;
-
-
-/**
- * Default implementation of an {@link HttpRoutePlanner}.
- * This implementation is based on {@link java.net.ProxySelector}.
- * By default, it will pick up the proxy settings of the JVM, either
- * from system properties or from the browser running the application.
- * Additionally, it interprets some
- * {@link org.apache.http.conn.params.ConnRoutePNames parameters},
- * though not the {@link
- * org.apache.http.conn.params.ConnRoutePNames#DEFAULT_PROXY DEFAULT_PROXY}.
- */
-public class ProxySelectorRoutePlanner implements HttpRoutePlanner {
-    
-    /** The scheme registry. */
-    protected SchemeRegistry schemeRegistry;
-
-    /** The proxy selector to use, or <code>null</code> for system default. */
-    protected ProxySelector proxySelector;
-
-
-    /**
-     * Creates a new proxy selector route planner.
-     *
-     * @param schreg    the scheme registry
-     * @param prosel    the proxy selector, or
-     *                  <code>null</code> for the system default
-     */
-    public ProxySelectorRoutePlanner(SchemeRegistry schreg,
-                                     ProxySelector prosel) {
-
-        if (schreg == null) {
-            throw new IllegalArgumentException
-                ("SchemeRegistry must not be null.");
-        }
-        schemeRegistry = schreg;
-        proxySelector  = prosel;
-    }
-
-
-    /**
-     * Obtains the proxy selector to use.
-     *
-     * @return the proxy selector, or <code>null</code> for the system default
-     */
-    public ProxySelector getProxySelector() {
-        return this.proxySelector;
-    }
-
-
-    /**
-     * Sets the proxy selector to use.
-     *
-     * @param prosel    the proxy selector, or
-     *                  <code>null</code> to use the system default
-     */
-    public void setProxySelector(ProxySelector prosel) {
-        this.proxySelector = prosel;
-    }
-
-
-
-    // non-javadoc, see interface HttpRoutePlanner
-    public HttpRoute determineRoute(HttpHost target,
-                                    HttpRequest request,
-                                    HttpContext context)
-        throws HttpException {
-
-        if (request == null) {
-            throw new IllegalStateException
-                ("Request must not be null.");
-        }
-
-        // If we have a forced route, we can do without a target.
-        HttpRoute route =
-            ConnRouteParams.getForcedRoute(request.getParams());
-        if (route != null)
-            return route;
-
-        // If we get here, there is no forced route.
-        // So we need a target to compute a route.
-
-        if (target == null) {
-            throw new IllegalStateException
-                ("Target host must not be null.");
-        }
-
-        final InetAddress local =
-            ConnRouteParams.getLocalAddress(request.getParams());
-        final HttpHost proxy = determineProxy(target, request, context);
-
-        final Scheme schm =
-            this.schemeRegistry.getScheme(target.getSchemeName());
-        // as it is typically used for TLS/SSL, we assume that
-        // a layered scheme implies a secure connection
-        final boolean secure = schm.isLayered();
-
-        if (proxy == null) {
-            route = new HttpRoute(target, local, secure);
-        } else {
-            route = new HttpRoute(target, local, proxy, secure);
-        }
-        return route;
-    }
-
-
-    /**
-     * Determines a proxy for the given target.
-     *
-     * @param target    the planned target, never <code>null</code>
-     * @param request   the request to be sent, never <code>null</code>
-     * @param context   the context, or <code>null</code>
-     *
-     * @return  the proxy to use, or <code>null</code> for a direct route
-     *
-     * @throws HttpException
-     *         in case of system proxy settings that cannot be handled
-     */
-    protected HttpHost determineProxy(HttpHost    target,
-                                      HttpRequest request,
-                                      HttpContext context)
-        throws HttpException {
-
-        // the proxy selector can be 'unset', so we better deal with null here
-        ProxySelector psel = this.proxySelector;
-        if (psel == null)
-            psel = ProxySelector.getDefault();
-        if (psel == null)
-            return null;
-
-        URI targetURI = null;
-        try {
-            targetURI = new URI(target.toURI());
-        } catch (URISyntaxException usx) {
-            throw new HttpException
-                ("Cannot convert host to URI: " + target, usx);
-        }
-        List<Proxy> proxies = psel.select(targetURI);
-
-        Proxy p = chooseProxy(proxies, target, request, context);
-
-        HttpHost result = null;
-        if (p.type() == Proxy.Type.HTTP) {
-            // convert the socket address to an HttpHost
-            if (!(p.address() instanceof InetSocketAddress)) {
-                throw new HttpException
-                    ("Unable to handle non-Inet proxy address: "+p.address());
-            }
-            final InetSocketAddress isa = (InetSocketAddress) p.address();
-            // assume default scheme (http)
-            result = new HttpHost(getHost(isa), isa.getPort());
-        }
-
-        return result;
-    }
-
-
-    /**
-     * Obtains a host from an {@link InetSocketAddress}.
-     *
-     * @param isa       the socket address
-     *
-     * @return  a host string, either as a symbolic name or
-     *          as a literal IP address string
-     * <br/>
-     * (TODO: determine format for IPv6 addresses, with or without [brackets])
-     */
-    protected String getHost(InetSocketAddress isa) {
-
-        //@@@ Will this work with literal IPv6 addresses, or do we
-        //@@@ need to wrap these in [] for the string representation?
-        //@@@ Having it in this method at least allows for easy workarounds.
-       return isa.isUnresolved() ?
-            isa.getHostName() : isa.getAddress().getHostAddress();
- 
-    }
-
-
-    /*
-     * Chooses a proxy from a list of available proxies.
-     * The default implementation just picks the first non-SOCKS proxy
-     * from the list. If there are only SOCKS proxies,
-     * {@link Proxy#NO_PROXY Proxy.NO_PROXY} is returned.
-     * Derived classes may implement more advanced strategies,
-     * such as proxy rotation if there are multiple options.
-     *
-     * @param proxies   the list of proxies to choose from,
-     *                  never <code>null</code> or empty
-     * @param target    the planned target, never <code>null</code>
-     * @param request   the request to be sent, never <code>null</code>
-     * @param context   the context, or <code>null</code>
-     *
-     * @return  a proxy of type {@link Proxy.Type#DIRECT DIRECT}
-     *          or {@link Proxy.Type#HTTP HTTP}, never <code>null</code>
-     */
-    protected Proxy chooseProxy(List<Proxy> proxies,
-                                HttpHost    target,
-                                HttpRequest request,
-                                HttpContext context) {
-
-        if ((proxies == null) || proxies.isEmpty()) {
-            throw new IllegalArgumentException
-                ("Proxy list must not be empty.");
-        }
-
-        Proxy result = null;
-
-        // check the list for one we can use
-        for (int i=0; (result == null) && (i < proxies.size()); i++) {
-
-            Proxy p = proxies.get(i);
-            switch (p.type()) {
-
-            case DIRECT:
-            case HTTP:
-                result = p;
-                break;
-
-            case SOCKS:
-                // SOCKS hosts are not handled on the route level.
-                // The socket may make use of the SOCKS host though.
-                break;
-            }
-        }
-
-        if (result == null) {
-            //@@@ log as warning or info that only a socks proxy is available?
-            // result can only be null if all proxies are socks proxies
-            // socks proxies are not handled on the route planning level
-            result = Proxy.NO_PROXY;
-        }
-
-        return result;
-    }
-
-} // class ProxySelectorRoutePlanner
-
diff --git a/src/org/apache/http/impl/conn/SingleClientConnManager.java b/src/org/apache/http/impl/conn/SingleClientConnManager.java
deleted file mode 100644
index 7999f3e..0000000
--- a/src/org/apache/http/impl/conn/SingleClientConnManager.java
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/SingleClientConnManager.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.impl.conn;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.ClientConnectionOperator;
-import org.apache.http.conn.ClientConnectionRequest;
-import org.apache.http.conn.ManagedClientConnection;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.routing.RouteTracker;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.params.HttpParams;
-
-
-/**
- * A connection "manager" for a single connection.
- * This manager is good only for single-threaded use.
- * Allocation <i>always</i> returns the connection immediately,
- * even if it has not been released after the previous allocation.
- * In that case, a {@link #MISUSE_MESSAGE warning} is logged
- * and the previously issued connection is revoked.
- * <p>
- * This class is derived from <code>SimpleHttpConnectionManager</code>
- * in HttpClient 3. See there for original authors.
- * </p>
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author <a href="mailto:becke@u.washington.edu">Michael Becke</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version   $Revision: 673450 $
- *
- * @since 4.0
- */
-public class SingleClientConnManager implements ClientConnectionManager {
-
-    private final Log log = LogFactory.getLog(getClass());
-
-    /** The message to be logged on multiple allocation. */
-    public final static String MISUSE_MESSAGE =
-    "Invalid use of SingleClientConnManager: connection still allocated.\n" +
-    "Make sure to release the connection before allocating another one.";
-
-
-    /** The schemes supported by this connection manager. */
-    protected SchemeRegistry schemeRegistry; 
-    
-    /** The operator for opening and updating connections. */
-    protected ClientConnectionOperator connOperator;
-
-    /** The one and only entry in this pool. */
-    protected PoolEntry uniquePoolEntry;
-
-    /** The currently issued managed connection, if any. */
-    protected ConnAdapter managedConn;
-
-    /** The time of the last connection release, or -1. */
-    protected long lastReleaseTime;
-    
-    /** The time the last released connection expires and shouldn't be reused. */
-    protected long connectionExpiresTime;
-
-    /** Whether the connection should be shut down  on release. */
-    protected boolean alwaysShutDown;
-
-    /** Indicates whether this connection manager is shut down. */
-    protected volatile boolean isShutDown;
-
-
-
-
-    /**
-     * Creates a new simple connection manager.
-     *
-     * @param params    the parameters for this manager
-     * @param schreg    the scheme registry, or
-     *                  <code>null</code> for the default registry
-     */
-    public SingleClientConnManager(HttpParams params,
-                                   SchemeRegistry schreg) {
-
-        if (schreg == null) {
-            throw new IllegalArgumentException
-                ("Scheme registry must not be null.");
-        }
-        this.schemeRegistry  = schreg;
-        this.connOperator    = createConnectionOperator(schreg);
-        this.uniquePoolEntry = new PoolEntry();
-        this.managedConn     = null;
-        this.lastReleaseTime = -1L;
-        this.alwaysShutDown  = false; //@@@ from params? as argument?
-        this.isShutDown      = false;
-
-    } // <constructor>
-
-
-    @Override
-    protected void finalize() throws Throwable {
-        shutdown();
-        super.finalize();
-    }
-
-
-    // non-javadoc, see interface ClientConnectionManager
-    public SchemeRegistry getSchemeRegistry() {
-        return this.schemeRegistry;
-    }
-
-    
-    /**
-     * Hook for creating the connection operator.
-     * It is called by the constructor.
-     * Derived classes can override this method to change the
-     * instantiation of the operator.
-     * The default implementation here instantiates
-     * {@link DefaultClientConnectionOperator DefaultClientConnectionOperator}.
-     *
-     * @param schreg    the scheme registry to use, or <code>null</code>
-     *
-     * @return  the connection operator to use
-     */
-    protected ClientConnectionOperator
-        createConnectionOperator(SchemeRegistry schreg) {
-
-        return new DefaultClientConnectionOperator(schreg);
-    }
-
-
-    /**
-     * Asserts that this manager is not shut down.
-     *
-     * @throws IllegalStateException    if this manager is shut down
-     */
-    protected final void assertStillUp()
-        throws IllegalStateException {
-
-        if (this.isShutDown)
-            throw new IllegalStateException("Manager is shut down.");
-    }
-
-
-    public final ClientConnectionRequest requestConnection(
-            final HttpRoute route,
-            final Object state) {
-        
-        return new ClientConnectionRequest() {
-            
-            public void abortRequest() {
-                // Nothing to abort, since requests are immediate.
-            }
-            
-            public ManagedClientConnection getConnection(
-                    long timeout, TimeUnit tunit) {
-                return SingleClientConnManager.this.getConnection(
-                        route, state);
-            }
-            
-        };
-    }
-
-
-    /**
-     * Obtains a connection.
-     * This method does not block.
-     *
-     * @param route     where the connection should point to
-     *
-     * @return  a connection that can be used to communicate
-     *          along the given route
-     */
-    public ManagedClientConnection getConnection(HttpRoute route, Object state) {
-
-        if (route == null) {
-            throw new IllegalArgumentException("Route may not be null.");
-        }
-        assertStillUp();
-
-        if (log.isDebugEnabled()) {
-            log.debug("Get connection for route " + route);
-        }
-
-        if (managedConn != null)
-            revokeConnection();
-
-        // check re-usability of the connection
-        boolean recreate = false;
-        boolean shutdown = false;
-        
-        // Kill the connection if it expired.
-        closeExpiredConnections();
-        
-        if (uniquePoolEntry.connection.isOpen()) {
-            RouteTracker tracker = uniquePoolEntry.tracker;
-            shutdown = (tracker == null || // can happen if method is aborted
-                        !tracker.toRoute().equals(route));
-        } else {
-            // If the connection is not open, create a new PoolEntry,
-            // as the connection may have been marked not reusable,
-            // due to aborts -- and the PoolEntry should not be reused
-            // either.  There's no harm in recreating an entry if
-            // the connection is closed.
-            recreate = true;
-        }
-
-        if (shutdown) {
-            recreate = true;
-            try {
-                uniquePoolEntry.shutdown();
-            } catch (IOException iox) {
-                log.debug("Problem shutting down connection.", iox);
-            }
-        }
-        
-        if (recreate)
-            uniquePoolEntry = new PoolEntry();
-
-        managedConn = new ConnAdapter(uniquePoolEntry, route);
-
-        return managedConn;
-    }
-
-
-    // non-javadoc, see interface ClientConnectionManager
-    public void releaseConnection(ManagedClientConnection conn, long validDuration, TimeUnit timeUnit) {
-        assertStillUp();
-
-        if (!(conn instanceof ConnAdapter)) {
-            throw new IllegalArgumentException
-                ("Connection class mismatch, " +
-                 "connection not obtained from this manager.");
-        }
-        
-        if (log.isDebugEnabled()) {
-            log.debug("Releasing connection " + conn);
-        }
-
-        ConnAdapter sca = (ConnAdapter) conn;
-        if (sca.poolEntry == null)
-            return; // already released
-        ClientConnectionManager manager = sca.getManager();
-        if (manager != null && manager != this) {
-            throw new IllegalArgumentException
-                ("Connection not obtained from this manager.");
-        }
-
-        try {
-            // make sure that the response has been read completely
-            if (sca.isOpen() && (this.alwaysShutDown ||
-                                 !sca.isMarkedReusable())
-                ) {
-                if (log.isDebugEnabled()) {
-                    log.debug
-                        ("Released connection open but not reusable.");
-                }
-
-                // make sure this connection will not be re-used
-                // we might have gotten here because of a shutdown trigger
-                // shutdown of the adapter also clears the tracked route
-                sca.shutdown();
-            }
-        } catch (IOException iox) {
-            //@@@ log as warning? let pass?
-            if (log.isDebugEnabled())
-                log.debug("Exception shutting down released connection.",
-                          iox);
-        } finally {
-            sca.detach();
-            managedConn = null;
-            lastReleaseTime = System.currentTimeMillis();
-            if(validDuration > 0)
-                connectionExpiresTime = timeUnit.toMillis(validDuration) + lastReleaseTime;
-            else
-                connectionExpiresTime = Long.MAX_VALUE;
-        }
-    } // releaseConnection
-    
-    public void closeExpiredConnections() {
-        if(System.currentTimeMillis() >= connectionExpiresTime) {
-            closeIdleConnections(0, TimeUnit.MILLISECONDS);
-        }
-    }
-
-
-    // non-javadoc, see interface ClientConnectionManager
-    public void closeIdleConnections(long idletime, TimeUnit tunit) {
-        assertStillUp();
-
-        // idletime can be 0 or negative, no problem there
-        if (tunit == null) {
-            throw new IllegalArgumentException("Time unit must not be null.");
-        }
-
-        if ((managedConn == null) && uniquePoolEntry.connection.isOpen()) {
-            final long cutoff =
-                System.currentTimeMillis() - tunit.toMillis(idletime);
-            if (lastReleaseTime <= cutoff) {
-                try {
-                    uniquePoolEntry.close();
-                } catch (IOException iox) {
-                    // ignore
-                    log.debug("Problem closing idle connection.", iox);
-                }
-            }
-        }
-    }
-
-
-    // non-javadoc, see interface ClientConnectionManager
-    public void shutdown() {
-
-        this.isShutDown = true;
-
-        if (managedConn != null)
-            managedConn.detach();
-
-        try {
-            if (uniquePoolEntry != null) // and connection open?
-                uniquePoolEntry.shutdown();
-        } catch (IOException iox) {
-            // ignore
-            log.debug("Problem while shutting down manager.", iox);
-        } finally {
-            uniquePoolEntry = null;
-        }
-    }
-
-
-    /**
-     * Revokes the currently issued connection.
-     * The adapter gets disconnected, the connection will be shut down.
-     */
-    protected void revokeConnection() {
-        if (managedConn == null)
-            return;
-
-        log.warn(MISUSE_MESSAGE);
-
-        managedConn.detach();
-
-        try {
-            uniquePoolEntry.shutdown();
-        } catch (IOException iox) {
-            // ignore
-            log.debug("Problem while shutting down connection.", iox);
-        }
-    }
-
-    
-    /**
-     * The pool entry for this connection manager.
-     */
-    protected class PoolEntry extends AbstractPoolEntry {
-
-        /**
-         * Creates a new pool entry.
-         *
-         */
-        protected PoolEntry() {
-            super(SingleClientConnManager.this.connOperator, null);
-        }
-
-        /**
-         * Closes the connection in this pool entry.
-         */
-        protected void close()
-            throws IOException {
-
-            shutdownEntry();
-            if (connection.isOpen())
-                connection.close();
-        }
-
-
-        /**
-         * Shuts down the connection in this pool entry.
-         */
-        protected void shutdown()
-            throws IOException {
-
-            shutdownEntry();
-            if (connection.isOpen())
-                connection.shutdown();
-        }
-
-    } // class PoolEntry
-
-
-
-    /**
-     * The connection adapter used by this manager.
-     */
-    protected class ConnAdapter extends AbstractPooledConnAdapter {
-
-        /**
-         * Creates a new connection adapter.
-         *
-         * @param entry   the pool entry for the connection being wrapped
-         * @param route   the planned route for this connection
-         */
-        protected ConnAdapter(PoolEntry entry, HttpRoute route) {
-            super(SingleClientConnManager.this, entry);
-            markReusable();
-            entry.route = route;
-        }
-
-    }
-
-
-} // class SingleClientConnManager
diff --git a/src/org/apache/http/impl/conn/Wire.java b/src/org/apache/http/impl/conn/Wire.java
deleted file mode 100644
index 147b7f5..0000000
--- a/src/org/apache/http/impl/conn/Wire.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/Wire.java,v 1.9 2004/06/24 21:39:52 mbecke Exp $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.conn;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ByteArrayInputStream;
-import org.apache.commons.logging.Log;
-
-/**
- * Logs data to the wire LOG.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class Wire {
-
-    private final Log log;
-    
-    public Wire(Log log) {
-        this.log = log;
-    }
-    
-    private void wire(String header, InputStream instream)
-      throws IOException {
-        StringBuilder buffer = new StringBuilder();
-        int ch;
-        while ((ch = instream.read()) != -1) {
-            if (ch == 13) {
-                buffer.append("[\\r]");
-            } else if (ch == 10) {
-                    buffer.append("[\\n]\"");
-                    buffer.insert(0, "\"");
-                    buffer.insert(0, header);
-                    log.debug(buffer.toString());
-                    buffer.setLength(0);
-            } else if ((ch < 32) || (ch > 127)) {
-                buffer.append("[0x");
-                buffer.append(Integer.toHexString(ch));
-                buffer.append("]");
-            } else {
-                buffer.append((char) ch);
-            }
-        } 
-        if (buffer.length() > 0) {
-            buffer.append('\"');
-            buffer.insert(0, '\"');
-            buffer.insert(0, header);
-            log.debug(buffer.toString());
-        }
-    }
-
-
-    public boolean enabled() {
-        return log.isDebugEnabled();
-    }    
-    
-    public void output(InputStream outstream)
-      throws IOException {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Output may not be null"); 
-        }
-        wire(">> ", outstream);
-    }
-
-    public void input(InputStream instream)
-      throws IOException {
-        if (instream == null) {
-            throw new IllegalArgumentException("Input may not be null"); 
-        }
-        wire("<< ", instream);
-    }
-
-    public void output(byte[] b, int off, int len)
-      throws IOException {
-        if (b == null) {
-            throw new IllegalArgumentException("Output may not be null"); 
-        }
-        wire(">> ", new ByteArrayInputStream(b, off, len));
-    }
-
-    public void input(byte[] b, int off, int len)
-      throws IOException {
-        if (b == null) {
-            throw new IllegalArgumentException("Input may not be null"); 
-        }
-        wire("<< ", new ByteArrayInputStream(b, off, len));
-    }
-
-    public void output(byte[] b)
-      throws IOException {
-        if (b == null) {
-            throw new IllegalArgumentException("Output may not be null"); 
-        }
-        wire(">> ", new ByteArrayInputStream(b));
-    }
-
-    public void input(byte[] b)
-      throws IOException {
-        if (b == null) {
-            throw new IllegalArgumentException("Input may not be null"); 
-        }
-        wire("<< ", new ByteArrayInputStream(b));
-    }
-
-    public void output(int b)
-      throws IOException {
-        output(new byte[] {(byte) b});
-    }
-
-    public void input(int b)
-      throws IOException {
-        input(new byte[] {(byte) b});
-    }
-
-    public void output(final String s)
-      throws IOException {
-        if (s == null) {
-            throw new IllegalArgumentException("Output may not be null"); 
-        }
-        output(s.getBytes());
-    }
-
-    public void input(final String s)
-      throws IOException {
-        if (s == null) {
-            throw new IllegalArgumentException("Input may not be null"); 
-        }
-        input(s.getBytes());
-    }
-}
diff --git a/src/org/apache/http/impl/conn/package.html b/src/org/apache/http/impl/conn/package.html
deleted file mode 100644
index 54eb3c2..0000000
--- a/src/org/apache/http/impl/conn/package.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<body>
-
-
-</body>
-
diff --git a/src/org/apache/http/impl/conn/tsccm/AbstractConnPool.java b/src/org/apache/http/impl/conn/tsccm/AbstractConnPool.java
deleted file mode 100644
index 2b37d72..0000000
--- a/src/org/apache/http/impl/conn/tsccm/AbstractConnPool.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/AbstractConnPool.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.impl.conn.tsccm;
-
-import java.io.IOException;
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.conn.ConnectionPoolTimeoutException;
-import org.apache.http.conn.OperatedClientConnection;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.impl.conn.IdleConnectionHandler;
-
-
-/**
- * An abstract connection pool.
- * It is used by the {@link ThreadSafeClientConnManager}.
- * The abstract pool includes a {@link #poolLock}, which is used to
- * synchronize access to the internal pool datastructures.
- * Don't use <code>synchronized</code> for that purpose!
- */
-public abstract class AbstractConnPool implements RefQueueHandler {
-
-    private final Log log = LogFactory.getLog(getClass());
-
-    /**
-     * The global lock for this pool.
-     */
-    protected final Lock poolLock;
-
-
-    /**
-     * References to issued connections.
-     * Objects in this set are of class
-     * {@link BasicPoolEntryRef BasicPoolEntryRef},
-     * and point to the pool entry for the issued connection.
-     * GCed connections are detected by the missing pool entries.
-     */
-    protected Set<BasicPoolEntryRef> issuedConnections;
-
-    /** The handler for idle connections. */
-    protected IdleConnectionHandler idleConnHandler;
-
-    /** The current total number of connections. */
-    protected int numConnections;
-
-    /**
-     * A reference queue to track loss of pool entries to GC.
-     * The same queue is used to track loss of the connection manager,
-     * so we cannot specialize the type.
-     */
-    protected ReferenceQueue<Object> refQueue;
-
-    /** A worker (thread) to track loss of pool entries to GC. */
-    private RefQueueWorker refWorker;
-
-
-    /** Indicates whether this pool is shut down. */
-    protected volatile boolean isShutDown;
-
-    /**
-     * Creates a new connection pool.
-     */
-    protected AbstractConnPool() {
-        issuedConnections = new HashSet<BasicPoolEntryRef>();
-        idleConnHandler = new IdleConnectionHandler();
-
-        boolean fair = false; //@@@ check parameters to decide
-        poolLock = new ReentrantLock(fair);
-    }
-
-
-    /**
-     * Enables connection garbage collection (GC).
-     * This method must be called immediately after creating the
-     * connection pool. It is not possible to enable connection GC
-     * after pool entries have been created. Neither is it possible
-     * to disable connection GC.
-     *
-     * @throws IllegalStateException
-     *         if connection GC is already enabled, or if it cannot be
-     *         enabled because there already are pool entries
-     */
-    public void enableConnectionGC()
-        throws IllegalStateException {
-
-        if (refQueue != null) {
-            throw new IllegalStateException("Connection GC already enabled.");
-        }
-        poolLock.lock();
-        try {
-            if (numConnections > 0) { //@@@ is this check sufficient?
-                throw new IllegalStateException("Pool already in use.");
-            }
-        } finally {
-            poolLock.unlock();
-        }
-
-        refQueue  = new ReferenceQueue<Object>();
-        refWorker = new RefQueueWorker(refQueue, this);
-        Thread t = new Thread(refWorker); //@@@ use a thread factory
-        t.setDaemon(true);
-        t.setName("RefQueueWorker@" + this);
-        t.start();
-    }
-
-
-    /**
-     * Obtains a pool entry with a connection within the given timeout.
-     *
-     * @param route     the route for which to get the connection
-     * @param timeout   the timeout, 0 or negative for no timeout
-     * @param tunit     the unit for the <code>timeout</code>,
-     *                  may be <code>null</code> only if there is no timeout
-     *
-     * @return  pool entry holding a connection for the route
-     *
-     * @throws ConnectionPoolTimeoutException
-     *         if the timeout expired
-     * @throws InterruptedException
-     *         if the calling thread was interrupted
-     */
-    public final
-        BasicPoolEntry getEntry(
-                HttpRoute route, 
-                Object state,
-                long timeout, 
-                TimeUnit tunit)
-                    throws ConnectionPoolTimeoutException, InterruptedException {
-        return requestPoolEntry(route, state).getPoolEntry(timeout, tunit);
-    }
-    
-    /**
-     * Returns a new {@link PoolEntryRequest}, from which a {@link BasicPoolEntry}
-     * can be obtained, or the request can be aborted.
-     */
-    public abstract PoolEntryRequest requestPoolEntry(HttpRoute route, Object state);
-
-
-    /**
-     * Returns an entry into the pool.
-     * The connection of the entry is expected to be in a suitable state,
-     * either open and re-usable, or closed. The pool will not make any
-     * attempt to determine whether it can be re-used or not.
-     *
-     * @param entry     the entry for the connection to release
-     * @param reusable  <code>true</code> if the entry is deemed 
-     *                  reusable, <code>false</code> otherwise.
-     * @param validDuration The duration that the entry should remain free and reusable.
-     * @param timeUnit The unit of time the duration is measured in.
-     */
-    public abstract void freeEntry(BasicPoolEntry entry, boolean reusable, long validDuration, TimeUnit timeUnit)
-        ;
-
-
-
-    // non-javadoc, see interface RefQueueHandler
-// BEGIN android-changed
-    public void handleReference(Reference ref) {
-// END android-changed
-        poolLock.lock();
-        try {
-
-            if (ref instanceof BasicPoolEntryRef) {
-                // check if the GCed pool entry was still in use
-                //@@@ find a way to detect this without lookup
-                //@@@ flag in the BasicPoolEntryRef, to be reset when freed?
-                final boolean lost = issuedConnections.remove(ref);
-                if (lost) {
-                    final HttpRoute route =
-                        ((BasicPoolEntryRef)ref).getRoute();
-                    if (log.isDebugEnabled()) {
-                        log.debug("Connection garbage collected. " + route);
-                    }
-                    handleLostEntry(route);
-                }
-            }
-
-        } finally {
-            poolLock.unlock();
-        }
-    }
-
-
-    /**
-     * Handles cleaning up for a lost pool entry with the given route.
-     * A lost pool entry corresponds to a connection that was
-     * garbage collected instead of being properly released.
-     *
-     * @param route     the route of the pool entry that was lost
-     */
-    protected abstract void handleLostEntry(HttpRoute route)
-        ;
-
-
-    /**
-     * Closes idle connections.
-     *
-     * @param idletime  the time the connections should have been idle
-     *                  in order to be closed now
-     * @param tunit     the unit for the <code>idletime</code>
-     */
-    public void closeIdleConnections(long idletime, TimeUnit tunit) {
-
-        // idletime can be 0 or negative, no problem there
-        if (tunit == null) {
-            throw new IllegalArgumentException("Time unit must not be null.");
-        }
-
-        poolLock.lock();
-        try {
-            idleConnHandler.closeIdleConnections(tunit.toMillis(idletime));
-        } finally {
-            poolLock.unlock();
-        }
-    }
-    
-    public void closeExpiredConnections() {
-        poolLock.lock();
-        try {
-            idleConnHandler.closeExpiredConnections();
-        } finally {
-            poolLock.unlock();
-        }
-    }
-
-        
-    //@@@ revise this cleanup stuff (closeIdle+deleteClosed), it's not good
-
-    /**
-     * Deletes all entries for closed connections.
-     */
-    public abstract void deleteClosedConnections()
-        ;
-
-
-    /**
-     * Shuts down this pool and all associated resources.
-     * Overriding methods MUST call the implementation here!
-     */
-    public void shutdown() {
-
-        poolLock.lock();
-        try {
-
-            if (isShutDown)
-                return;
-
-            // no point in monitoring GC anymore
-            if (refWorker != null)
-                refWorker.shutdown();
-
-            // close all connections that are issued to an application
-            Iterator<BasicPoolEntryRef> iter = issuedConnections.iterator();
-            while (iter.hasNext()) {
-                BasicPoolEntryRef per = iter.next();
-                iter.remove();
-                BasicPoolEntry entry = per.get();
-                if (entry != null) {
-                    closeConnection(entry.getConnection());
-                }
-            }
-
-            // remove all references to connections
-            //@@@ use this for shutting them down instead?
-            idleConnHandler.removeAll();
-
-            isShutDown = true;
-
-        } finally {
-            poolLock.unlock();
-        }
-    }
-
-
-    /**
-     * Closes a connection from this pool.
-     *
-     * @param conn      the connection to close, or <code>null</code>
-     */
-    protected void closeConnection(final OperatedClientConnection conn) {
-        if (conn != null) {
-            try {
-                conn.close();
-            } catch (IOException ex) {
-                log.debug("I/O error closing connection", ex);
-            }
-        }
-    }
-
-
-
-
-
-} // class AbstractConnPool
-
diff --git a/src/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java b/src/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
deleted file mode 100644
index dded360..0000000
--- a/src/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java $
- * $Revision: 652721 $
- * $Date: 2008-05-01 17:32:20 -0700 (Thu, 01 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.impl.conn.tsccm;
-
-
-import java.lang.ref.ReferenceQueue;
-
-import org.apache.http.conn.OperatedClientConnection;
-import org.apache.http.conn.ClientConnectionOperator;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.impl.conn.AbstractPoolEntry;
-
-
-
-/**
- * Basic implementation of a connection pool entry.
- */
-public class BasicPoolEntry extends AbstractPoolEntry {
-
-    /**
-     * A weak reference to <code>this</code> used to detect GC of entries.
-     * Pool entries can only be GCed when they are allocated by an application
-     * and therefore not referenced with a hard link in the manager.
-     */
-    private final BasicPoolEntryRef reference;
-
-    /**
-     * Creates a new pool entry.
-     *
-     * @param op      the connection operator
-     * @param route   the planned route for the connection
-     * @param queue   the reference queue for tracking GC of this entry,
-     *                or <code>null</code>
-     */
-    public BasicPoolEntry(ClientConnectionOperator op,
-                          HttpRoute route,
-                          ReferenceQueue<Object> queue) {
-        super(op, route);
-        if (route == null) {
-            throw new IllegalArgumentException("HTTP route may not be null");
-        }
-        this.reference = new BasicPoolEntryRef(this, queue);
-    }
-
-    protected final OperatedClientConnection getConnection() {
-        return super.connection;
-    }
-
-    protected final HttpRoute getPlannedRoute() {
-        return super.route;
-    }
-
-    protected final BasicPoolEntryRef getWeakRef() {
-        return this.reference;
-    }
-
-
-} // class BasicPoolEntry
-
-
diff --git a/src/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java b/src/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
deleted file mode 100644
index 32df8a5..0000000
--- a/src/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java $
- * $Revision: 674186 $
- * $Date: 2008-07-05 05:18:54 -0700 (Sat, 05 Jul 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.impl.conn.tsccm;
-
-
-import java.lang.ref.WeakReference;
-import java.lang.ref.ReferenceQueue;
-
-import org.apache.http.conn.routing.HttpRoute;
-
-
-
-/**
- * A weak reference to a {@link BasicPoolEntry BasicPoolEntry}.
- * This reference explicitly keeps the planned route, so the connection
- * can be reclaimed if it is lost to garbage collection.
- */
-public class BasicPoolEntryRef extends WeakReference<BasicPoolEntry> {
-
-    /** The planned route of the entry. */
-    private final HttpRoute route;
-
-
-    /**
-     * Creates a new reference to a pool entry.
-     *
-     * @param entry   the pool entry, must not be <code>null</code>
-     * @param queue   the reference queue, or <code>null</code>
-     */
-    public BasicPoolEntryRef(BasicPoolEntry entry,
-                             ReferenceQueue<Object> queue) {
-        super(entry, queue);
-        if (entry == null) {
-            throw new IllegalArgumentException
-                ("Pool entry must not be null.");
-        }
-        route = entry.getPlannedRoute();
-    }
-
-
-    /**
-     * Obtain the planned route for the referenced entry.
-     * The planned route is still available, even if the entry is gone.
-     *
-     * @return      the planned route
-     */
-    public final HttpRoute getRoute() {
-        return this.route;
-    }
-
-} // class BasicPoolEntryRef
-
diff --git a/src/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.java b/src/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.java
deleted file mode 100644
index 29455d0..0000000
--- a/src/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.java $
- * $Revision: 653214 $
- * $Date: 2008-05-04 07:12:13 -0700 (Sun, 04 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.impl.conn.tsccm;
-
-
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.impl.conn.AbstractPoolEntry;
-import org.apache.http.impl.conn.AbstractPooledConnAdapter;
-
-
-
-/**
- * A connection wrapper and callback handler.
- * All connections given out by the manager are wrappers which
- * can be {@link #detach detach}ed to prevent further use on release.
- */
-public class BasicPooledConnAdapter extends AbstractPooledConnAdapter {
-
-    /**
-     * Creates a new adapter.
-     *
-     * @param tsccm   the connection manager
-     * @param entry   the pool entry for the connection being wrapped
-     */
-    protected BasicPooledConnAdapter(ThreadSafeClientConnManager tsccm,
-                               AbstractPoolEntry entry) {
-        super(tsccm, entry);
-        markReusable();
-    }
-
-
-    @Override
-    protected ClientConnectionManager getManager() {
-        // override needed only to make method visible in this package
-        return super.getManager();
-    }
-
-
-    /**
-     * Obtains the pool entry.
-     *
-     * @return  the pool entry, or <code>null</code> if detached
-     */
-    protected AbstractPoolEntry getPoolEntry() {
-        return super.poolEntry;
-    }
-
-
-    // non-javadoc, see base class
-    @Override
-    protected void detach() {
-        // override needed only to make method visible in this package
-        super.detach();
-    }
-}
diff --git a/src/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.java b/src/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.java
deleted file mode 100644
index cf59129..0000000
--- a/src/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.java
+++ /dev/null
@@ -1,698 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.java $
- * $Revision: 677240 $
- * $Date: 2008-07-16 04:25:47 -0700 (Wed, 16 Jul 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.impl.conn.tsccm;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Queue;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.ClientConnectionOperator;
-import org.apache.http.conn.ConnectionPoolTimeoutException;
-import org.apache.http.conn.params.ConnPerRoute;
-import org.apache.http.conn.params.ConnManagerParams;
-import org.apache.http.params.HttpParams;
-
-
-/**
- * A connection pool that maintains connections by route.
- * This class is derived from <code>MultiThreadedHttpConnectionManager</code>
- * in HttpClient 3.x, see there for original authors. It implements the same
- * algorithm for connection re-use and connection-per-host enforcement:
- * <ul>
- * <li>connections are re-used only for the exact same route</li>
- * <li>connection limits are enforced per route rather than per host</li>
- * </ul>
- * Note that access to the pool datastructures is synchronized via the
- * {@link AbstractConnPool#poolLock poolLock} in the base class,
- * not via <code>synchronized</code> methods.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author <a href="mailto:becke@u.washington.edu">Michael Becke</a>
- * @author and others
- */
-public class ConnPoolByRoute extends AbstractConnPool {
-        
-    private final Log log = LogFactory.getLog(getClass());
-
-    /** Connection operator for this pool */
-    protected final ClientConnectionOperator operator;
-    
-    /** The list of free connections */
-    protected Queue<BasicPoolEntry> freeConnections;
-
-    /** The list of WaitingThreads waiting for a connection */
-    protected Queue<WaitingThread> waitingThreads;
-
-    /**
-     * A map of route-specific pools.
-     * Keys are of class {@link HttpRoute},
-     * values of class {@link RouteSpecificPool}.
-     */
-    protected final Map<HttpRoute, RouteSpecificPool> routeToPool;
-
-    protected final int maxTotalConnections;
-    
-    private final ConnPerRoute connPerRoute;
-    
-    /**
-     * Creates a new connection pool, managed by route.
-     */
-    public ConnPoolByRoute(final ClientConnectionOperator operator, final HttpParams params) {
-        super();
-        if (operator == null) {
-            throw new IllegalArgumentException("Connection operator may not be null");
-        }
-        this.operator = operator;
-        
-        freeConnections = createFreeConnQueue();
-        waitingThreads  = createWaitingThreadQueue();
-        routeToPool     = createRouteToPoolMap();
-        maxTotalConnections = ConnManagerParams
-            .getMaxTotalConnections(params);
-        connPerRoute = ConnManagerParams
-            .getMaxConnectionsPerRoute(params);
-    }
-
-
-    /**
-     * Creates the queue for {@link #freeConnections}.
-     * Called once by the constructor.
-     *
-     * @return  a queue
-     */
-    protected Queue<BasicPoolEntry> createFreeConnQueue() {
-        return new LinkedList<BasicPoolEntry>();
-    }
-
-    /**
-     * Creates the queue for {@link #waitingThreads}.
-     * Called once by the constructor.
-     *
-     * @return  a queue
-     */
-    protected Queue<WaitingThread> createWaitingThreadQueue() {
-        return new LinkedList<WaitingThread>();
-    }
-
-    /**
-     * Creates the map for {@link #routeToPool}.
-     * Called once by the constructor.
-     *
-     * @return  a map
-     */
-    protected Map<HttpRoute, RouteSpecificPool> createRouteToPoolMap() {
-        return new HashMap<HttpRoute, RouteSpecificPool>();
-    }
-
-
-    /**
-     * Creates a new route-specific pool.
-     * Called by {@link #getRoutePool} when necessary.
-     *
-     * @param route     the route
-     *
-     * @return  the new pool
-     */
-    protected RouteSpecificPool newRouteSpecificPool(HttpRoute route) {
-        return new RouteSpecificPool(route, connPerRoute.getMaxForRoute(route));
-    }
-
-
-    /**
-     * Creates a new waiting thread.
-     * Called by {@link #getRoutePool} when necessary.
-     *
-     * @param cond      the condition to wait for
-     * @param rospl     the route specific pool, or <code>null</code>
-     *
-     * @return  a waiting thread representation
-     */
-    protected WaitingThread newWaitingThread(Condition cond,
-                                             RouteSpecificPool rospl) {
-        return new WaitingThread(cond, rospl);
-    }
-
-
-    /**
-     * Get a route-specific pool of available connections.
-     *
-     * @param route   the route
-     * @param create    whether to create the pool if it doesn't exist
-     *
-     * @return  the pool for the argument route,
-     *     never <code>null</code> if <code>create</code> is <code>true</code>
-     */
-    protected RouteSpecificPool getRoutePool(HttpRoute route,
-                                             boolean create) {
-        RouteSpecificPool rospl = null;
-        poolLock.lock();
-        try {
-
-            rospl = routeToPool.get(route);
-            if ((rospl == null) && create) {
-                // no pool for this route yet (or anymore)
-                rospl = newRouteSpecificPool(route);
-                routeToPool.put(route, rospl);
-            }
-
-        } finally {
-            poolLock.unlock();
-        }
-
-        return rospl;
-    }
-
-
-    //@@@ consider alternatives for gathering statistics
-    public int getConnectionsInPool(HttpRoute route) {
-
-        poolLock.lock();
-        try {
-            // don't allow a pool to be created here!
-            RouteSpecificPool rospl = getRoutePool(route, false);
-            return (rospl != null) ? rospl.getEntryCount() : 0;
-
-        } finally {
-            poolLock.unlock();
-        }
-    }
-    
-    @Override
-    public PoolEntryRequest requestPoolEntry(
-            final HttpRoute route,
-            final Object state) {
-        
-        final WaitingThreadAborter aborter = new WaitingThreadAborter();
-        
-        return new PoolEntryRequest() {
-        
-            public void abortRequest() {
-                poolLock.lock();
-                try {
-                    aborter.abort();
-                } finally {
-                    poolLock.unlock();
-                }
-            }
-            
-            public BasicPoolEntry getPoolEntry(
-                    long timeout,
-                    TimeUnit tunit)
-                        throws InterruptedException, ConnectionPoolTimeoutException {
-                return getEntryBlocking(route, state, timeout, tunit, aborter);
-            }
-            
-        };
-    }
-
-    /**
-     * Obtains a pool entry with a connection within the given timeout.
-     * If a {@link WaitingThread} is used to block, {@link WaitingThreadAborter#setWaitingThread(WaitingThread)}
-     * must be called before blocking, to allow the thread to be interrupted.
-     *
-     * @param route     the route for which to get the connection
-     * @param timeout   the timeout, 0 or negative for no timeout
-     * @param tunit     the unit for the <code>timeout</code>,
-     *                  may be <code>null</code> only if there is no timeout
-     * @param aborter   an object which can abort a {@link WaitingThread}.
-     *
-     * @return  pool entry holding a connection for the route
-     *
-     * @throws ConnectionPoolTimeoutException
-     *         if the timeout expired
-     * @throws InterruptedException
-     *         if the calling thread was interrupted
-     */
-    protected BasicPoolEntry getEntryBlocking(
-                                   HttpRoute route, Object state,
-                                   long timeout, TimeUnit tunit,
-                                   WaitingThreadAborter aborter)
-        throws ConnectionPoolTimeoutException, InterruptedException {
-
-        Date deadline = null;
-        if (timeout > 0) {
-            deadline = new Date
-                (System.currentTimeMillis() + tunit.toMillis(timeout));
-        }
-
-        BasicPoolEntry entry = null;
-        poolLock.lock();
-        try {
-
-            RouteSpecificPool rospl = getRoutePool(route, true);
-            WaitingThread waitingThread = null;
-
-            while (entry == null) {
-
-                if (isShutDown) {
-                    throw new IllegalStateException
-                        ("Connection pool shut down.");
-                }
-
-                if (log.isDebugEnabled()) {
-                    log.debug("Total connections kept alive: " + freeConnections.size()); 
-                    log.debug("Total issued connections: " + issuedConnections.size()); 
-                    log.debug("Total allocated connection: " + numConnections + " out of " + maxTotalConnections);
-                }
-                
-                // the cases to check for:
-                // - have a free connection for that route
-                // - allowed to create a free connection for that route
-                // - can delete and replace a free connection for another route
-                // - need to wait for one of the things above to come true
-
-                entry = getFreeEntry(rospl, state);
-                if (entry != null) {
-                    break;
-                }
-                
-                boolean hasCapacity = rospl.getCapacity() > 0; 
-                
-                if (log.isDebugEnabled()) {
-                    log.debug("Available capacity: " + rospl.getCapacity() 
-                            + " out of " + rospl.getMaxEntries()
-                            + " [" + route + "][" + state + "]");
-                }
-                
-                if (hasCapacity && numConnections < maxTotalConnections) {
-
-                    entry = createEntry(rospl, operator);
-
-                } else if (hasCapacity && !freeConnections.isEmpty()) {
-
-                    deleteLeastUsedEntry();
-                    entry = createEntry(rospl, operator);
-
-                } else {
-
-                    if (log.isDebugEnabled()) {
-                        log.debug("Need to wait for connection" +
-                                " [" + route + "][" + state + "]");
-                    }
-
-                    if (waitingThread == null) {
-                        waitingThread =
-                            newWaitingThread(poolLock.newCondition(), rospl);
-                        aborter.setWaitingThread(waitingThread);
-                    }
-
-                    boolean success = false;
-                    try {
-                        rospl.queueThread(waitingThread);
-                        waitingThreads.add(waitingThread);
-                        success = waitingThread.await(deadline);
-
-                    } finally {
-                        // In case of 'success', we were woken up by the
-                        // connection pool and should now have a connection
-                        // waiting for us, or else we're shutting down.
-                        // Just continue in the loop, both cases are checked.
-                        rospl.removeThread(waitingThread);
-                        waitingThreads.remove(waitingThread);
-                    }
-
-                    // check for spurious wakeup vs. timeout
-                    if (!success && (deadline != null) &&
-                        (deadline.getTime() <= System.currentTimeMillis())) {
-                        throw new ConnectionPoolTimeoutException
-                            ("Timeout waiting for connection");
-                    }
-                }
-            } // while no entry
-
-        } finally {
-            poolLock.unlock();
-        }
-
-        return entry;
-
-    } // getEntry
-
-
-    // non-javadoc, see base class AbstractConnPool
-    @Override
-    public void freeEntry(BasicPoolEntry entry, boolean reusable, long validDuration, TimeUnit timeUnit) {
-
-        HttpRoute route = entry.getPlannedRoute();
-        if (log.isDebugEnabled()) {
-            log.debug("Freeing connection" +                                 
-                    " [" + route + "][" + entry.getState() + "]");
-        }
-
-        poolLock.lock();
-        try {
-            if (isShutDown) {
-                // the pool is shut down, release the
-                // connection's resources and get out of here
-                closeConnection(entry.getConnection());
-                return;
-            }
-
-            // no longer issued, we keep a hard reference now
-            issuedConnections.remove(entry.getWeakRef());
-
-            RouteSpecificPool rospl = getRoutePool(route, true);
-
-            if (reusable) {
-                rospl.freeEntry(entry);
-                freeConnections.add(entry);
-                idleConnHandler.add(entry.getConnection(), validDuration, timeUnit);
-            } else {
-                rospl.dropEntry();
-                numConnections--;
-            }
-
-            notifyWaitingThread(rospl);
-
-        } finally {
-            poolLock.unlock();
-        }
-
-    } // freeEntry
-
-
-
-    /**
-     * If available, get a free pool entry for a route.
-     *
-     * @param rospl       the route-specific pool from which to get an entry
-     *
-     * @return  an available pool entry for the given route, or
-     *          <code>null</code> if none is available
-     */
-    protected BasicPoolEntry getFreeEntry(RouteSpecificPool rospl, Object state) {
-
-        BasicPoolEntry entry = null;
-        poolLock.lock();
-        try {
-            boolean done = false;
-            while(!done) {
-
-                entry = rospl.allocEntry(state);
-    
-                if (entry != null) {
-                    if (log.isDebugEnabled()) {
-                        log.debug("Getting free connection" 
-                                + " [" + rospl.getRoute() + "][" + state + "]");
-    
-                    }
-                    freeConnections.remove(entry);
-                    boolean valid = idleConnHandler.remove(entry.getConnection());
-                    if(!valid) {
-                        // If the free entry isn't valid anymore, get rid of it
-                        // and loop to find another one that might be valid.
-                        if(log.isDebugEnabled())
-                            log.debug("Closing expired free connection"
-                                    + " [" + rospl.getRoute() + "][" + state + "]");
-                        closeConnection(entry.getConnection());
-                        // We use dropEntry instead of deleteEntry because the entry
-                        // is no longer "free" (we just allocated it), and deleteEntry
-                        // can only be used to delete free entries.
-                        rospl.dropEntry();
-                        numConnections--;
-                    } else {
-                        issuedConnections.add(entry.getWeakRef());
-                        done = true;
-                    }
-    
-                } else {
-                    done = true;
-                    if (log.isDebugEnabled()) {
-                        log.debug("No free connections" 
-                                + " [" + rospl.getRoute() + "][" + state + "]");
-                    }
-                }
-            }
-        } finally {
-            poolLock.unlock();
-        }
-
-        return entry;
-    }
-
-
-    /**
-     * Creates a new pool entry.
-     * This method assumes that the new connection will be handed
-     * out immediately.
-     *
-     * @param rospl       the route-specific pool for which to create the entry
-     * @param op        the operator for creating a connection
-     *
-     * @return  the new pool entry for a new connection
-     */
-    protected BasicPoolEntry createEntry(RouteSpecificPool rospl,
-                                         ClientConnectionOperator op) {
-
-        if (log.isDebugEnabled()) {
-            log.debug("Creating new connection [" + rospl.getRoute() + "]");
-        }
-
-        // the entry will create the connection when needed
-        BasicPoolEntry entry =
-            new BasicPoolEntry(op, rospl.getRoute(), refQueue);
-
-        poolLock.lock();
-        try {
-
-            rospl.createdEntry(entry);
-            numConnections++;
-
-            issuedConnections.add(entry.getWeakRef());
-
-        } finally {
-            poolLock.unlock();
-        }
-
-        return entry;
-    }
-
-        
-    /**
-     * Deletes a given pool entry.
-     * This closes the pooled connection and removes all references,
-     * so that it can be GCed.
-     * 
-     * <p><b>Note:</b> Does not remove the entry from the freeConnections list.
-     * It is assumed that the caller has already handled this step.</p>
-     * <!-- @@@ is that a good idea? or rather fix it? -->
-     * 
-     * @param entry         the pool entry for the connection to delete
-     */
-    protected void deleteEntry(BasicPoolEntry entry) {
-
-        HttpRoute route = entry.getPlannedRoute();
-
-        if (log.isDebugEnabled()) {
-            log.debug("Deleting connection" 
-                    + " [" + route + "][" + entry.getState() + "]");
-        }
-
-        poolLock.lock();
-        try {
-
-            closeConnection(entry.getConnection());
-
-            RouteSpecificPool rospl = getRoutePool(route, true);
-            rospl.deleteEntry(entry);
-            numConnections--;
-            if (rospl.isUnused()) {
-                routeToPool.remove(route);
-            }
-
-            idleConnHandler.remove(entry.getConnection());// not idle, but dead
-
-        } finally {
-            poolLock.unlock();
-        }
-    }
-
-
-    /**
-     * Delete an old, free pool entry to make room for a new one.
-     * Used to replace pool entries with ones for a different route.
-     */
-    protected void deleteLeastUsedEntry() {
-
-        try {
-            poolLock.lock();
-
-            //@@@ with get() instead of remove, we could
-            //@@@ leave the removing to deleteEntry()
-            BasicPoolEntry entry = freeConnections.remove();
-
-            if (entry != null) {
-                deleteEntry(entry);
-            } else if (log.isDebugEnabled()) {
-                log.debug("No free connection to delete.");
-            }
-
-        } finally {
-            poolLock.unlock();
-        }
-    }
-
-
-    // non-javadoc, see base class AbstractConnPool
-    @Override
-    protected void handleLostEntry(HttpRoute route) {
-
-        poolLock.lock();
-        try {
-
-            RouteSpecificPool rospl = getRoutePool(route, true);
-            rospl.dropEntry();
-            if (rospl.isUnused()) {
-                routeToPool.remove(route);
-            }
-
-            numConnections--;
-            notifyWaitingThread(rospl);
-
-        } finally {
-            poolLock.unlock();
-        }
-    }
-
-
-    /**
-     * Notifies a waiting thread that a connection is available.
-     * This will wake a thread waiting in the specific route pool,
-     * if there is one.
-     * Otherwise, a thread in the connection pool will be notified.
-     * 
-     * @param rospl     the pool in which to notify, or <code>null</code>
-     */
-    protected void notifyWaitingThread(RouteSpecificPool rospl) {
-
-        //@@@ while this strategy provides for best connection re-use,
-        //@@@ is it fair? only do this if the connection is open?
-        // Find the thread we are going to notify. We want to ensure that
-        // each waiting thread is only interrupted once, so we will remove
-        // it from all wait queues before interrupting.
-        WaitingThread waitingThread = null;
-
-        poolLock.lock();
-        try {
-
-            if ((rospl != null) && rospl.hasThread()) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Notifying thread waiting on pool" +
-                            " [" + rospl.getRoute() + "]");
-                }
-                waitingThread = rospl.nextThread();
-            } else if (!waitingThreads.isEmpty()) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Notifying thread waiting on any pool");
-                }
-                waitingThread = waitingThreads.remove();
-            } else if (log.isDebugEnabled()) {
-                log.debug("Notifying no-one, there are no waiting threads");
-            }
-
-            if (waitingThread != null) {
-                waitingThread.wakeup();
-            }
-
-        } finally {
-            poolLock.unlock();
-        }
-    }
-
-
-    //@@@ revise this cleanup stuff
-    //@@@ move method to base class when deleteEntry() is fixed
-    // non-javadoc, see base class AbstractConnPool
-    @Override
-    public void deleteClosedConnections() {
-
-        poolLock.lock();
-        try {
-
-            Iterator<BasicPoolEntry>  iter = freeConnections.iterator();
-            while (iter.hasNext()) {
-                BasicPoolEntry entry = iter.next();
-                if (!entry.getConnection().isOpen()) {
-                    iter.remove();
-                    deleteEntry(entry);
-                }
-            }
-
-        } finally {
-            poolLock.unlock();
-        }
-    }
-
-
-    // non-javadoc, see base class AbstractConnPool
-    @Override
-    public void shutdown() {
-
-        poolLock.lock();
-        try {
-
-            super.shutdown();
-
-            // close all free connections
-            //@@@ move this to base class?
-            Iterator<BasicPoolEntry> ibpe = freeConnections.iterator();
-            while (ibpe.hasNext()) {
-                BasicPoolEntry entry = ibpe.next();
-                ibpe.remove();
-                closeConnection(entry.getConnection());
-            }
-
-            // wake up all waiting threads
-            Iterator<WaitingThread> iwth = waitingThreads.iterator();
-            while (iwth.hasNext()) {
-                WaitingThread waiter = iwth.next();
-                iwth.remove();
-                waiter.wakeup();
-            }
-
-            routeToPool.clear();
-
-        } finally {
-            poolLock.unlock();
-        }
-    }
-
-
-} // class ConnPoolByRoute
-
diff --git a/src/org/apache/http/impl/conn/tsccm/PoolEntryRequest.java b/src/org/apache/http/impl/conn/tsccm/PoolEntryRequest.java
deleted file mode 100644
index faf5e3b..0000000
--- a/src/org/apache/http/impl/conn/tsccm/PoolEntryRequest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/PoolEntryRequest.java $
- * $Revision: 652020 $
- * $Date: 2008-04-27 14:23:31 -0700 (Sun, 27 Apr 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.impl.conn.tsccm;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.http.conn.ConnectionPoolTimeoutException;
-
-/**
- * Encapsulates a request for a {@link BasicPoolEntry}.
- */
-public interface PoolEntryRequest {
-
-    /**
-     * Obtains a pool entry with a connection within the given timeout.
-     * If {@link #abortRequest()} is called before this completes
-     * an {@link InterruptedException} is thrown.
-     *
-     * @param timeout   the timeout, 0 or negative for no timeout
-     * @param tunit     the unit for the <code>timeout</code>,
-     *                  may be <code>null</code> only if there is no timeout
-     *
-     * @return  pool entry holding a connection for the route
-     *
-     * @throws ConnectionPoolTimeoutException
-     *         if the timeout expired
-     * @throws InterruptedException
-     *         if the calling thread was interrupted or the request was aborted
-     */
-    BasicPoolEntry getPoolEntry(
-            long timeout, 
-            TimeUnit tunit) throws InterruptedException, ConnectionPoolTimeoutException;
-
-    /**
-     * Aborts the active or next call to
-     * {@link #getPoolEntry(long, TimeUnit)}.
-     */
-    void abortRequest();
-    
-}
diff --git a/src/org/apache/http/impl/conn/tsccm/RefQueueHandler.java b/src/org/apache/http/impl/conn/tsccm/RefQueueHandler.java
deleted file mode 100644
index 3af28cc..0000000
--- a/src/org/apache/http/impl/conn/tsccm/RefQueueHandler.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/RefQueueHandler.java $
- * $Revision: 603874 $
- * $Date: 2007-12-13 02:42:41 -0800 (Thu, 13 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.impl.conn.tsccm;
-
-import java.lang.ref.Reference;
-
-
-/**
- * Callback handler for {@link RefQueueWorker RefQueueWorker}.
- */
-public interface RefQueueHandler {
-
-    /**
-     * Invoked when a reference is found on the queue.
-     *
-     * @param ref       the reference to handle
-     */
-    public void handleReference(Reference<?> ref)
-        ;
-}
diff --git a/src/org/apache/http/impl/conn/tsccm/RefQueueWorker.java b/src/org/apache/http/impl/conn/tsccm/RefQueueWorker.java
deleted file mode 100644
index 9ad5c77..0000000
--- a/src/org/apache/http/impl/conn/tsccm/RefQueueWorker.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/RefQueueWorker.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.impl.conn.tsccm;
-
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-
-/**
- * A worker thread for processing queued references.
- * {@link Reference Reference}s can be
- * {@link ReferenceQueue queued}
- * automatically by the garbage collector.
- * If that feature is used, a daemon thread should be executing
- * this worker. It will pick up the queued references and pass them
- * on to a handler for appropriate processing.
- */
-public class RefQueueWorker implements Runnable {
-
-    private final Log log = LogFactory.getLog(getClass());
-
-    /** The reference queue to monitor. */
-    protected final ReferenceQueue<?> refQueue;
-
-    /** The handler for the references found. */
-    protected final RefQueueHandler refHandler;
-
-
-    /**
-     * The thread executing this handler.
-     * This attribute is also used as a shutdown indicator.
-     */
-    protected volatile Thread workerThread;
-
-
-    /**
-     * Instantiates a new worker to listen for lost connections.
-     *
-     * @param queue     the queue on which to wait for references
-     * @param handler   the handler to pass the references to
-     */
-    public RefQueueWorker(ReferenceQueue<?> queue, RefQueueHandler handler) {
-        if (queue == null) {
-            throw new IllegalArgumentException("Queue must not be null.");
-        }
-        if (handler == null) {
-            throw new IllegalArgumentException("Handler must not be null.");
-        }
-
-        refQueue   = queue;
-        refHandler = handler;
-    }
-
-
-    /**
-     * The main loop of this worker.
-     * If initialization succeeds, this method will only return
-     * after {@link #shutdown shutdown()}. Only one thread can
-     * execute the main loop at any time.
-     */
-    public void run() {
-
-        if (this.workerThread == null) {
-            this.workerThread = Thread.currentThread();
-        }
-
-        while (this.workerThread == Thread.currentThread()) {
-            try {
-                // remove the next reference and process it
-                Reference<?> ref = refQueue.remove();
-                refHandler.handleReference(ref);
-            } catch (InterruptedException e) {
-                //@@@ is logging really necessary? this here is the
-                //@@@ only reason for having a log in this class
-                if (log.isDebugEnabled()) {
-                    log.debug(this.toString() + " interrupted", e);
-                }
-            }
-        }
-    }
-
-
-    /**
-     * Shuts down this worker.
-     * It can be re-started afterwards by another call to {@link #run run()}.
-     */
-    public void shutdown() {
-        Thread wt = this.workerThread;
-        if (wt != null) {
-            this.workerThread = null; // indicate shutdown
-            wt.interrupt();
-        }
-    }
-
-
-    /**
-     * Obtains a description of this worker.
-     *
-     * @return  a descriptive string for this worker
-     */
-    @Override
-    public String toString() {
-        return "RefQueueWorker::" + this.workerThread;
-    }
-
-} // class RefQueueWorker
-
diff --git a/src/org/apache/http/impl/conn/tsccm/RouteSpecificPool.java b/src/org/apache/http/impl/conn/tsccm/RouteSpecificPool.java
deleted file mode 100644
index 5c63933..0000000
--- a/src/org/apache/http/impl/conn/tsccm/RouteSpecificPool.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/RouteSpecificPool.java $
- * $Revision: 677240 $
- * $Date: 2008-07-16 04:25:47 -0700 (Wed, 16 Jul 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.impl.conn.tsccm;
-
-import java.io.IOException;
-import java.util.ListIterator;
-import java.util.Queue;
-import java.util.LinkedList;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.conn.OperatedClientConnection;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.util.LangUtils;
-
-
-/**
- * A connection sub-pool for a specific route, used by {@link ConnPoolByRoute}.
- * The methods in this class are unsynchronized. It is expected that the
- * containing pool takes care of synchronization.
- */
-public class RouteSpecificPool {
-
-    private final Log log = LogFactory.getLog(getClass());
-    
-    /** The route this pool is for. */
-    protected final HttpRoute route;
-
-    /** the maximum number of entries allowed for this pool */
-    protected final int maxEntries;
-    
-    /**
-     * The list of free entries.
-     * This list is managed LIFO, to increase idle times and
-     * allow for closing connections that are not really needed.
-     */
-    protected final LinkedList<BasicPoolEntry> freeEntries;
-
-    /** The list of threads waiting for this pool. */
-    protected final Queue<WaitingThread> waitingThreads;
-
-    /** The number of created entries. */
-    protected int numEntries;
-
-
-    /**
-     * Creates a new route-specific pool.
-     *
-     * @param route the route for which to pool
-     * @param maxEntries the maximum number of entries allowed for this pool
-     */
-    public RouteSpecificPool(HttpRoute route, int maxEntries) {
-        this.route = route;
-        this.maxEntries = maxEntries;
-        this.freeEntries = new LinkedList<BasicPoolEntry>();
-        this.waitingThreads = new LinkedList<WaitingThread>();
-        this.numEntries = 0;
-    }
-
-
-    /**
-     * Obtains the route for which this pool is specific.
-     *
-     * @return  the route
-     */
-    public final HttpRoute getRoute() {
-        return route;
-    }
-
-    
-    /**
-     * Obtains the maximum number of entries allowed for this pool.
-     *
-     * @return  the max entry number
-     */
-    public final int getMaxEntries() {
-        return maxEntries;
-    }
-    
-    
-    /**
-     * Indicates whether this pool is unused.
-     * A pool is unused if there is neither an entry nor a waiting thread.
-     * All entries count, not only the free but also the allocated ones.
-     *
-     * @return  <code>true</code> if this pool is unused,
-     *          <code>false</code> otherwise
-     */
-    public boolean isUnused() {
-        return (numEntries < 1) && waitingThreads.isEmpty();
-    }
-
-
-    /**
-     * Return remaining capacity of this pool
-     * 
-     * @return capacity
-     */
-    public int getCapacity() {
-        return maxEntries - numEntries;
-    }
-    
-    
-    /**
-     * Obtains the number of entries.
-     * This includes not only the free entries, but also those that
-     * have been created and are currently issued to an application.
-     *
-     * @return  the number of entries for the route of this pool
-     */
-    public final int getEntryCount() {
-        return numEntries;
-    }
-
-
-    /**
-     * Obtains a free entry from this pool, if one is available.
-     *
-     * @return an available pool entry, or <code>null</code> if there is none
-     */
-    public BasicPoolEntry allocEntry(final Object state) {
-        if (!freeEntries.isEmpty()) {
-            ListIterator<BasicPoolEntry> it = freeEntries.listIterator(freeEntries.size());
-            while (it.hasPrevious()) {
-                BasicPoolEntry entry = it.previous();
-                if (LangUtils.equals(state, entry.getState())) {
-                    it.remove();
-                    return entry;
-                }
-            }
-        }
-        if (!freeEntries.isEmpty()) {
-            BasicPoolEntry entry = freeEntries.remove();   
-            entry.setState(null);
-            OperatedClientConnection conn = entry.getConnection();
-            try {
-                conn.close();
-            } catch (IOException ex) {
-                log.debug("I/O error closing connection", ex);
-            }
-            return entry;
-        }
-        return null;
-    }
-
-
-    /**
-     * Returns an allocated entry to this pool.
-     *
-     * @param entry     the entry obtained from {@link #allocEntry allocEntry}
-     *                  or presented to {@link #createdEntry createdEntry}
-     */
-    public void freeEntry(BasicPoolEntry entry) {
-
-        if (numEntries < 1) {
-            throw new IllegalStateException
-                ("No entry created for this pool. " + route);
-        }
-        if (numEntries <= freeEntries.size()) {
-            throw new IllegalStateException
-                ("No entry allocated from this pool. " + route);
-        }
-        freeEntries.add(entry);
-    }
-
-
-    /**
-     * Indicates creation of an entry for this pool.
-     * The entry will <i>not</i> be added to the list of free entries,
-     * it is only recognized as belonging to this pool now. It can then
-     * be passed to {@link #freeEntry freeEntry}.
-     *
-     * @param entry     the entry that was created for this pool
-     */
-    public void createdEntry(BasicPoolEntry entry) {
-
-        if (!route.equals(entry.getPlannedRoute())) {
-            throw new IllegalArgumentException
-                ("Entry not planned for this pool." +
-                 "\npool: " + route +
-                 "\nplan: " + entry.getPlannedRoute());
-        }
-
-        numEntries++;
-    }
-
-
-    /**
-     * Deletes an entry from this pool.
-     * Only entries that are currently free in this pool can be deleted.
-     * Allocated entries can not be deleted.
-     *
-     * @param entry     the entry to delete from this pool
-     *
-     * @return  <code>true</code> if the entry was found and deleted, or
-     *          <code>false</code> if the entry was not found
-     */
-    public boolean deleteEntry(BasicPoolEntry entry) {
-
-        final boolean found = freeEntries.remove(entry);
-        if (found)
-            numEntries--;
-        return found;
-    }
-
-
-    /**
-     * Forgets about an entry from this pool.
-     * This method is used to indicate that an entry
-     * {@link #allocEntry allocated}
-     * from this pool has been lost and will not be returned.
-     */
-    public void dropEntry() {
-        if (numEntries < 1) {
-            throw new IllegalStateException
-                ("There is no entry that could be dropped.");
-        }
-        numEntries--;
-    }
-
-
-    /**
-     * Adds a waiting thread.
-     * This pool makes no attempt to match waiting threads with pool entries.
-     * It is the caller's responsibility to check that there is no entry
-     * before adding a waiting thread.
-     *
-     * @param wt        the waiting thread
-     */
-    public void queueThread(WaitingThread wt) {
-        if (wt == null) {
-            throw new IllegalArgumentException
-                ("Waiting thread must not be null.");
-        }
-        this.waitingThreads.add(wt);
-    }
-
-
-    /**
-     * Checks whether there is a waiting thread in this pool.
-     *
-     * @return  <code>true</code> if there is a waiting thread,
-     *          <code>false</code> otherwise
-     */
-    public boolean hasThread() {
-        return !this.waitingThreads.isEmpty();
-    }
-
-
-    /**
-     * Returns the next thread in the queue.
-     *
-     * @return  a waiting thread, or <code>null</code> if there is none
-     */
-    public WaitingThread nextThread() {
-        return this.waitingThreads.peek();
-    }
-
-
-    /**
-     * Removes a waiting thread, if it is queued.
-     *
-     * @param wt        the waiting thread
-     */
-    public void removeThread(WaitingThread wt) {
-        if (wt == null)
-            return;
-
-        this.waitingThreads.remove(wt);
-    }
-
-
-} // class RouteSpecificPool
diff --git a/src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java b/src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
deleted file mode 100644
index 0781e05..0000000
--- a/src/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java $
- * $Revision: 673450 $
- * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 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.impl.conn.tsccm;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.ClientConnectionOperator;
-import org.apache.http.conn.ClientConnectionRequest;
-import org.apache.http.conn.ConnectionPoolTimeoutException;
-import org.apache.http.conn.ManagedClientConnection;
-import org.apache.http.conn.OperatedClientConnection;
-import org.apache.http.params.HttpParams;
-import org.apache.http.impl.conn.DefaultClientConnectionOperator;
-
-
-
-/**
- * Manages a pool of {@link OperatedClientConnection client connections}.
- * <p>
- * This class is derived from <code>MultiThreadedHttpConnectionManager</code>
- * in HttpClient 3. See there for original authors.
- * </p>
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author <a href="mailto:becke@u.washington.edu">Michael Becke</a>
- *
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 673450 $ $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 2008) $
- *
- * @since 4.0
- */
-public class ThreadSafeClientConnManager implements ClientConnectionManager {
-
-    private final Log log = LogFactory.getLog(getClass());
-
-    /** The schemes supported by this connection manager. */
-    protected SchemeRegistry schemeRegistry; 
-    
-    /** The pool of connections being managed. */
-    protected final AbstractConnPool connectionPool;
-
-    /** The operator for opening and updating connections. */
-    protected ClientConnectionOperator connOperator;
-    
-
-
-    /**
-     * Creates a new thread safe connection manager.
-     *
-     * @param params    the parameters for this manager
-     * @param schreg    the scheme registry, or
-     *                  <code>null</code> for the default registry
-     */
-    public ThreadSafeClientConnManager(HttpParams params,
-                                       SchemeRegistry schreg) {
-
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        this.schemeRegistry = schreg;
-        this.connOperator   = createConnectionOperator(schreg);
-        this.connectionPool = createConnectionPool(params);
-
-    } // <constructor>
-
-    
-    @Override
-    protected void finalize() throws Throwable {
-        shutdown();
-        super.finalize();
-    }
-
-
-    /**
-     * Hook for creating the connection pool.
-     *
-     * @return  the connection pool to use
-     */
-    protected AbstractConnPool createConnectionPool(final HttpParams params) {
-
-        AbstractConnPool acp = new ConnPoolByRoute(connOperator, params);
-        boolean conngc = true; //@@@ check parameters to decide
-        if (conngc) {
-            acp.enableConnectionGC();
-        }
-        return acp;
-    }
-
-
-    /**
-     * Hook for creating the connection operator.
-     * It is called by the constructor.
-     * Derived classes can override this method to change the
-     * instantiation of the operator.
-     * The default implementation here instantiates
-     * {@link DefaultClientConnectionOperator DefaultClientConnectionOperator}.
-     *
-     * @param schreg    the scheme registry to use, or <code>null</code>
-     *
-     * @return  the connection operator to use
-     */
-    protected ClientConnectionOperator
-        createConnectionOperator(SchemeRegistry schreg) {
-
-        return new DefaultClientConnectionOperator(schreg);
-    }
-
-
-    // non-javadoc, see interface ClientConnectionManager
-    public SchemeRegistry getSchemeRegistry() {
-        return this.schemeRegistry;
-    }
-
-    
-    public ClientConnectionRequest requestConnection(
-            final HttpRoute route, 
-            final Object state) {
-        
-        final PoolEntryRequest poolRequest = connectionPool.requestPoolEntry(
-                route, state);
-        
-        return new ClientConnectionRequest() {
-            
-            public void abortRequest() {
-                poolRequest.abortRequest();
-            }
-            
-            public ManagedClientConnection getConnection(
-                    long timeout, TimeUnit tunit) throws InterruptedException,
-                    ConnectionPoolTimeoutException {
-                if (route == null) {
-                    throw new IllegalArgumentException("Route may not be null.");
-                }
-
-                if (log.isDebugEnabled()) {
-                    log.debug("ThreadSafeClientConnManager.getConnection: "
-                        + route + ", timeout = " + timeout);
-                }
-
-                BasicPoolEntry entry = poolRequest.getPoolEntry(timeout, tunit);
-                return new BasicPooledConnAdapter(ThreadSafeClientConnManager.this, entry);
-            }
-            
-        };
-        
-    }
-
-    
-    // non-javadoc, see interface ClientConnectionManager
-    public void releaseConnection(ManagedClientConnection conn, long validDuration, TimeUnit timeUnit) {
-
-        if (!(conn instanceof BasicPooledConnAdapter)) {
-            throw new IllegalArgumentException
-                ("Connection class mismatch, " +
-                 "connection not obtained from this manager.");
-        }
-        BasicPooledConnAdapter hca = (BasicPooledConnAdapter) conn;
-        if ((hca.getPoolEntry() != null) && (hca.getManager() != this)) {
-            throw new IllegalArgumentException
-                ("Connection not obtained from this manager.");
-        }
-
-        try {
-            // make sure that the response has been read completely
-            if (hca.isOpen() && !hca.isMarkedReusable()) {
-                if (log.isDebugEnabled()) {
-                    log.debug
-                        ("Released connection open but not marked reusable.");
-                }
-                // In MTHCM, there would be a call to
-                // SimpleHttpConnectionManager.finishLastResponse(conn);
-                // Consuming the response is handled outside in 4.0.
-
-                // make sure this connection will not be re-used
-                // Shut down rather than close, we might have gotten here
-                // because of a shutdown trigger.
-                // Shutdown of the adapter also clears the tracked route.
-                hca.shutdown();
-            }
-        } catch (IOException iox) {
-            //@@@ log as warning? let pass?
-            if (log.isDebugEnabled())
-                log.debug("Exception shutting down released connection.",
-                          iox);
-        } finally {
-            BasicPoolEntry entry = (BasicPoolEntry) hca.getPoolEntry();
-            boolean reusable = hca.isMarkedReusable();
-            hca.detach();
-            if (entry != null) {
-                connectionPool.freeEntry(entry, reusable, validDuration, timeUnit);
-            }
-        }
-    }
-
-
-    // non-javadoc, see interface ClientConnectionManager
-    public void shutdown() {
-        connectionPool.shutdown();
-    }
-
-
-    /**
-     * Gets the total number of pooled connections for the given route.
-     * This is the total number of connections that have been created and
-     * are still in use by this connection manager for the route.
-     * This value will not exceed the maximum number of connections per host.
-     * 
-     * @param route     the route in question
-     *
-     * @return  the total number of pooled connections for that route
-     */
-    public int getConnectionsInPool(HttpRoute route) {
-        return ((ConnPoolByRoute)connectionPool).getConnectionsInPool(
-                route);
-    }
-
-
-    /**
-     * Gets the total number of pooled connections.  This is the total number of 
-     * connections that have been created and are still in use by this connection 
-     * manager.  This value will not exceed the maximum number of connections
-     * in total.
-     * 
-     * @return the total number of pooled connections
-     */
-    public int getConnectionsInPool() {
-        synchronized (connectionPool) {
-            return connectionPool.numConnections; //@@@
-        }
-    }
-
-
-    // non-javadoc, see interface ClientConnectionManager
-    public void closeIdleConnections(long idleTimeout, TimeUnit tunit) {
-        // combine these two in a single call?
-        connectionPool.closeIdleConnections(idleTimeout, tunit);
-        connectionPool.deleteClosedConnections();
-    }
-    
-    public void closeExpiredConnections() {
-        connectionPool.closeExpiredConnections();
-        connectionPool.deleteClosedConnections();
-    }
-
-
-} // class ThreadSafeClientConnManager
-
diff --git a/src/org/apache/http/impl/conn/tsccm/WaitingThread.java b/src/org/apache/http/impl/conn/tsccm/WaitingThread.java
deleted file mode 100644
index a50e11f..0000000
--- a/src/org/apache/http/impl/conn/tsccm/WaitingThread.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/WaitingThread.java $
- * $Revision: 649217 $
- * $Date: 2008-04-17 11:32:32 -0700 (Thu, 17 Apr 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.impl.conn.tsccm;
-
-
-import java.util.Date;
-import java.util.concurrent.locks.Condition;
-
-
-/**
- * Represents a thread waiting for a connection.
- * This class implements throwaway objects. It is instantiated whenever
- * a thread needs to wait. Instances are not re-used, except if the
- * waiting thread experiences a spurious wakeup and continues to wait.
- * <br/>
- * All methods assume external synchronization on the condition
- * passed to the constructor.
- * Instances of this class do <i>not</i> synchronize access!
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- */
-public class WaitingThread {
-
-    /** The condition on which the thread is waiting. */
-    private final Condition cond;
-
-    /** The route specific pool on which the thread is waiting. */
-    //@@@ replace with generic pool interface
-    private final RouteSpecificPool pool;
-
-    /** The thread that is waiting for an entry. */
-    private Thread waiter;
-    
-    /** True if this was interrupted. */
-    private boolean aborted;
-
-
-    /**
-     * Creates a new entry for a waiting thread.
-     *
-     * @param cond      the condition for which to wait
-     * @param pool      the pool on which the thread will be waiting,
-     *                  or <code>null</code>
-     */
-    public WaitingThread(Condition cond, RouteSpecificPool pool) {
-
-        if (cond == null) {
-            throw new IllegalArgumentException("Condition must not be null.");
-        }
-
-        this.cond = cond;
-        this.pool = pool;
-    }
-
-
-    /**
-     * Obtains the condition.
-     *
-     * @return  the condition on which to wait, never <code>null</code>
-     */
-    public final Condition getCondition() {
-        // not synchronized
-        return this.cond;
-    }
-
-
-    /**
-     * Obtains the pool, if there is one.
-     *
-     * @return  the pool on which a thread is or was waiting,
-     *          or <code>null</code>
-     */
-    public final RouteSpecificPool getPool() {
-        // not synchronized
-        return this.pool;
-    }
-
-
-    /**
-     * Obtains the thread, if there is one.
-     *
-     * @return  the thread which is waiting, or <code>null</code>
-     */
-    public final Thread getThread() {
-        // not synchronized
-        return this.waiter;
-    }
-
-
-    /**
-     * Blocks the calling thread.
-     * This method returns when the thread is notified or interrupted,
-     * if a timeout occurrs, or if there is a spurious wakeup.
-     * <br/>
-     * This method assumes external synchronization.
-     *
-     * @param deadline  when to time out, or <code>null</code> for no timeout
-     *
-     * @return  <code>true</code> if the condition was satisfied,
-     *          <code>false</code> in case of a timeout.
-     *          Typically, a call to {@link #wakeup} is used to indicate
-     *          that the condition was satisfied. Since the condition is
-     *          accessible outside, this cannot be guaranteed though.
-     *
-     * @throws InterruptedException     if the waiting thread was interrupted
-     *
-     * @see #wakeup
-     */
-    public boolean await(Date deadline)
-        throws InterruptedException {
-
-        // This is only a sanity check. We cannot synchronize here,
-        // the lock would not be released on calling cond.await() below.
-        if (this.waiter != null) {
-            throw new IllegalStateException
-                ("A thread is already waiting on this object." +
-                 "\ncaller: " + Thread.currentThread() +
-                 "\nwaiter: " + this.waiter);
-        }
-
-        if (aborted)
-            throw new InterruptedException("Operation interrupted");
-        
-        this.waiter = Thread.currentThread();
-
-        boolean success = false;
-        try {
-            if (deadline != null) {
-                success = this.cond.awaitUntil(deadline);
-            } else {
-                this.cond.await();
-                success = true;
-            }
-            if (aborted)
-                throw new InterruptedException("Operation interrupted");
-        } finally {
-            this.waiter = null;
-        }
-        return success;
-
-    } // await
-
-
-    /**
-     * Wakes up the waiting thread.
-     * <br/>
-     * This method assumes external synchronization.
-     */
-    public void wakeup() {
-
-        // If external synchronization and pooling works properly,
-        // this cannot happen. Just a sanity check.
-        if (this.waiter == null) {
-            throw new IllegalStateException
-                ("Nobody waiting on this object.");
-        }
-
-        // One condition might be shared by several WaitingThread instances.
-        // It probably isn't, but just in case: wake all, not just one.
-        this.cond.signalAll();
-    }
-    
-    public void interrupt() {
-        aborted = true;
-        this.cond.signalAll();
-    }
-
-
-} // class WaitingThread
diff --git a/src/org/apache/http/impl/conn/tsccm/WaitingThreadAborter.java b/src/org/apache/http/impl/conn/tsccm/WaitingThreadAborter.java
deleted file mode 100644
index 1844457..0000000
--- a/src/org/apache/http/impl/conn/tsccm/WaitingThreadAborter.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/WaitingThreadAborter.java $
- * $Revision: 649220 $
- * $Date: 2008-04-17 11:40:24 -0700 (Thu, 17 Apr 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.impl.conn.tsccm;
-
-/** A simple class that can interrupt a {@link WaitingThread}. */
-public class WaitingThreadAborter {
-    
-    private WaitingThread waitingThread;
-    private boolean aborted;
-    
-    /**
-     * If a waiting thread has been set, interrupts it.
-     */
-    public void abort() {
-        aborted = true;
-        
-        if (waitingThread != null)
-            waitingThread.interrupt();
-        
-    }
-    
-    /**
-     * Sets the waiting thread.  If this has already been aborted,
-     * the waiting thread is immediately interrupted.
-     * 
-     * @param waitingThread The thread to interrupt when aborting.
-     */
-    public void setWaitingThread(WaitingThread waitingThread) {
-        this.waitingThread = waitingThread;
-        if (aborted)
-            waitingThread.interrupt();
-    }
-
-}
diff --git a/src/org/apache/http/impl/conn/tsccm/doc-files/tsccm-structure.png b/src/org/apache/http/impl/conn/tsccm/doc-files/tsccm-structure.png
deleted file mode 100644
index 2e2820d..0000000
--- a/src/org/apache/http/impl/conn/tsccm/doc-files/tsccm-structure.png
+++ /dev/null
Binary files differ
diff --git a/src/org/apache/http/impl/conn/tsccm/package.html b/src/org/apache/http/impl/conn/tsccm/package.html
deleted file mode 100644
index 5aca5d4..0000000
--- a/src/org/apache/http/impl/conn/tsccm/package.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/package.html $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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/>.
- *
- */
--->
-</head>
-<body>
-
-The implementation of a thread-safe client connection manager.
-
-<center>
-<img src="doc-files/tsccm-structure.png" alt="Relation Diagram"/>
-</center>
-
-<p>
-The implementation is structured into three areas, as illustrated
-by the diagram above.
-Facing the application is the <i>Manager</i> (green), which internally
-maintains a <i>Pool</i> (yellow) of connections and waiting threads.
-Both Manager and Pool rely on <i>Operations</i> (cyan) to provide the
-actual connections.
-</p>
-<p>
-In order to allow connection garbage collection, it is
-imperative that hard object references between the areas are
-restricted to the relations indicated by arrows in the diagram:
-</p>
-<ul>
-<li>Applications reference only the Manager objects.</li>
-<li>Manager objects reference Pool objects, but not vice versa.</li>
-<li>Operations objects do not reference either Manager or Pool objects.</li>
-</ul>
-
-<p>
-The following table shows a selection of classes and interfaces,
-and their assignment to the three areas.
-</p>
-<center>
-<table border="1">
-<colgroup>
-  <col width="50%"/>
-  <col width="50%"/>
-</colgroup>
-
-<tr>
-<td style="text-align: center; background-color: #00ff00;">
-{@link org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager}
-</td>
-<td style="text-align: center; background-color: #ffff00;">
-{@link org.apache.http.impl.conn.tsccm.AbstractConnPool}
-</td>
-</tr>
-
-<tr>
-<td style="text-align: center; background-color: #00ff00;">
-{@link org.apache.http.impl.conn.tsccm.BasicPooledConnAdapter}
-</td>
-<td style="text-align: center; background-color: #ffff00;">
-{@link org.apache.http.impl.conn.tsccm.ConnPoolByRoute}
-</td>
-</tr>
-
-<!-- appears on both sides! -->
-
-<tr>
-<td style="text-align: right; background-color: #00ff00;">
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}
-</td>
-<td style="text-align: left; background-color: #ffff00;">
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}
-</td>
-</tr>
-
-<!-- ====================== -->
-
-<tr style="border-width: 5px;">
-</tr>
-
-<tr>
-<td colspan="2" style="text-align: center; background-color: #00ffff;">
-{@link org.apache.http.conn.ClientConnectionOperator}
-</td>
-</tr>
-
-<tr>
-<td colspan="2" style="text-align: center; background-color: #00ffff;">
-{@link org.apache.http.conn.OperatedClientConnection}
-</td>
-</tr>
-
-</table>
-</center>
-
-<p>
-The Manager area has implementations for the connection management
-interfaces {@link org.apache.http.conn.ClientConnectionManager}
-and {@link org.apache.http.conn.ManagedClientConnection}.
-The latter is an adapter from managed to operated connections, based on a
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}.
-<br/>
-The Pool area shows an abstract pool class
-{@link org.apache.http.impl.conn.tsccm.AbstractConnPool}
-and a concrete implementation
-{@link org.apache.http.impl.conn.tsccm.ConnPoolByRoute}
-which uses the same basic algorithm as the
-<code>MultiThreadedHttpConnectionManager</code>
-in HttpClient 3.x.
-A pool contains instances of
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}.
-Most other classes in this package also belong to the Pool area.
-<br/>
-In the Operations area, you will find only the interfaces for
-operated connections as defined in the org.apache.http.conn package.
-The connection manager will work with all correct implementations
-of these interfaces. This package therefore does not define anything
-specific to the Operations area.
-</p>
-
-<p>
-As you have surely noticed, the
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}
-appears in both the Manager and Pool areas.
-This is where things get tricky for connection garbage collection.
-<br/>
-A connection pool may start a background thread to implement cleanup.
-In that case, the connection pool will not be garbage collected until
-it is shut down, since the background thread keeps a hard reference
-to the pool. The pool itself keeps hard references to the pooled entries,
-which in turn reference idle connections. Neither of these is subject
-to garbage collection.
-Only the shutdown of the pool will stop the background thread,
-thereby enabling garbage collection of the pool objects.
-<br/>
-A pool entry that is passed to an application by means of a connection
-adapter will move from the Pool area to the Manager area. When the
-connection is released by the application, the manager returns the
-entry back to the pool. With that step, the pool entry moves from
-the Manager area back to the Pool area.
-While the entry is in the Manager area, the pool MUST NOT keep a
-hard reference to it.
-</p>
-
-<p>
-The purpose of connection garbage collection is to detect when an
-application fails to return a connection. In order to achieve this,
-the only hard reference to the pool entry in the Manager area is
-in the connection wrapper. The manager will not keep a hard reference
-to the connection wrapper either, since that wrapper is effectively
-moving to the Application area.
-If the application drops it's reference to the connection wrapper,
-that wrapper will be garbage collected, and with it the pool entry.
-<br/>
-In order to detect garbage collection of pool entries handed out
-to the application, the pool keeps a <i>weak reference</i> to the
-entry. Instances of
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntryRef}
-combine the weak reference with information about the route for
-which the pool entry was allocated. If one of these entry references
-becomes stale, the pool can accommodate for the lost connection.
-This is triggered either by a background thread waiting for the
-references to be queued by the garbage collector, or by the
-application calling a {@link
-    org.apache.http.conn.ClientConnectionManager#closeIdleConnections cleanup}
-method of the connection manager.
-<br/>
-Basically the same trick is used for detecting garbage collection
-of the connection manager itself. The pool keeps a weak reference
-to the connection manager that created it. However, this will work
-only if there is a background thread to detect when that reference
-is queued by the garbage collector. Otherwise, a finalizer of the
-connection manager will shut down the pool and release it's resources.
-</p>
-
-
-</body>
-</html>
diff --git a/src/org/apache/http/impl/cookie/AbstractCookieAttributeHandler.java b/src/org/apache/http/impl/cookie/AbstractCookieAttributeHandler.java
deleted file mode 100644
index 1aa4d2c..0000000
--- a/src/org/apache/http/impl/cookie/AbstractCookieAttributeHandler.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/AbstractCookieAttributeHandler.java $
- * $Revision: 503525 $
- * $Date: 2007-02-04 17:15:08 -0800 (Sun, 04 Feb 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.impl.cookie;
-
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-
-public abstract class AbstractCookieAttributeHandler implements CookieAttributeHandler {
-
-    public void validate(final Cookie cookie, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        // Do nothing
-    }
-    
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        // Always match
-        return true;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/AbstractCookieSpec.java b/src/org/apache/http/impl/cookie/AbstractCookieSpec.java
deleted file mode 100644
index 3e47a4d..0000000
--- a/src/org/apache/http/impl/cookie/AbstractCookieSpec.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/AbstractCookieSpec.java $
- * $Revision: 617207 $
- * $Date: 2008-01-31 12:14:12 -0800 (Thu, 31 Jan 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.impl.cookie;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieSpec;
-
-/**
- * Abstract cookie specification which can delegate the job of parsing,
- * validation or matching cookie attributes to a number of arbitrary 
- * {@link CookieAttributeHandler}s.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0 
- */
-public abstract class AbstractCookieSpec implements CookieSpec {
-    
-    /**
-    * Stores attribute name -> attribute handler mappings
-    */
-    private final Map<String, CookieAttributeHandler> attribHandlerMap;
-
-    /** 
-     * Default constructor 
-     * */
-    public AbstractCookieSpec() {
-        super();
-        this.attribHandlerMap = new HashMap<String, CookieAttributeHandler>(10);        
-    }
-
-    public void registerAttribHandler(
-            final String name, final CookieAttributeHandler handler) {
-        if (name == null) {
-            throw new IllegalArgumentException("Attribute name may not be null");
-        }
-        if (handler == null) {
-            throw new IllegalArgumentException("Attribute handler may not be null");
-        }
-        this.attribHandlerMap.put(name, handler);
-    }
-    
-    /**
-     * Finds an attribute handler {@link CookieAttributeHandler} for the
-     * given attribute. Returns <tt>null</tt> if no attribute handler is
-     * found for the specified attribute.
-     *
-     * @param name attribute name. e.g. Domain, Path, etc.
-     * @return an attribute handler or <tt>null</tt>
-     */
-    protected CookieAttributeHandler findAttribHandler(final String name) {
-        return this.attribHandlerMap.get(name);
-    }
-    
-    /**
-     * Gets attribute handler {@link CookieAttributeHandler} for the
-     * given attribute.
-     *
-     * @param name attribute name. e.g. Domain, Path, etc.
-     * @throws IllegalStateException if handler not found for the
-     *          specified attribute.
-     */
-    protected CookieAttributeHandler getAttribHandler(final String name) {
-        CookieAttributeHandler handler = findAttribHandler(name);
-        if (handler == null) {
-            throw new IllegalStateException("Handler not registered for " +
-                                            name + " attribute.");
-        } else {
-            return handler;
-        }
-    }
-
-    protected Collection<CookieAttributeHandler> getAttribHandlers() {
-        return this.attribHandlerMap.values();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/BasicClientCookie.java b/src/org/apache/http/impl/cookie/BasicClientCookie.java
deleted file mode 100644
index 6ec6c2b..0000000
--- a/src/org/apache/http/impl/cookie/BasicClientCookie.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BasicClientCookie.java $
- * $Revision: 659191 $
- * $Date: 2008-05-22 11:26:53 -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.impl.cookie;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.SetCookie;
-
-/**
- * HTTP "magic-cookie" represents a piece of state information
- * that the HTTP agent and the target server can exchange to maintain 
- * a session.
- * 
- * @author B.C. Holmes
- * @author <a href="mailto:jericho@thinkfree.com">Park, Sung-Gu</a>
- * @author <a href="mailto:dsale@us.britannica.com">Doug Sale</a>
- * @author Rod Waldhoff
- * @author dIon Gillard
- * @author Sean C. Sullivan
- * @author <a href="mailto:JEvans@Cyveillance.com">John Evans</a>
- * @author Marc A. Saegesser
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * 
- * @version $Revision: 659191 $
- */
-public class BasicClientCookie implements SetCookie, ClientCookie, Cloneable {
-
-    /**
-     * Default Constructor taking a name and a value. The value may be null.
-     * 
-     * @param name The name.
-     * @param value The value.
-     */
-    public BasicClientCookie(final String name, final String value) {
-        super();
-        if (name == null) {
-            throw new IllegalArgumentException("Name may not be null");
-        }
-        this.name = name;
-        this.attribs = new HashMap<String, String>();
-        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;
-    }
-
-    /**
-     * Sets the value
-     * 
-     * @param value
-     */
-    public void setValue(final String value) {
-        this.value = value;
-    }
-
-    /**
-     * Returns the comment describing the purpose of this cookie, or
-     * <tt>null</tt> if no such comment has been defined.
-     * 
-     * @return comment 
-     *
-     * @see #setComment(String)
-     */
-    public String getComment() {
-        return cookieComment;
-    }
-
-    /**
-     * If a user agent (web browser) presents this cookie to a user, the
-     * cookie's purpose will be described using this comment.
-     * 
-     * @param comment
-     *  
-     * @see #getComment()
-     */
-    public void setComment(String comment) {
-        cookieComment = comment;
-    }
-
-    
-    /**
-     * Returns null. Cookies prior to RFC2965 do not set this attribute
-     */
-    public String getCommentURL() {
-        return null;
-    }
-
-    
-    /**
-     * Returns the expiration {@link Date} of the cookie, or <tt>null</tt>
-     * if none exists.
-     * <p><strong>Note:</strong> the object returned by this method is 
-     * considered immutable. Changing it (e.g. using setTime()) could result
-     * in undefined behaviour. Do so at your peril. </p>
-     * @return Expiration {@link Date}, or <tt>null</tt>.
-     *
-     * @see #setExpiryDate(java.util.Date)
-     *
-     */
-    public Date getExpiryDate() {
-        return cookieExpiryDate;
-    }
-
-    /**
-     * Sets expiration date.
-     * <p><strong>Note:</strong> the object returned by this method is considered
-     * immutable. Changing it (e.g. using setTime()) could result in undefined 
-     * behaviour. Do so at your peril.</p>
-     *
-     * @param expiryDate the {@link Date} after which this cookie is no longer valid.
-     *
-     * @see #getExpiryDate
-     *
-     */
-    public void setExpiryDate (Date expiryDate) {
-        cookieExpiryDate = expiryDate;
-    }
-
-
-    /**
-     * Returns <tt>false</tt> if the cookie should be discarded at the end
-     * of the "session"; <tt>true</tt> otherwise.
-     *
-     * @return <tt>false</tt> if the cookie should be discarded at the end
-     *         of the "session"; <tt>true</tt> otherwise
-     */
-    public boolean isPersistent() {
-        return (null != cookieExpiryDate);
-    }
-
-
-    /**
-     * Returns domain attribute of the cookie.
-     * 
-     * @return the value of the domain attribute
-     *
-     * @see #setDomain(java.lang.String)
-     */
-    public String getDomain() {
-        return cookieDomain;
-    }
-
-    /**
-     * Sets the domain attribute.
-     * 
-     * @param domain The value of the domain attribute
-     *
-     * @see #getDomain
-     */
-    public void setDomain(String domain) {
-        if (domain != null) {
-            cookieDomain = domain.toLowerCase(Locale.ENGLISH);
-        } else {
-            cookieDomain = null;
-        }
-    }
-
-
-    /**
-     * Returns the path attribute of the cookie
-     * 
-     * @return The value of the path attribute.
-     * 
-     * @see #setPath(java.lang.String)
-     */
-    public String getPath() {
-        return cookiePath;
-    }
-
-    /**
-     * Sets the path attribute.
-     *
-     * @param path The value of the path attribute
-     *
-     * @see #getPath
-     *
-     */
-    public void setPath(String path) {
-        cookiePath = path;
-    }
-
-    /**
-     * @return <code>true</code> if this cookie should only be sent over secure connections.
-     * @see #setSecure(boolean)
-     */
-    public boolean isSecure() {
-        return isSecure;
-    }
-
-    /**
-     * Sets the secure attribute of the cookie.
-     * <p>
-     * When <tt>true</tt> the cookie should only be sent
-     * using a secure protocol (https).  This should only be set when
-     * the cookie's originating server used a secure protocol to set the
-     * cookie's value.
-     *
-     * @param secure The value of the secure attribute
-     * 
-     * @see #isSecure()
-     */
-    public void setSecure (boolean secure) {
-        isSecure = secure;
-    }
-
-
-    /**
-     * Returns null. Cookies prior to RFC2965 do not set this attribute
-     */
-    public int[] getPorts() {
-        return null;
-    }
-
-    
-    /**
-     * Returns the version of the cookie specification to which this
-     * cookie conforms.
-     *
-     * @return the version of the cookie.
-     * 
-     * @see #setVersion(int)
-     *
-     */
-    public int getVersion() {
-        return cookieVersion;
-    }
-
-    /**
-     * Sets the version of the cookie specification to which this
-     * cookie conforms. 
-     *
-     * @param version the version of the cookie.
-     * 
-     * @see #getVersion
-     */
-    public void setVersion(int version) {
-        cookieVersion = version;
-    }
-
-    /**
-     * Returns true if this cookie has expired.
-     * @param date Current time
-     * 
-     * @return <tt>true</tt> if the cookie has expired.
-     */
-    public boolean isExpired(final Date date) {
-        if (date == null) {
-            throw new IllegalArgumentException("Date may not be null");
-        }
-        return (cookieExpiryDate != null  
-            && cookieExpiryDate.getTime() <= date.getTime());
-    }
-
-    public void setAttribute(final String name, final String value) {
-        this.attribs.put(name, value);
-    }
-    
-    public String getAttribute(final String name) {
-        return this.attribs.get(name);
-    }
-
-    public boolean containsAttribute(final String name) {
-        return this.attribs.get(name) != null;
-    }
-    
-    @Override
-    public Object clone() throws CloneNotSupportedException {
-        BasicClientCookie clone = (BasicClientCookie) super.clone();
-        clone.attribs = new HashMap<String, String>(this.attribs);
-        return clone;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder buffer = new StringBuilder();
-        buffer.append("[version: ");
-        buffer.append(Integer.toString(this.cookieVersion));
-        buffer.append("]");
-        buffer.append("[name: ");
-        buffer.append(this.name);
-        buffer.append("]");
-        buffer.append("[value: ");
-        buffer.append(this.value);
-        buffer.append("]");
-        buffer.append("[domain: ");
-        buffer.append(this.cookieDomain);
-        buffer.append("]");
-        buffer.append("[path: ");
-        buffer.append(this.cookiePath);
-        buffer.append("]");
-        buffer.append("[expiry: ");
-        buffer.append(this.cookieExpiryDate);
-        buffer.append("]");
-        return buffer.toString();
-    }
-    
-   // ----------------------------------------------------- Instance Variables
-
-    /** Cookie name */
-    private final String name;
-
-    /** Cookie attributes as specified by the origin server */
-    private Map<String, String> attribs;
-   
-    /** Cookie value */
-    private String value;
-
-    /** Comment attribute. */
-    private String  cookieComment;
-
-    /** Domain attribute. */
-    private String  cookieDomain;
-
-    /** Expiration {@link Date}. */
-    private Date cookieExpiryDate;
-
-    /** Path attribute. */
-    private String cookiePath;
-
-    /** My secure flag. */
-    private boolean isSecure;
-
-    /** The version of the cookie specification I was created from. */
-    private int cookieVersion;
-
-}
-
diff --git a/src/org/apache/http/impl/cookie/BasicClientCookie2.java b/src/org/apache/http/impl/cookie/BasicClientCookie2.java
deleted file mode 100644
index 86ec60d..0000000
--- a/src/org/apache/http/impl/cookie/BasicClientCookie2.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BasicClientCookie2.java $
- * $Revision: 659191 $
- * $Date: 2008-05-22 11:26:53 -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.impl.cookie;
-
-import java.util.Date;
-
-import org.apache.http.cookie.SetCookie2;
-
-/**
- * HTTP "magic-cookie" represents a piece of state information
- * that the HTTP agent and the target server can exchange to maintain 
- * a session as specified by RFC2965.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public class BasicClientCookie2 extends BasicClientCookie implements SetCookie2 {
-
-    private String commentURL;
-    private int[] ports;
-    private boolean discard;
-    
-    /**
-     * Default Constructor taking a name and a value. The value may be null.
-     * 
-     * @param name The name.
-     * @param value The value.
-     */
-    public BasicClientCookie2(final String name, final String value) {
-        super(name, value);
-    }
-
-    @Override
-    public int[] getPorts() {
-        return this.ports;
-    }
-
-    public void setPorts(final int[] ports) {
-        this.ports = ports;
-    }
-    
-    @Override
-    public String getCommentURL() {
-        return this.commentURL;
-    }
-
-    public void setCommentURL(final String commentURL) {
-        this.commentURL = commentURL;
-    }
-
-    public void setDiscard(boolean discard) {
-        this.discard = discard;
-    }
-
-    @Override
-    public boolean isPersistent() {
-        return !this.discard && super.isPersistent();
-    }
-
-    @Override
-    public boolean isExpired(final Date date) {
-        return this.discard || super.isExpired(date);
-    }
- 
-    @Override
-    public Object clone() throws CloneNotSupportedException {
-        BasicClientCookie2 clone = (BasicClientCookie2) super.clone();
-        clone.ports = this.ports.clone();
-        return clone;
-    }
-    
-}
-
diff --git a/src/org/apache/http/impl/cookie/BasicCommentHandler.java b/src/org/apache/http/impl/cookie/BasicCommentHandler.java
deleted file mode 100644
index ce8baea..0000000
--- a/src/org/apache/http/impl/cookie/BasicCommentHandler.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BasicCommentHandler.java $
- * $Revision: 558519 $
- * $Date: 2007-07-22 11:19:49 -0700 (Sun, 22 Jul 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.impl.cookie;
-
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-
-public class BasicCommentHandler extends AbstractCookieAttributeHandler {
-
-    public BasicCommentHandler() {
-        super();
-    }
-    
-    public void parse(final SetCookie cookie, final String value) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        cookie.setComment(value);
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/BasicDomainHandler.java b/src/org/apache/http/impl/cookie/BasicDomainHandler.java
deleted file mode 100644
index 267faf8..0000000
--- a/src/org/apache/http/impl/cookie/BasicDomainHandler.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BasicDomainHandler.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.cookie;
-
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-
-public class BasicDomainHandler implements CookieAttributeHandler {
-
-    public BasicDomainHandler() {
-        super();
-    }
-    
-    public void parse(final SetCookie cookie, final String value) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (value == null) {
-            throw new MalformedCookieException("Missing value for domain attribute");
-        }
-        if (value.trim().length() == 0) {
-            throw new MalformedCookieException("Blank value for domain attribute");
-        }
-        cookie.setDomain(value);
-    }
-
-    public void validate(final Cookie cookie, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        // Validate the cookies domain attribute.  NOTE:  Domains without 
-        // any dots are allowed to support hosts on private LANs that don't 
-        // have DNS names.  Since they have no dots, to domain-match the 
-        // request-host and domain must be identical for the cookie to sent 
-        // back to the origin-server.
-        String host = origin.getHost();
-        String domain = cookie.getDomain();
-        if (domain == null) {
-            throw new MalformedCookieException("Cookie domain may not be null");
-        }
-        if (host.contains(".")) {
-            // Not required to have at least two dots.  RFC 2965.
-            // A Set-Cookie2 with Domain=ajax.com will be accepted.
-
-            // domain must match host
-            if (!host.endsWith(domain)) {
-                if (domain.startsWith(".")) {
-                    domain = domain.substring(1, domain.length());
-                }
-                if (!host.equals(domain)) { 
-                    throw new MalformedCookieException(
-                        "Illegal domain attribute \"" + domain 
-                        + "\". Domain of origin: \"" + host + "\"");
-                }
-            }
-        } else {
-            if (!host.equals(domain)) {
-                throw new MalformedCookieException(
-                    "Illegal domain attribute \"" + domain 
-                    + "\". Domain of origin: \"" + host + "\"");
-            }
-        }
-    }
-    
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        String host = origin.getHost();
-        String domain = cookie.getDomain();
-        if (domain == null) {
-            return false;
-        }
-        if (host.equals(domain)) {
-            return true;
-        }
-        if (!domain.startsWith(".")) {
-            domain = '.' + domain;
-        }
-        return host.endsWith(domain) || host.equals(domain.substring(1));
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/BasicExpiresHandler.java b/src/org/apache/http/impl/cookie/BasicExpiresHandler.java
deleted file mode 100644
index a53519e..0000000
--- a/src/org/apache/http/impl/cookie/BasicExpiresHandler.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BasicExpiresHandler.java $
- * $Revision: 558519 $
- * $Date: 2007-07-22 11:19:49 -0700 (Sun, 22 Jul 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.impl.cookie;
-
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-
-
-public class BasicExpiresHandler extends AbstractCookieAttributeHandler {
-
-    /** Valid date patterns */
-    private final String[] datepatterns;
-
-    public BasicExpiresHandler(final String[] datepatterns) {
-        if (datepatterns == null) {
-            throw new IllegalArgumentException("Array of date patterns may not be null");
-        }
-        this.datepatterns = datepatterns;
-    }
-
-    public void parse(final SetCookie cookie, final String value) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (value == null) {
-            throw new MalformedCookieException("Missing value for expires attribute");
-        }
-        try {
-            cookie.setExpiryDate(DateUtils.parseDate(value, this.datepatterns));
-        } catch (DateParseException dpe) {
-            throw new MalformedCookieException("Unable to parse expires attribute: " 
-                + value);
-        }
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/BasicMaxAgeHandler.java b/src/org/apache/http/impl/cookie/BasicMaxAgeHandler.java
deleted file mode 100644
index 92a5c7d..0000000
--- a/src/org/apache/http/impl/cookie/BasicMaxAgeHandler.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BasicMaxAgeHandler.java $
- * $Revision: 581953 $
- * $Date: 2007-10-04 08:53:50 -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.impl.cookie;
-
-import java.util.Date;
-
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-
-public class BasicMaxAgeHandler extends AbstractCookieAttributeHandler {
-
-    public BasicMaxAgeHandler() {
-        super();
-    }
-    
-    public void parse(final SetCookie cookie, final String value) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (value == null) {
-            throw new MalformedCookieException("Missing value for max-age attribute");
-        }
-        int age;
-        try {
-            age = Integer.parseInt(value);
-        } catch (NumberFormatException e) {
-            throw new MalformedCookieException ("Invalid max-age attribute: " 
-                    + value);
-        }
-        if (age < 0) {
-            throw new MalformedCookieException ("Negative max-age attribute: " 
-                    + value);
-        }
-        cookie.setExpiryDate(new Date(System.currentTimeMillis() + age * 1000L));
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/BasicPathHandler.java b/src/org/apache/http/impl/cookie/BasicPathHandler.java
deleted file mode 100644
index 43a12c8..0000000
--- a/src/org/apache/http/impl/cookie/BasicPathHandler.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BasicPathHandler.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.cookie;
-
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-
-public class BasicPathHandler implements CookieAttributeHandler {
-
-    public BasicPathHandler() {
-        super();
-    }
-    
-    public void parse(final SetCookie cookie, String value) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (value == null || value.trim().length() == 0) {
-            value = "/";
-        }
-        cookie.setPath(value);
-    }
-
-    public void validate(final Cookie cookie, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        if (!match(cookie, origin)) {
-            throw new MalformedCookieException(
-                "Illegal path attribute \"" + cookie.getPath() 
-                + "\". Path of origin: \"" + origin.getPath() + "\"");
-        }
-    }
-    
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        String targetpath = origin.getPath();
-        String topmostPath = cookie.getPath();
-        if (topmostPath == null) {
-            topmostPath = "/";
-        }
-        if (topmostPath.length() > 1 && topmostPath.endsWith("/")) {
-            topmostPath = topmostPath.substring(0, topmostPath.length() - 1);
-        }
-        boolean match = targetpath.startsWith (topmostPath);
-        // if there is a match and these values are not exactly the same we have
-        // to make sure we're not matcing "/foobar" and "/foo"
-        if (match && targetpath.length() != topmostPath.length()) {
-            if (!topmostPath.endsWith("/")) {
-                match = (targetpath.charAt(topmostPath.length()) == '/');
-            }
-        }
-        return match;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/BasicSecureHandler.java b/src/org/apache/http/impl/cookie/BasicSecureHandler.java
deleted file mode 100644
index 9100b9c..0000000
--- a/src/org/apache/http/impl/cookie/BasicSecureHandler.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BasicSecureHandler.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.cookie;
-
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-
-public class BasicSecureHandler extends AbstractCookieAttributeHandler {
-
-    public BasicSecureHandler() {
-        super();
-    }
-    
-    public void parse(final SetCookie cookie, final String value) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        cookie.setSecure(true);
-    }
-    
-    @Override
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        return !cookie.isSecure() || origin.isSecure();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/BestMatchSpec.java b/src/org/apache/http/impl/cookie/BestMatchSpec.java
deleted file mode 100644
index e33fec3..0000000
--- a/src/org/apache/http/impl/cookie/BestMatchSpec.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java $
- * $Revision: 657334 $
- * $Date: 2008-05-17 04:44:16 -0700 (Sat, 17 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.impl.cookie;
-
-import java.util.List;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.MalformedCookieException;
-
-/**
- * 'Meta' cookie specification that selects a cookie policy depending
- * on the format of the cookie(s)
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public class BestMatchSpec implements CookieSpec {
-
-    private final String[] datepatterns;
-    private final boolean oneHeader;
-    
-    private RFC2965Spec strict;
-    private BrowserCompatSpec compat;
-    private NetscapeDraftSpec netscape;
-
-    public BestMatchSpec(final String[] datepatterns, boolean oneHeader) {
-        super();
-        this.datepatterns = datepatterns;
-        this.oneHeader = oneHeader;
-    }
-
-    public BestMatchSpec() {
-        this(null, false);
-    }
-
-    private RFC2965Spec getStrict() {
-        if (this.strict == null) {
-             this.strict = new RFC2965Spec(this.datepatterns, this.oneHeader);
-        }
-        return strict;
-    }
-
-    private BrowserCompatSpec getCompat() {
-        if (this.compat == null) {
-            this.compat = new BrowserCompatSpec(this.datepatterns);
-        }
-        return compat;
-    }
-
-    private NetscapeDraftSpec getNetscape() {
-        if (this.netscape == null) {
-            String[] patterns = this.datepatterns;
-            if (patterns == null) {
-                patterns = BrowserCompatSpec.DATE_PATTERNS;
-            }
-            this.netscape = new NetscapeDraftSpec(patterns);
-        }
-        return netscape;
-    }
-
-    public List<Cookie> parse(
-            final Header header, 
-            final CookieOrigin origin) throws MalformedCookieException {
-        if (header == null) {
-            throw new IllegalArgumentException("Header may not be null");
-        }
-        if (origin == null) {
-           throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        HeaderElement[] helems = header.getElements();
-        boolean versioned = false;
-        boolean netscape = false;
-        for (HeaderElement helem: helems) {
-            if (helem.getParameterByName("version") != null) {
-                versioned = true;
-            }
-            if (helem.getParameterByName("expires") != null) {
-               netscape = true;
-            }
-        }
-        if (netscape) {
-            
-        }
-        // Do we have a cookie with a version attribute?
-        if (versioned) {
-            return getStrict().parse(helems, origin);
-        } else if (netscape) {
-            // Need to parse the header again,
-            // because Netscape draft cannot handle
-            // comma separators
-            return getNetscape().parse(header, origin);
-        } else {
-            return getCompat().parse(helems, origin);
-        }
-    }
-
-    public void validate(
-            final Cookie cookie, 
-            final CookieOrigin origin) throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        if (cookie.getVersion() > 0) {
-            getStrict().validate(cookie, origin);
-        } else {
-            getCompat().validate(cookie, origin);
-        }
-    }
-
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        if (cookie.getVersion() > 0) {
-            return getStrict().match(cookie, origin);
-        } else {
-            return getCompat().match(cookie, origin);
-        }
-    }
-
-    public List<Header> formatCookies(final List<Cookie> cookies) {
-        if (cookies == null) {
-            throw new IllegalArgumentException("List of cookie may not be null");
-        }
-        int version = Integer.MAX_VALUE;
-        for (Cookie cookie: cookies) {
-            if (cookie.getVersion() < version) {
-                version = cookie.getVersion();
-            }
-        }
-        if (version > 0) {
-            return getStrict().formatCookies(cookies);
-        } else {
-            return getCompat().formatCookies(cookies);
-        }
-    }
-
-    public int getVersion() {
-        return getStrict().getVersion();
-    }
-
-    public Header getVersionHeader() {
-        return getStrict().getVersionHeader();
-    }
-
-}
\ No newline at end of file
diff --git a/src/org/apache/http/impl/cookie/BestMatchSpecFactory.java b/src/org/apache/http/impl/cookie/BestMatchSpecFactory.java
deleted file mode 100644
index cb632bb..0000000
--- a/src/org/apache/http/impl/cookie/BestMatchSpecFactory.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BestMatchSpecFactory.java $
- * $Revision: 613707 $
- * $Date: 2008-01-20 16:28:37 -0800 (Sun, 20 Jan 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.impl.cookie;
-
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecFactory;
-import org.apache.http.cookie.params.CookieSpecPNames;
-import org.apache.http.params.HttpParams;
-
-/**
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public class BestMatchSpecFactory implements CookieSpecFactory {    
-
-    public CookieSpec newInstance(final HttpParams params) {
-        if (params != null) {
-            return new BestMatchSpec(
-                    (String []) params.getParameter(CookieSpecPNames.DATE_PATTERNS), 
-                    params.getBooleanParameter(CookieSpecPNames.SINGLE_COOKIE_HEADER, false));
-        } else {
-            return new BestMatchSpec();
-        }
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/BrowserCompatSpec.java b/src/org/apache/http/impl/cookie/BrowserCompatSpec.java
deleted file mode 100644
index d7bc0da..0000000
--- a/src/org/apache/http/impl/cookie/BrowserCompatSpec.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java $
- * $Revision: 657334 $
- * $Date: 2008-05-17 04:44:16 -0700 (Sat, 17 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.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.http.FormattedHeader;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SM;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Cookie specification that strives to closely mimic (mis)behavior of 
- * common web browser applications such as Microsoft Internet Explorer
- * and Mozilla FireFox.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0 
- */
-public class BrowserCompatSpec extends CookieSpecBase {
-    
-    /** Valid date patterns used per default */
-    protected static final String[] DATE_PATTERNS = new String[] {
-            DateUtils.PATTERN_RFC1123,
-            DateUtils.PATTERN_RFC1036,
-            DateUtils.PATTERN_ASCTIME,
-            "EEE, dd-MMM-yyyy HH:mm:ss z",
-            "EEE, dd-MMM-yyyy HH-mm-ss z",
-            "EEE, dd MMM yy HH:mm:ss z",
-            "EEE dd-MMM-yyyy HH:mm:ss z",
-            "EEE dd MMM yyyy HH:mm:ss z",
-            "EEE dd-MMM-yyyy HH-mm-ss z",
-            "EEE dd-MMM-yy HH:mm:ss z",
-            "EEE dd MMM yy HH:mm:ss z",
-            "EEE,dd-MMM-yy HH:mm:ss z",
-            "EEE,dd-MMM-yyyy HH:mm:ss z",
-            "EEE, dd-MM-yyyy HH:mm:ss z",                
-        };
-
-    private final String[] datepatterns; 
-    
-    /** Default constructor */
-    public BrowserCompatSpec(final String[] datepatterns) {
-        super();
-        if (datepatterns != null) {
-            this.datepatterns = datepatterns.clone();
-        } else {
-            this.datepatterns = DATE_PATTERNS;
-        }
-        registerAttribHandler(ClientCookie.PATH_ATTR, new BasicPathHandler());
-        registerAttribHandler(ClientCookie.DOMAIN_ATTR, new BasicDomainHandler());
-        registerAttribHandler(ClientCookie.MAX_AGE_ATTR, new BasicMaxAgeHandler());
-        registerAttribHandler(ClientCookie.SECURE_ATTR, new BasicSecureHandler());
-        registerAttribHandler(ClientCookie.COMMENT_ATTR, new BasicCommentHandler());
-        registerAttribHandler(ClientCookie.EXPIRES_ATTR, new BasicExpiresHandler(
-                this.datepatterns));
-    }
-
-    /** Default constructor */
-    public BrowserCompatSpec() {
-        this(null);
-    }
-    
-    public List<Cookie> parse(final Header header, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        if (header == null) {
-            throw new IllegalArgumentException("Header may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        String headervalue = header.getValue();
-        boolean isNetscapeCookie = false; 
-        int i1 = headervalue.toLowerCase(Locale.ENGLISH).indexOf("expires=");
-        if (i1 != -1) {
-            i1 += "expires=".length();
-            int i2 = headervalue.indexOf(';', i1);
-            if (i2 == -1) {
-                i2 = headervalue.length(); 
-            }
-            try {
-                DateUtils.parseDate(headervalue.substring(i1, i2), this.datepatterns);
-                isNetscapeCookie = true; 
-            } catch (DateParseException e) {
-                // Does not look like a valid expiry date
-            }
-        }
-        HeaderElement[] elems = null;
-        if (isNetscapeCookie) {
-            NetscapeDraftHeaderParser parser = NetscapeDraftHeaderParser.DEFAULT;
-            CharArrayBuffer buffer;
-            ParserCursor cursor;
-            if (header instanceof FormattedHeader) {
-                buffer = ((FormattedHeader) header).getBuffer();
-                cursor = new ParserCursor(
-                        ((FormattedHeader) header).getValuePos(), 
-                        buffer.length());
-            } else {
-                String s = header.getValue();
-                if (s == null) {
-                    throw new MalformedCookieException("Header value is null");
-                }
-                buffer = new CharArrayBuffer(s.length());
-                buffer.append(s);
-                cursor = new ParserCursor(0, buffer.length());
-            }
-            elems = new HeaderElement[] { parser.parseHeader(buffer, cursor) };
-        } else {
-            elems = header.getElements();
-        }
-        return parse(elems, origin);
-    }
-
-    public List<Header> formatCookies(final List<Cookie> cookies) {
-        if (cookies == null) {
-            throw new IllegalArgumentException("List of cookies may not be null");
-        }
-        if (cookies.isEmpty()) {
-            throw new IllegalArgumentException("List of cookies may not be empty");
-        }
-        CharArrayBuffer buffer = new CharArrayBuffer(20 * cookies.size());
-        buffer.append(SM.COOKIE);
-        buffer.append(": ");
-        for (int i = 0; i < cookies.size(); i++) {
-            Cookie cookie = cookies.get(i);
-            if (i > 0) {
-                buffer.append("; ");
-            }
-            buffer.append(cookie.getName());
-            buffer.append("=");
-            String s = cookie.getValue();
-            if (s != null) {
-                buffer.append(s);
-            }
-        }
-        List<Header> headers = new ArrayList<Header>(1);
-        headers.add(new BufferedHeader(buffer));
-        return headers;
-    }
-
-    public int getVersion() {
-        return 0;
-    }
-
-    public Header getVersionHeader() {
-        return null;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/BrowserCompatSpecFactory.java b/src/org/apache/http/impl/cookie/BrowserCompatSpecFactory.java
deleted file mode 100644
index 71c0c05..0000000
--- a/src/org/apache/http/impl/cookie/BrowserCompatSpecFactory.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpecFactory.java $
- * $Revision: 576068 $
- * $Date: 2007-09-16 03:25:01 -0700 (Sun, 16 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.impl.cookie;
-
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecFactory;
-import org.apache.http.cookie.params.CookieSpecPNames;
-import org.apache.http.params.HttpParams;
-
-/**
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public class BrowserCompatSpecFactory implements CookieSpecFactory {    
-
-    public CookieSpec newInstance(final HttpParams params) {
-        if (params != null) {
-            return new BrowserCompatSpec(
-                    (String []) params.getParameter(CookieSpecPNames.DATE_PATTERNS));
-        } else {
-            return new BrowserCompatSpec();
-        }
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/CookieSpecBase.java b/src/org/apache/http/impl/cookie/CookieSpecBase.java
deleted file mode 100644
index 8e70bb1..0000000
--- a/src/org/apache/http/impl/cookie/CookieSpecBase.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/CookieSpecBase.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-
-/**
- * Cookie management functions shared by all specification.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0 
- */
-public abstract class CookieSpecBase extends AbstractCookieSpec {
-    
-    protected static String getDefaultPath(final CookieOrigin origin) {
-        String defaultPath = origin.getPath();    
-        int lastSlashIndex = defaultPath.lastIndexOf('/');
-        if (lastSlashIndex >= 0) {
-            if (lastSlashIndex == 0) {
-                //Do not remove the very first slash
-                lastSlashIndex = 1;
-            }
-            defaultPath = defaultPath.substring(0, lastSlashIndex);
-        }
-        return defaultPath;
-    }
-
-    protected static String getDefaultDomain(final CookieOrigin origin) {
-        return origin.getHost();
-    }
-    
-    protected List<Cookie> parse(final HeaderElement[] elems, final CookieOrigin origin)
-                throws MalformedCookieException {
-        List<Cookie> cookies = new ArrayList<Cookie>(elems.length);
-        for (HeaderElement headerelement : elems) {
-            String name = headerelement.getName();
-            String value = headerelement.getValue();
-            if (name == null || name.length() == 0) {
-                throw new MalformedCookieException("Cookie name may not be empty");
-            }
-
-            BasicClientCookie cookie = new BasicClientCookie(name, value);
-            cookie.setPath(getDefaultPath(origin));
-            cookie.setDomain(getDefaultDomain(origin));
-
-            // cycle through the parameters
-            NameValuePair[] attribs = headerelement.getParameters();
-            for (int j = attribs.length - 1; j >= 0; j--) {
-                NameValuePair attrib = attribs[j];
-                String s = attrib.getName().toLowerCase(Locale.ENGLISH);
-
-                cookie.setAttribute(s, attrib.getValue());
-
-                CookieAttributeHandler handler = findAttribHandler(s);
-                if (handler != null) {
-                    handler.parse(cookie, attrib.getValue());
-                }
-            }
-            cookies.add(cookie);
-        }
-        return cookies;
-    }
-
-    public void validate(final Cookie cookie, final CookieOrigin origin)
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        for (CookieAttributeHandler handler: getAttribHandlers()) {
-            handler.validate(cookie, origin);
-        }
-    }
-
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        for (CookieAttributeHandler handler: getAttribHandlers()) {
-            if (!handler.match(cookie, origin)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/DateParseException.java b/src/org/apache/http/impl/cookie/DateParseException.java
deleted file mode 100644
index c80b669..0000000
--- a/src/org/apache/http/impl/cookie/DateParseException.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/DateParseException.java $
- * $Revision: 609105 $
- * $Date: 2008-01-05 00:55:00 -0800 (Sat, 05 Jan 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.impl.cookie;
-
-
-/**
- * An exception to indicate an error parsing a date string.
- * 
- * @see DateUtils
- * 
- * @author Michael Becke
- */
-public class DateParseException extends Exception {
-
-    private static final long serialVersionUID = 4417696455000643370L;
-    
-    /**
-     * 
-     */
-    public DateParseException() {
-        super();
-    }
-
-    /**
-     * @param message the exception message
-     */
-    public DateParseException(String message) {
-        super(message);
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/DateUtils.java b/src/org/apache/http/impl/cookie/DateUtils.java
deleted file mode 100644
index a0a056c..0000000
--- a/src/org/apache/http/impl/cookie/DateUtils.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/DateUtils.java $
- * $Revision: 677240 $
- * $Date: 2008-07-16 04:25:47 -0700 (Wed, 16 Jul 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.impl.cookie;
-
-import java.lang.ref.SoftReference;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TimeZone;
-
-/**
- * A utility class for parsing and formatting HTTP dates as used in cookies and 
- * other headers.  This class handles dates as defined by RFC 2616 section 
- * 3.3.1 as well as some other common non-standard formats.
- * 
- * @author Christopher Brown
- * @author Michael Becke
- */
-public final class DateUtils {
-
-    /**
-     * Date format pattern used to parse HTTP date headers in RFC 1123 format.
-     */
-    public static final String PATTERN_RFC1123 = "EEE, dd MMM yyyy HH:mm:ss zzz";
-
-    /**
-     * Date format pattern used to parse HTTP date headers in RFC 1036 format.
-     */
-    public static final String PATTERN_RFC1036 = "EEEE, dd-MMM-yy HH:mm:ss zzz";
-
-    /**
-     * Date format pattern used to parse HTTP date headers in ANSI C 
-     * <code>asctime()</code> format.
-     */
-    public static final String PATTERN_ASCTIME = "EEE MMM d HH:mm:ss yyyy";
-
-    private static final String[] DEFAULT_PATTERNS = new String[] {
-    	PATTERN_RFC1036,
-    	PATTERN_RFC1123,
-        PATTERN_ASCTIME
-    };
-
-    private static final Date DEFAULT_TWO_DIGIT_YEAR_START;
-    
-    public static final TimeZone GMT = TimeZone.getTimeZone("GMT");
-    
-    static {
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTimeZone(GMT);
-        calendar.set(2000, Calendar.JANUARY, 1, 0, 0, 0);
-        calendar.set(Calendar.MILLISECOND, 0);
-        DEFAULT_TWO_DIGIT_YEAR_START = calendar.getTime(); 
-    }
-    
-    /**
-     * Parses a date value.  The formats used for parsing the date value are retrieved from
-     * the default http params.
-     *
-     * @param dateValue the date value to parse
-     * 
-     * @return the parsed date
-     *
-     * @throws DateParseException if the value could not be parsed using any of the 
-     * supported date formats
-     */
-    public static Date parseDate(String dateValue) throws DateParseException {
-        return parseDate(dateValue, null, null);
-    }
-    
-    /**
-     * Parses the date value using the given date formats.
-     * 
-     * @param dateValue the date value to parse
-     * @param dateFormats the date formats to use
-     * 
-     * @return the parsed date
-     * 
-     * @throws DateParseException if none of the dataFormats could parse the dateValue
-     */
-    public static Date parseDate(final String dateValue, String[] dateFormats) 
-        throws DateParseException {
-        return parseDate(dateValue, dateFormats, null);
-    }
-    
-    /**
-     * Parses the date value using the given date formats.
-     * 
-     * @param dateValue the date value to parse
-     * @param dateFormats the date formats to use
-     * @param startDate During parsing, two digit years will be placed in the range 
-     * <code>startDate</code> to <code>startDate + 100 years</code>. This value may 
-     * be <code>null</code>. When <code>null</code> is given as a parameter, year 
-     * <code>2000</code> will be used. 
-     * 
-     * @return the parsed date
-     * 
-     * @throws DateParseException if none of the dataFormats could parse the dateValue
-     */
-    public static Date parseDate(
-        String dateValue, 
-        String[] dateFormats,
-        Date startDate 
-    ) throws DateParseException {
-        
-        if (dateValue == null) {
-            throw new IllegalArgumentException("dateValue is null");
-        }
-        if (dateFormats == null) {
-            dateFormats = DEFAULT_PATTERNS;
-        }
-        if (startDate == null) {
-            startDate = DEFAULT_TWO_DIGIT_YEAR_START;
-        }
-        // trim single quotes around date if present
-        // see issue #5279
-        if (dateValue.length() > 1 
-            && dateValue.startsWith("'") 
-            && dateValue.endsWith("'")
-        ) {
-            dateValue = dateValue.substring (1, dateValue.length() - 1);
-        }
-
-        for (String dateFormat : dateFormats) {
-            SimpleDateFormat dateParser = DateFormatHolder.formatFor(dateFormat);
-            dateParser.set2DigitYearStart(startDate);
-
-            try {
-                return dateParser.parse(dateValue);
-            } catch (ParseException pe) {
-                // ignore this exception, we will try the next format
-            }
-        }
-        
-        // we were unable to parse the date
-        throw new DateParseException("Unable to parse the date " + dateValue);        
-    }
-
-    /**
-     * Formats the given date according to the RFC 1123 pattern.
-     * 
-     * @param date The date to format.
-     * @return An RFC 1123 formatted date string.
-     * 
-     * @see #PATTERN_RFC1123
-     */
-    public static String formatDate(Date date) {
-        return formatDate(date, PATTERN_RFC1123);
-    }
-    
-    /**
-     * Formats the given date according to the specified pattern.  The pattern
-     * must conform to that used by the {@link SimpleDateFormat simple date
-     * format} class.
-     * 
-     * @param date The date to format.
-     * @param pattern The pattern to use for formatting the date.  
-     * @return A formatted date string.
-     * 
-     * @throws IllegalArgumentException If the given date pattern is invalid.
-     * 
-     * @see SimpleDateFormat
-     */
-    public static String formatDate(Date date, String pattern) {
-        if (date == null) throw new IllegalArgumentException("date is null");
-        if (pattern == null) throw new IllegalArgumentException("pattern is null");
-        
-        SimpleDateFormat formatter = DateFormatHolder.formatFor(pattern);
-        return formatter.format(date);
-    }
-    
-    /** This class should not be instantiated. */    
-    private DateUtils() { 
-    }
-    
-    /**
-     * A factory for {@link SimpleDateFormat}s. The instances are stored in a
-     * threadlocal way because SimpleDateFormat is not threadsafe as noted in
-     * {@link SimpleDateFormat its javadoc}.
-     * 
-     * @author Daniel Mueller
-     */
-    final static class DateFormatHolder {
-
-        private static final ThreadLocal<SoftReference<Map<String, SimpleDateFormat>>> 
-            THREADLOCAL_FORMATS = new ThreadLocal<SoftReference<Map<String, SimpleDateFormat>>>() {
-
-            @Override
-            protected SoftReference<Map<String, SimpleDateFormat>> initialValue() {
-                return new SoftReference<Map<String, SimpleDateFormat>>(
-                        new HashMap<String, SimpleDateFormat>());
-            }
-            
-        };
-
-        /**
-         * creates a {@link SimpleDateFormat} for the requested format string.
-         * 
-         * @param pattern
-         *            a non-<code>null</code> format String according to
-         *            {@link SimpleDateFormat}. The format is not checked against
-         *            <code>null</code> since all paths go through
-         *            {@link DateUtils}.
-         * @return the requested format. This simple dateformat should not be used
-         *         to {@link SimpleDateFormat#applyPattern(String) apply} to a
-         *         different pattern.
-         */
-        public static SimpleDateFormat formatFor(String pattern) {
-            SoftReference<Map<String, SimpleDateFormat>> ref = THREADLOCAL_FORMATS.get();
-            Map<String, SimpleDateFormat> formats = ref.get();
-            if (formats == null) {
-                formats = new HashMap<String, SimpleDateFormat>();
-                THREADLOCAL_FORMATS.set(
-                        new SoftReference<Map<String, SimpleDateFormat>>(formats));    
-            }
-
-            SimpleDateFormat format = formats.get(pattern);
-            if (format == null) {
-                format = new SimpleDateFormat(pattern, Locale.US);
-                format.setTimeZone(TimeZone.getTimeZone("GMT"));
-                formats.put(pattern, format);
-            }
-
-            return format;
-        }
-        
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/NetscapeDomainHandler.java b/src/org/apache/http/impl/cookie/NetscapeDomainHandler.java
deleted file mode 100644
index 8b785ae..0000000
--- a/src/org/apache/http/impl/cookie/NetscapeDomainHandler.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/NetscapeDomainHandler.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.cookie;
-
-import java.util.Locale;
-import java.util.StringTokenizer;
-
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-
-public class NetscapeDomainHandler extends BasicDomainHandler {
-
-    public NetscapeDomainHandler() {
-        super();
-    }
-
-    @Override
-    public void validate(final Cookie cookie, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        super.validate(cookie, origin);
-        // Perform Netscape Cookie draft specific validation
-        String host = origin.getHost();
-        String domain = cookie.getDomain();
-        if (host.contains(".")) {
-            int domainParts = new StringTokenizer(domain, ".").countTokens();
-
-            if (isSpecialDomain(domain)) {
-                if (domainParts < 2) {
-                    throw new MalformedCookieException("Domain attribute \""
-                        + domain 
-                        + "\" violates the Netscape cookie specification for "
-                        + "special domains");
-                }
-            } else {
-                if (domainParts < 3) {
-                    throw new MalformedCookieException("Domain attribute \""
-                        + domain 
-                        + "\" violates the Netscape cookie specification");
-                }            
-            }
-        }
-    }
-
-   /**
-    * Checks if the given domain is in one of the seven special
-    * top level domains defined by the Netscape cookie specification.
-    * @param domain The domain.
-    * @return True if the specified domain is "special"
-    */
-   private static boolean isSpecialDomain(final String domain) {
-       final String ucDomain = domain.toUpperCase(Locale.ENGLISH);
-       return ucDomain.endsWith(".COM")
-               || ucDomain.endsWith(".EDU")
-               || ucDomain.endsWith(".NET")
-               || ucDomain.endsWith(".GOV")
-               || ucDomain.endsWith(".MIL")
-               || ucDomain.endsWith(".ORG")
-               || ucDomain.endsWith(".INT");
-   }
-
-   @Override
-public boolean match(Cookie cookie, CookieOrigin origin) {
-       if (cookie == null) {
-           throw new IllegalArgumentException("Cookie may not be null");
-       }
-       if (origin == null) {
-           throw new IllegalArgumentException("Cookie origin may not be null");
-       }
-       String host = origin.getHost();
-       String domain = cookie.getDomain();
-       if (domain == null) {
-           return false;
-       }
-       return host.endsWith(domain);
-   }
-
-}
diff --git a/src/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.java b/src/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.java
deleted file mode 100644
index ca6b7fa..0000000
--- a/src/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.java $
- * $Revision: 603563 $
- * $Date: 2007-12-12 03:17:55 -0800 (Wed, 12 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.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.ParseException;
-import org.apache.http.message.BasicHeaderElement;
-import org.apache.http.message.BasicHeaderValueParser;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.util.CharArrayBuffer;
-
-public class NetscapeDraftHeaderParser {
-
-    public final static NetscapeDraftHeaderParser DEFAULT = new NetscapeDraftHeaderParser();
-    
-    private final static char[] DELIMITERS = new char[] { ';' };
-    
-    private final BasicHeaderValueParser nvpParser;
-    
-    public NetscapeDraftHeaderParser() {
-        super();
-        this.nvpParser = BasicHeaderValueParser.DEFAULT;
-    }
-    
-    public HeaderElement parseHeader(
-            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");
-        }
-        NameValuePair nvp = this.nvpParser.parseNameValuePair(buffer, cursor, DELIMITERS);
-        List<NameValuePair> params = new ArrayList<NameValuePair>(); 
-        while (!cursor.atEnd()) {
-            NameValuePair param = this.nvpParser.parseNameValuePair(buffer, cursor, DELIMITERS);
-            params.add(param);
-        }
-        return new BasicHeaderElement(
-                nvp.getName(), 
-                nvp.getValue(), params.toArray(new NameValuePair[params.size()]));
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/NetscapeDraftSpec.java b/src/org/apache/http/impl/cookie/NetscapeDraftSpec.java
deleted file mode 100644
index 3bc4f9f..0000000
--- a/src/org/apache/http/impl/cookie/NetscapeDraftSpec.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java $
- * $Revision: 677240 $
- * $Date: 2008-07-16 04:25:47 -0700 (Wed, 16 Jul 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.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.http.FormattedHeader;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SM;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Netscape cookie draft compliant cookie policy
- *
- * @author  B.C. Holmes
- * @author <a href="mailto:jericho@thinkfree.com">Park, Sung-Gu</a>
- * @author <a href="mailto:dsale@us.britannica.com">Doug Sale</a>
- * @author Rod Waldhoff
- * @author dIon Gillard
- * @author Sean C. Sullivan
- * @author <a href="mailto:JEvans@Cyveillance.com">John Evans</a>
- * @author Marc A. Saegesser
- * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * 
- * @since 4.0 
- */
-public class NetscapeDraftSpec extends CookieSpecBase {
-
-    protected static final String EXPIRES_PATTERN = "EEE, dd-MMM-yyyy HH:mm:ss z";
-    
-    private final String[] datepatterns; 
-    
-    /** Default constructor */
-    public NetscapeDraftSpec(final String[] datepatterns) {
-        super();
-        if (datepatterns != null) {
-            this.datepatterns = datepatterns.clone();
-        } else {
-            this.datepatterns = new String[] { EXPIRES_PATTERN };
-        }
-        registerAttribHandler(ClientCookie.PATH_ATTR, new BasicPathHandler());
-        registerAttribHandler(ClientCookie.DOMAIN_ATTR, new NetscapeDomainHandler());
-        registerAttribHandler(ClientCookie.MAX_AGE_ATTR, new BasicMaxAgeHandler());
-        registerAttribHandler(ClientCookie.SECURE_ATTR, new BasicSecureHandler());
-        registerAttribHandler(ClientCookie.COMMENT_ATTR, new BasicCommentHandler());
-        registerAttribHandler(ClientCookie.EXPIRES_ATTR, new BasicExpiresHandler(
-                this.datepatterns));
-    }
-
-    /** Default constructor */
-    public NetscapeDraftSpec() {
-        this(null);
-    }
-    
-    /**
-      * Parses the Set-Cookie value into an array of <tt>Cookie</tt>s.
-      *
-      * <p>Syntax of the Set-Cookie HTTP Response Header:</p>
-      * 
-      * <p>This is the format a CGI script would use to add to 
-      * the HTTP headers a new piece of data which is to be stored by 
-      * the client for later retrieval.</p>
-      *  
-      * <PRE>
-      *  Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
-      * </PRE>
-      *
-      * <p>Please note that Netscape draft specification does not fully 
-      * conform to the HTTP header format. Netscape draft does not specify 
-      * whether multiple cookies may be sent in one header. Hence, comma 
-      * character may be present in unquoted cookie value or unquoted 
-      * parameter value.</p>
-      * 
-      * @see <a href="http://wp.netscape.com/newsref/std/cookie_spec.html">
-      *  The Cookie Spec.</a>
-      *
-      * @param header the <tt>Set-Cookie</tt> received from the server
-      * @return an array of <tt>Cookie</tt>s parsed from the Set-Cookie value
-      * @throws MalformedCookieException if an exception occurs during parsing
-      */
-    public List<Cookie> parse(final Header header, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        if (header == null) {
-            throw new IllegalArgumentException("Header may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        NetscapeDraftHeaderParser parser = NetscapeDraftHeaderParser.DEFAULT;
-        CharArrayBuffer buffer;
-        ParserCursor cursor;
-        if (header instanceof FormattedHeader) {
-            buffer = ((FormattedHeader) header).getBuffer();
-            cursor = new ParserCursor(
-                    ((FormattedHeader) header).getValuePos(), 
-                    buffer.length());
-        } else {
-            String s = header.getValue();
-            if (s == null) {
-                throw new MalformedCookieException("Header value is null");
-            }
-            buffer = new CharArrayBuffer(s.length());
-            buffer.append(s);
-            cursor = new ParserCursor(0, buffer.length());
-        }
-        return parse(new HeaderElement[] { parser.parseHeader(buffer, cursor) }, origin);
-    }
-
-    public List<Header> formatCookies(final List<Cookie> cookies) {
-        if (cookies == null) {
-            throw new IllegalArgumentException("List of cookies may not be null");
-        }
-        if (cookies.isEmpty()) {
-            throw new IllegalArgumentException("List of cookies may not be empty");
-        }
-        CharArrayBuffer buffer = new CharArrayBuffer(20 * cookies.size());
-        buffer.append(SM.COOKIE);
-        buffer.append(": ");
-        for (int i = 0; i < cookies.size(); i++) {
-            Cookie cookie = cookies.get(i);
-            if (i > 0) {
-                buffer.append("; ");
-            }
-            buffer.append(cookie.getName());
-            String s = cookie.getValue();
-            if (s != null) {
-                buffer.append("=");
-                buffer.append(s);
-            }
-        }
-        List<Header> headers = new ArrayList<Header>(1);
-        headers.add(new BufferedHeader(buffer));
-        return headers;
-    }
-
-    public int getVersion() {
-        return 0;
-    }
-
-    public Header getVersionHeader() {
-        return null;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/NetscapeDraftSpecFactory.java b/src/org/apache/http/impl/cookie/NetscapeDraftSpecFactory.java
deleted file mode 100644
index 0dcb187..0000000
--- a/src/org/apache/http/impl/cookie/NetscapeDraftSpecFactory.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpecFactory.java $
- * $Revision: 657334 $
- * $Date: 2008-05-17 04:44:16 -0700 (Sat, 17 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.impl.cookie;
-
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecFactory;
-import org.apache.http.cookie.params.CookieSpecPNames;
-import org.apache.http.params.HttpParams;
-
-/**
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public class NetscapeDraftSpecFactory implements CookieSpecFactory {    
-
-    public CookieSpec newInstance(final HttpParams params) {
-        if (params != null) {
-            return new NetscapeDraftSpec(
-                    (String []) params.getParameter(CookieSpecPNames.DATE_PATTERNS));
-        } else {
-            return new NetscapeDraftSpec();
-        }
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/RFC2109DomainHandler.java b/src/org/apache/http/impl/cookie/RFC2109DomainHandler.java
deleted file mode 100644
index 9cfd484..0000000
--- a/src/org/apache/http/impl/cookie/RFC2109DomainHandler.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2109DomainHandler.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.cookie;
-
-import java.util.Locale;
-
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-
-public class RFC2109DomainHandler implements CookieAttributeHandler {
-
-    public RFC2109DomainHandler() {
-        super();
-    }
-    
-    public void parse(final SetCookie cookie, final String value) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (value == null) {
-            throw new MalformedCookieException("Missing value for domain attribute");
-        }
-        if (value.trim().length() == 0) {
-            throw new MalformedCookieException("Blank value for domain attribute");
-        }
-        cookie.setDomain(value);
-    }
-
-    public void validate(final Cookie cookie, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        String host = origin.getHost();
-        String domain = cookie.getDomain();
-        if (domain == null) {
-            throw new MalformedCookieException("Cookie domain may not be null");
-        }
-        if (!domain.equals(host)) {
-            int dotIndex = domain.indexOf('.');
-            if (dotIndex == -1) {
-                throw new MalformedCookieException("Domain attribute \"" 
-                        + domain 
-                        + "\" does not match the host \"" 
-                        + host + "\"");
-            }
-            // domain must start with dot
-            if (!domain.startsWith(".")) {
-                throw new MalformedCookieException("Domain attribute \"" 
-                    + domain 
-                    + "\" violates RFC 2109: domain must start with a dot");
-            }
-            // domain must have at least one embedded dot
-            dotIndex = domain.indexOf('.', 1);
-            if (dotIndex < 0 || dotIndex == domain.length() - 1) {
-                throw new MalformedCookieException("Domain attribute \"" 
-                    + domain 
-                    + "\" violates RFC 2109: domain must contain an embedded dot");
-            }
-            host = host.toLowerCase(Locale.ENGLISH);
-            if (!host.endsWith(domain)) {
-                throw new MalformedCookieException(
-                    "Illegal domain attribute \"" + domain 
-                    + "\". Domain of origin: \"" + host + "\"");
-            }
-            // host minus domain may not contain any dots
-            String hostWithoutDomain = host.substring(0, host.length() - domain.length());
-            if (hostWithoutDomain.indexOf('.') != -1) {
-                throw new MalformedCookieException("Domain attribute \"" 
-                    + domain 
-                    + "\" violates RFC 2109: host minus domain may not contain any dots");
-            }
-        }
-    }
-    
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        String host = origin.getHost();
-        String domain = cookie.getDomain();
-        if (domain == null) {
-            return false;
-        }
-        return host.equals(domain) || (domain.startsWith(".") && host.endsWith(domain));
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/RFC2109Spec.java b/src/org/apache/http/impl/cookie/RFC2109Spec.java
deleted file mode 100644
index 9e45408..0000000
--- a/src/org/apache/http/impl/cookie/RFC2109Spec.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2109Spec.java $
- * $Revision: 677240 $
- * $Date: 2008-07-16 04:25:47 -0700 (Wed, 16 Jul 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.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookiePathComparator;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SM;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * RFC 2109 compliant cookie policy
- *
- * @author  B.C. Holmes
- * @author <a href="mailto:jericho@thinkfree.com">Park, Sung-Gu</a>
- * @author <a href="mailto:dsale@us.britannica.com">Doug Sale</a>
- * @author Rod Waldhoff
- * @author dIon Gillard
- * @author Sean C. Sullivan
- * @author <a href="mailto:JEvans@Cyveillance.com">John Evans</a>
- * @author Marc A. Saegesser
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * 
- * @since 4.0 
- */
-
-public class RFC2109Spec extends CookieSpecBase {
-
-    private final static CookiePathComparator PATH_COMPARATOR = new CookiePathComparator(); 
-    
-    private final static String[] DATE_PATTERNS = {
-        DateUtils.PATTERN_RFC1123,
-        DateUtils.PATTERN_RFC1036,
-        DateUtils.PATTERN_ASCTIME 
-    }; 
-    
-    private final String[] datepatterns; 
-    private final boolean oneHeader;
-    
-    /** Default constructor */
-    public RFC2109Spec(final String[] datepatterns, boolean oneHeader) {
-        super();
-        if (datepatterns != null) {
-            this.datepatterns = datepatterns.clone();
-        } else {
-            this.datepatterns = DATE_PATTERNS;
-        }
-        this.oneHeader = oneHeader;
-        registerAttribHandler(ClientCookie.VERSION_ATTR, new RFC2109VersionHandler());
-        registerAttribHandler(ClientCookie.PATH_ATTR, new BasicPathHandler());
-        registerAttribHandler(ClientCookie.DOMAIN_ATTR, new RFC2109DomainHandler());
-        registerAttribHandler(ClientCookie.MAX_AGE_ATTR, new BasicMaxAgeHandler());
-        registerAttribHandler(ClientCookie.SECURE_ATTR, new BasicSecureHandler());
-        registerAttribHandler(ClientCookie.COMMENT_ATTR, new BasicCommentHandler());
-        registerAttribHandler(ClientCookie.EXPIRES_ATTR, new BasicExpiresHandler(
-                this.datepatterns));
-    }
-
-    /** Default constructor */
-    public RFC2109Spec() {
-        this(null, false);
-    }
-    
-    public List<Cookie> parse(final Header header, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        if (header == null) {
-            throw new IllegalArgumentException("Header may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        HeaderElement[] elems = header.getElements();
-        return parse(elems, origin);
-    }
-
-    @Override
-    public void validate(final Cookie cookie, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        String name = cookie.getName();
-        if (name.indexOf(' ') != -1) {
-            throw new MalformedCookieException("Cookie name may not contain blanks");
-        }
-        if (name.startsWith("$")) {
-            throw new MalformedCookieException("Cookie name may not start with $");
-        }
-        super.validate(cookie, origin);
-    }
-
-    public List<Header> formatCookies(List<Cookie> cookies) {
-        if (cookies == null) {
-            throw new IllegalArgumentException("List of cookies may not be null");
-        }
-        if (cookies.isEmpty()) {
-            throw new IllegalArgumentException("List of cookies may not be empty");
-        }
-        if (cookies.size() > 1) {
-            // Create a mutable copy and sort the copy.
-            cookies = new ArrayList<Cookie>(cookies);
-            Collections.sort(cookies, PATH_COMPARATOR);
-        }
-        if (this.oneHeader) {
-            return doFormatOneHeader(cookies);
-        } else {
-            return doFormatManyHeaders(cookies);
-        }
-    }
-
-    private List<Header> doFormatOneHeader(final List<Cookie> cookies) {
-        int version = Integer.MAX_VALUE;
-        // Pick the lowest common denominator
-        for (Cookie cookie : cookies) {
-            if (cookie.getVersion() < version) {
-                version = cookie.getVersion();
-            }
-        }
-        CharArrayBuffer buffer = new CharArrayBuffer(40 * cookies.size());
-        buffer.append(SM.COOKIE);
-        buffer.append(": ");
-        buffer.append("$Version=");
-        buffer.append(Integer.toString(version));
-        for (Cookie cooky : cookies) {
-            buffer.append("; ");
-            Cookie cookie = cooky;
-            formatCookieAsVer(buffer, cookie, version);
-        }
-        List<Header> headers = new ArrayList<Header>(1);
-        headers.add(new BufferedHeader(buffer));
-        return headers;
-    }
-
-    private List<Header> doFormatManyHeaders(final List<Cookie> cookies) {
-        List<Header> headers = new ArrayList<Header>(cookies.size());
-        for (Cookie cookie : cookies) {
-            int version = cookie.getVersion();
-            CharArrayBuffer buffer = new CharArrayBuffer(40);
-            buffer.append("Cookie: ");
-            buffer.append("$Version=");
-            buffer.append(Integer.toString(version));
-            buffer.append("; ");
-            formatCookieAsVer(buffer, cookie, version);
-            headers.add(new BufferedHeader(buffer));
-        }
-        return headers;
-    }
-    
-    /**
-     * Return a name/value string suitable for sending in a <tt>"Cookie"</tt>
-     * header as defined in RFC 2109 for backward compatibility with cookie
-     * version 0
-     * @param buffer The char array buffer to use for output
-     * @param name The cookie name
-     * @param value The cookie value
-     * @param version The cookie version 
-     */
-    protected void formatParamAsVer(final CharArrayBuffer buffer, 
-            final String name, final String value, int version) {
-        buffer.append(name);
-        buffer.append("=");
-        if (value != null) {
-            if (version > 0) {
-                buffer.append('\"');
-                buffer.append(value);
-                buffer.append('\"');
-            } else {
-                buffer.append(value);
-            }
-        }
-    }
-
-    /**
-     * Return a string suitable for sending in a <tt>"Cookie"</tt> header 
-     * as defined in RFC 2109 for backward compatibility with cookie version 0
-     * @param buffer The char array buffer to use for output
-     * @param cookie The {@link Cookie} to be formatted as string
-     * @param version The version to use.
-     */
-    protected void formatCookieAsVer(final CharArrayBuffer buffer, 
-            final Cookie cookie, int version) {
-        formatParamAsVer(buffer, cookie.getName(), cookie.getValue(), version);
-        if (cookie.getPath() != null) {
-            if (cookie instanceof ClientCookie 
-                    && ((ClientCookie) cookie).containsAttribute(ClientCookie.PATH_ATTR)) {
-                buffer.append("; ");
-                formatParamAsVer(buffer, "$Path", cookie.getPath(), version);
-            }
-        }
-        if (cookie.getDomain() != null) {
-            if (cookie instanceof ClientCookie 
-                    && ((ClientCookie) cookie).containsAttribute(ClientCookie.DOMAIN_ATTR)) {
-                buffer.append("; ");
-                formatParamAsVer(buffer, "$Domain", cookie.getDomain(), version);
-            }
-        }
-    }
-
-    public int getVersion() {
-        return 1;
-    }
-
-    public Header getVersionHeader() {
-        return null;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/RFC2109SpecFactory.java b/src/org/apache/http/impl/cookie/RFC2109SpecFactory.java
deleted file mode 100644
index 35c506e..0000000
--- a/src/org/apache/http/impl/cookie/RFC2109SpecFactory.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2109SpecFactory.java $
- * $Revision: 576068 $
- * $Date: 2007-09-16 03:25:01 -0700 (Sun, 16 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.impl.cookie;
-
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecFactory;
-import org.apache.http.cookie.params.CookieSpecPNames;
-import org.apache.http.params.HttpParams;
-
-/**
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public class RFC2109SpecFactory implements CookieSpecFactory {    
-
-    public CookieSpec newInstance(final HttpParams params) {
-        if (params != null) {
-            return new RFC2109Spec(
-                    (String []) params.getParameter(CookieSpecPNames.DATE_PATTERNS), 
-                    params.getBooleanParameter(CookieSpecPNames.SINGLE_COOKIE_HEADER, false));
-        } else {
-            return new RFC2109Spec();
-        }
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/RFC2109VersionHandler.java b/src/org/apache/http/impl/cookie/RFC2109VersionHandler.java
deleted file mode 100644
index d2c4955..0000000
--- a/src/org/apache/http/impl/cookie/RFC2109VersionHandler.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2109VersionHandler.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.cookie;
-
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-
-public class RFC2109VersionHandler extends AbstractCookieAttributeHandler {
-
-    public RFC2109VersionHandler() {
-        super();
-    }
-    
-    public void parse(final SetCookie cookie, final String value) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (value == null) {
-            throw new MalformedCookieException("Missing value for version attribute");
-        }
-        if (value.trim().length() == 0) {
-            throw new MalformedCookieException("Blank value for version attribute");
-        }
-        try {
-           cookie.setVersion(Integer.parseInt(value));
-        } catch (NumberFormatException e) {
-            throw new MalformedCookieException("Invalid version: " 
-                + e.getMessage());
-        }
-    }
-
-    @Override
-    public void validate(final Cookie cookie, final CookieOrigin origin) 
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (cookie.getVersion() < 0) {
-            throw new MalformedCookieException("Cookie version may not be negative");
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java b/src/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java
deleted file mode 100644
index aa3a1c5..0000000
--- a/src/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java $
- * $Revision: 590695 $
- * $Date: 2007-10-31 07:55:41 -0700 (Wed, 31 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.impl.cookie;
-
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.cookie.SetCookie2;
-
-/**
-   * <tt>"CommantURL"</tt> cookie attribute handler for RFC 2965 cookie spec.
-   */
-  public class RFC2965CommentUrlAttributeHandler implements CookieAttributeHandler {
-
-      public RFC2965CommentUrlAttributeHandler() {
-          super();
-      }
-      
-      public void parse(final SetCookie cookie, final String commenturl)
-              throws MalformedCookieException {
-          if (cookie instanceof SetCookie2) {
-              SetCookie2 cookie2 = (SetCookie2) cookie;
-              cookie2.setCommentURL(commenturl);
-          }
-      }
-
-      public void validate(final Cookie cookie, final CookieOrigin origin)
-              throws MalformedCookieException {
-      }
-
-      public boolean match(final Cookie cookie, final CookieOrigin origin) {
-          return true;
-      }
-      
-  }
\ No newline at end of file
diff --git a/src/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java b/src/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java
deleted file mode 100644
index aa81145..0000000
--- a/src/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java $
- * $Revision: 590695 $
- * $Date: 2007-10-31 07:55:41 -0700 (Wed, 31 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.impl.cookie;
-
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.cookie.SetCookie2;
-
-/**
-   * <tt>"Discard"</tt> cookie attribute handler for RFC 2965 cookie spec.
-   */
-  public class RFC2965DiscardAttributeHandler implements CookieAttributeHandler {
-
-      public RFC2965DiscardAttributeHandler() {
-          super();
-      }
-      
-      public void parse(final SetCookie cookie, final String commenturl)
-              throws MalformedCookieException {
-          if (cookie instanceof SetCookie2) {
-              SetCookie2 cookie2 = (SetCookie2) cookie;
-              cookie2.setDiscard(true);
-          }
-      }
-
-      public void validate(final Cookie cookie, final CookieOrigin origin)
-              throws MalformedCookieException {
-      }
-
-      public boolean match(final Cookie cookie, final CookieOrigin origin) {
-          return true;
-      }
-      
-  }
\ No newline at end of file
diff --git a/src/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java b/src/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java
deleted file mode 100644
index b07e5e9..0000000
--- a/src/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.cookie;
-
-import java.util.Locale;
-
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-
-/**
- * <tt>"Domain"</tt> cookie attribute handler for RFC 2965 cookie spec.
- * 
- * @author jain.samit@gmail.com (Samit Jain)
- *
- * @since 3.1
- */
-public class RFC2965DomainAttributeHandler implements CookieAttributeHandler {
-
-    public RFC2965DomainAttributeHandler() {
-        super();
-    }
-
-    /**
-     * Parse cookie domain attribute.
-     */
-    public void parse(final SetCookie cookie, String domain)
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (domain == null) {
-            throw new MalformedCookieException(
-                    "Missing value for domain attribute");
-        }
-        if (domain.trim().length() == 0) {
-            throw new MalformedCookieException(
-                    "Blank value for domain attribute");
-        }
-        domain = domain.toLowerCase(Locale.ENGLISH);
-        if (!domain.startsWith(".")) {
-            // Per RFC 2965 section 3.2.2
-            // "... If an explicitly specified value does not start with
-            // a dot, the user agent supplies a leading dot ..."
-            // That effectively implies that the domain attribute 
-            // MAY NOT be an IP address of a host name
-            domain = '.' + domain;
-        }
-        cookie.setDomain(domain);
-    }
-
-    /**
-     * Performs domain-match as defined by the RFC2965.
-     * <p>
-     * Host A's name domain-matches host B's if
-     * <ol>
-     *   <ul>their host name strings string-compare equal; or</ul>
-     *   <ul>A is a HDN string and has the form NB, where N is a non-empty
-     *       name string, B has the form .B', and B' is a HDN string.  (So,
-     *       x.y.com domain-matches .Y.com but not Y.com.)</ul>
-     * </ol>
-     *
-     * @param host host name where cookie is received from or being sent to.
-     * @param domain The cookie domain attribute.
-     * @return true if the specified host matches the given domain.
-     */
-    public boolean domainMatch(String host, String domain) {
-        boolean match = host.equals(domain)
-                        || (domain.startsWith(".") && host.endsWith(domain));
-
-        return match;
-    }
-
-    /**
-     * Validate cookie domain attribute.
-     */
-    public void validate(final Cookie cookie, final CookieOrigin origin)
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        String host = origin.getHost().toLowerCase(Locale.ENGLISH);
-        if (cookie.getDomain() == null) {
-            throw new MalformedCookieException("Invalid cookie state: " +
-                                               "domain not specified");
-        }
-        String cookieDomain = cookie.getDomain().toLowerCase(Locale.ENGLISH);
-
-        if (cookie instanceof ClientCookie 
-                && ((ClientCookie) cookie).containsAttribute(ClientCookie.DOMAIN_ATTR)) {
-            // Domain attribute must start with a dot
-            if (!cookieDomain.startsWith(".")) {
-                throw new MalformedCookieException("Domain attribute \"" +
-                    cookie.getDomain() + "\" violates RFC 2109: domain must start with a dot");
-            }
-
-            // Domain attribute must contain at least one embedded dot,
-            // or the value must be equal to .local.
-            int dotIndex = cookieDomain.indexOf('.', 1);
-            if (((dotIndex < 0) || (dotIndex == cookieDomain.length() - 1))
-                && (!cookieDomain.equals(".local"))) {
-                throw new MalformedCookieException(
-                        "Domain attribute \"" + cookie.getDomain()
-                        + "\" violates RFC 2965: the value contains no embedded dots "
-                        + "and the value is not .local");
-            }
-
-            // The effective host name must domain-match domain attribute.
-            if (!domainMatch(host, cookieDomain)) {
-                throw new MalformedCookieException(
-                        "Domain attribute \"" + cookie.getDomain()
-                        + "\" violates RFC 2965: effective host name does not "
-                        + "domain-match domain attribute.");
-            }
-
-            // effective host name minus domain must not contain any dots
-            String effectiveHostWithoutDomain = host.substring(
-                    0, host.length() - cookieDomain.length());
-            if (effectiveHostWithoutDomain.indexOf('.') != -1) {
-                throw new MalformedCookieException("Domain attribute \""
-                                                   + cookie.getDomain() + "\" violates RFC 2965: "
-                                                   + "effective host minus domain may not contain any dots");
-            }
-        } else {
-            // Domain was not specified in header. In this case, domain must
-            // string match request host (case-insensitive).
-            if (!cookie.getDomain().equals(host)) {
-                throw new MalformedCookieException("Illegal domain attribute: \""
-                                                   + cookie.getDomain() + "\"."
-                                                   + "Domain of origin: \""
-                                                   + host + "\"");
-            }
-        }
-    }
-
-    /**
-     * Match cookie domain attribute.
-     */
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        String host = origin.getHost().toLowerCase(Locale.ENGLISH);
-        String cookieDomain = cookie.getDomain();
-
-        // The effective host name MUST domain-match the Domain
-        // attribute of the cookie.
-        if (!domainMatch(host, cookieDomain)) {
-            return false;
-        }
-        // effective host name minus domain must not contain any dots
-        String effectiveHostWithoutDomain = host.substring(
-                0, host.length() - cookieDomain.length());
-        return effectiveHostWithoutDomain.indexOf('.') == -1;
-    }
-
-}
\ No newline at end of file
diff --git a/src/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.java b/src/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.java
deleted file mode 100644
index b881cda..0000000
--- a/src/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.java $
- * $Revision: 590695 $
- * $Date: 2007-10-31 07:55:41 -0700 (Wed, 31 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.impl.cookie;
-
-import java.util.StringTokenizer;
-
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.cookie.SetCookie2;
-
-/**
- * <tt>"Port"</tt> cookie attribute handler for RFC 2965 cookie spec.
- */
-public class RFC2965PortAttributeHandler implements CookieAttributeHandler {
-
-    public RFC2965PortAttributeHandler() {
-        super();
-    }
-
-    /**
-     * Parses the given Port attribute value (e.g. "8000,8001,8002")
-     * into an array of ports.
-     *
-     * @param portValue port attribute value
-     * @return parsed array of ports
-     * @throws MalformedCookieException if there is a problem in
-     *          parsing due to invalid portValue.
-     */
-    private static int[] parsePortAttribute(final String portValue)
-            throws MalformedCookieException {
-        StringTokenizer st = new StringTokenizer(portValue, ",");
-        int[] ports = new int[st.countTokens()];
-        try {
-            int i = 0;
-            while(st.hasMoreTokens()) {
-                ports[i] = Integer.parseInt(st.nextToken().trim());
-                if (ports[i] < 0) {
-                  throw new MalformedCookieException ("Invalid Port attribute.");
-                }
-                ++i;
-            }
-        } catch (NumberFormatException e) {
-            throw new MalformedCookieException ("Invalid Port "
-                                                + "attribute: " + e.getMessage());
-        }
-        return ports;
-    }
-
-    /**
-     * Returns <tt>true</tt> if the given port exists in the given
-     * ports list.
-     *
-     * @param port port of host where cookie was received from or being sent to.
-     * @param ports port list
-     * @return true returns <tt>true</tt> if the given port exists in
-     *         the given ports list; <tt>false</tt> otherwise.
-     */
-    private static boolean portMatch(int port, int[] ports) {
-        boolean portInList = false;
-        for (int i = 0, len = ports.length; i < len; i++) {
-            if (port == ports[i]) {
-                portInList = true;
-                break;
-            }
-        }
-        return portInList;
-    }
-
-    /**
-     * Parse cookie port attribute.
-     */
-    public void parse(final SetCookie cookie, final String portValue)
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (cookie instanceof SetCookie2) {
-            SetCookie2 cookie2 = (SetCookie2) cookie;
-            if (portValue != null && portValue.trim().length() > 0) {
-                int[] ports = parsePortAttribute(portValue);
-                cookie2.setPorts(ports);
-            }
-        }
-    }
-
-    /**
-     * Validate cookie port attribute. If the Port attribute was specified
-     * in header, the request port must be in cookie's port list.
-     */
-    public void validate(final Cookie cookie, final CookieOrigin origin)
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        int port = origin.getPort();
-        if (cookie instanceof ClientCookie 
-                && ((ClientCookie) cookie).containsAttribute(ClientCookie.PORT_ATTR)) {
-            if (!portMatch(port, cookie.getPorts())) {
-                throw new MalformedCookieException(
-                        "Port attribute violates RFC 2965: "
-                        + "Request port not found in cookie's port list.");
-            }
-        }
-    }
-
-    /**
-     * Match cookie port attribute. If the Port attribute is not specified
-     * in header, the cookie can be sent to any port. Otherwise, the request port
-     * must be in the cookie's port list.
-     */
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        int port = origin.getPort();
-        if (cookie instanceof ClientCookie 
-                && ((ClientCookie) cookie).containsAttribute(ClientCookie.PORT_ATTR)) {
-            if (cookie.getPorts() == null) {
-                // Invalid cookie state: port not specified
-                return false;
-            }
-            if (!portMatch(port, cookie.getPorts())) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/RFC2965Spec.java b/src/org/apache/http/impl/cookie/RFC2965Spec.java
deleted file mode 100644
index 9422fdf..0000000
--- a/src/org/apache/http/impl/cookie/RFC2965Spec.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2965Spec.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 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.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SM;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * <p>RFC 2965 specific cookie management functions.</p>
- * 
- * @author jain.samit@gmail.com (Samit Jain)
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 3.1
- */
-public class RFC2965Spec extends RFC2109Spec {
-
-    /** 
-     * Default constructor 
-     * 
-     */
-    public RFC2965Spec() {
-        this(null, false);
-    }
-    
-    public RFC2965Spec(final String[] datepatterns, boolean oneHeader) {
-        super(datepatterns, oneHeader);
-        registerAttribHandler(ClientCookie.DOMAIN_ATTR, new RFC2965DomainAttributeHandler());
-        registerAttribHandler(ClientCookie.PORT_ATTR, new RFC2965PortAttributeHandler());
-        registerAttribHandler(ClientCookie.COMMENTURL_ATTR, new RFC2965CommentUrlAttributeHandler());
-        registerAttribHandler(ClientCookie.DISCARD_ATTR, new RFC2965DiscardAttributeHandler());
-        registerAttribHandler(ClientCookie.VERSION_ATTR, new RFC2965VersionAttributeHandler());
-    }
-    
-    private BasicClientCookie createCookie(
-            final String name, final String value, final CookieOrigin origin) {
-        BasicClientCookie cookie = new BasicClientCookie(name, value);
-        cookie.setPath(getDefaultPath(origin));
-        cookie.setDomain(getDefaultDomain(origin));
-        return cookie;
-    }
-    
-    private BasicClientCookie createCookie2(
-            final String name, final String value, final CookieOrigin origin) {
-        BasicClientCookie2 cookie = new BasicClientCookie2(name, value);
-        cookie.setPath(getDefaultPath(origin));
-        cookie.setDomain(getDefaultDomain(origin));
-        cookie.setPorts(new int [] { origin.getPort() });
-        return cookie;
-    }
-    
-    @Override
-    public List<Cookie> parse(
-            final Header header, 
-            CookieOrigin origin) throws MalformedCookieException {
-        if (header == null) {
-            throw new IllegalArgumentException("Header may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        
-        origin = adjustEffectiveHost(origin);
-        
-        HeaderElement[] elems = header.getElements();
-
-        List<Cookie> cookies = new ArrayList<Cookie>(elems.length);
-        for (HeaderElement headerelement : elems) {
-            String name = headerelement.getName();
-            String value = headerelement.getValue();
-            if (name == null || name.length() == 0) {
-                throw new MalformedCookieException("Cookie name may not be empty");
-            }
-
-            BasicClientCookie cookie;
-            if (header.getName().equals(SM.SET_COOKIE2)) {
-                cookie = createCookie2(name, value, origin);
-            } else {
-                cookie = createCookie(name, value, origin);
-            }
-
-            // cycle through the parameters
-            NameValuePair[] attribs = headerelement.getParameters();
-
-            // Eliminate duplicate attributes. The first occurrence takes precedence
-            // See RFC2965: 3.2  Origin Server Role
-            Map<String, NameValuePair> attribmap =
-                    new HashMap<String, NameValuePair>(attribs.length);
-            for (int j = attribs.length - 1; j >= 0; j--) {
-                NameValuePair param = attribs[j];
-                attribmap.put(param.getName().toLowerCase(Locale.ENGLISH), param);
-            }
-            for (Map.Entry<String, NameValuePair> entry : attribmap.entrySet()) {
-                NameValuePair attrib = entry.getValue();
-                String s = attrib.getName().toLowerCase(Locale.ENGLISH);
-
-                cookie.setAttribute(s, attrib.getValue());
-
-                CookieAttributeHandler handler = findAttribHandler(s);
-                if (handler != null) {
-                    handler.parse(cookie, attrib.getValue());
-                }
-            }
-            cookies.add(cookie);
-        }
-        return cookies;
-    }
-
-    @Override
-    public void validate(final Cookie cookie, CookieOrigin origin)
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        origin = adjustEffectiveHost(origin);
-        super.validate(cookie, origin);
-    }
-
-    @Override
-    public boolean match(final Cookie cookie, CookieOrigin origin) {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (origin == null) {
-            throw new IllegalArgumentException("Cookie origin may not be null");
-        }
-        origin = adjustEffectiveHost(origin);
-        return super.match(cookie, origin);
-    }
-
-    /**
-     * Adds valid Port attribute value, e.g. "8000,8001,8002"
-     */
-    @Override
-    protected void formatCookieAsVer(final CharArrayBuffer buffer, 
-            final Cookie cookie, int version) {
-        super.formatCookieAsVer(buffer, cookie, version);
-        // format port attribute
-        if (cookie instanceof ClientCookie) {
-            // Test if the port attribute as set by the origin server is not blank
-            String s = ((ClientCookie) cookie).getAttribute(ClientCookie.PORT_ATTR);
-            if (s != null) {
-                buffer.append("; $Port");
-                buffer.append("=\"");
-                if (s.trim().length() > 0) {
-                    int[] ports = cookie.getPorts();
-                    if (ports != null) {
-                        for (int i = 0, len = ports.length; i < len; i++) {
-                            if (i > 0) {
-                                buffer.append(",");
-                            }
-                            buffer.append(Integer.toString(ports[i]));
-                        }
-                    }
-                }
-                buffer.append("\"");
-            }
-        }
-    }
-    
-    /**
-     * Set 'effective host name' as defined in RFC 2965.
-     * <p>
-     * If a host name contains no dots, the effective host name is
-     * that name with the string .local appended to it.  Otherwise
-     * the effective host name is the same as the host name.  Note
-     * that all effective host names contain at least one dot.
-     *
-     * @param origin origin where cookie is received from or being sent to.
-     * @return
-     */
-    private static CookieOrigin adjustEffectiveHost(final CookieOrigin origin) {
-        String host = origin.getHost();
-        
-        // Test if the host name appears to be a fully qualified DNS name, 
-        // IPv4 address or IPv6 address
-        boolean isLocalHost = true;
-        for (int i = 0; i < host.length(); i++) {
-            char ch = host.charAt(i);
-            if (ch == '.' || ch == ':') {
-                isLocalHost = false;
-                break;
-            }
-        }
-        if (isLocalHost) {
-            host += ".local";
-            return new CookieOrigin(
-                    host, 
-                    origin.getPort(), 
-                    origin.getPath(), 
-                    origin.isSecure());
-        } else {
-            return origin;
-        }
-    }
-
-    @Override
-    public int getVersion() {
-        return 1;
-    }
-
-    @Override
-    public Header getVersionHeader() {
-        CharArrayBuffer buffer = new CharArrayBuffer(40);
-        buffer.append(SM.COOKIE2);
-        buffer.append(": ");
-        buffer.append("$Version=");
-        buffer.append(Integer.toString(getVersion()));
-        return new BufferedHeader(buffer);
-    }
-    
-}
-
diff --git a/src/org/apache/http/impl/cookie/RFC2965SpecFactory.java b/src/org/apache/http/impl/cookie/RFC2965SpecFactory.java
deleted file mode 100644
index 4b3cc4d..0000000
--- a/src/org/apache/http/impl/cookie/RFC2965SpecFactory.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2965SpecFactory.java $
- * $Revision: 581953 $
- * $Date: 2007-10-04 08:53:50 -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.impl.cookie;
-
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecFactory;
-import org.apache.http.cookie.params.CookieSpecPNames;
-import org.apache.http.params.HttpParams;
-
-/**
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- */
-public class RFC2965SpecFactory implements CookieSpecFactory {    
-
-    public CookieSpec newInstance(final HttpParams params) {
-        if (params != null) {
-            return new RFC2965Spec(
-                    (String []) params.getParameter(CookieSpecPNames.DATE_PATTERNS), 
-                    params.getBooleanParameter(CookieSpecPNames.SINGLE_COOKIE_HEADER, false));
-        } else {
-            return new RFC2965Spec();
-        }
-    }
-
-}
diff --git a/src/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java b/src/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java
deleted file mode 100644
index 8ea8481..0000000
--- a/src/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java $
- * $Revision: 590695 $
- * $Date: 2007-10-31 07:55:41 -0700 (Wed, 31 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.impl.cookie;
-
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.cookie.SetCookie2;
-
-/**
- * <tt>"Version"</tt> cookie attribute handler for RFC 2965 cookie spec.
- */
-public class RFC2965VersionAttributeHandler implements CookieAttributeHandler {
-
-    public RFC2965VersionAttributeHandler() {
-        super();
-    }
-    
-    /**
-     * Parse cookie version attribute.
-     */
-    public void parse(final SetCookie cookie, final String value)
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (value == null) {
-            throw new MalformedCookieException(
-                    "Missing value for version attribute");
-        }
-        int version = -1;
-        try {
-            version = Integer.parseInt(value);
-        } catch (NumberFormatException e) {
-            version = -1;
-        }
-        if (version < 0) {
-            throw new MalformedCookieException("Invalid cookie version.");
-        }
-        cookie.setVersion(version);
-    }
-
-    /**
-     * validate cookie version attribute. Version attribute is REQUIRED.
-     */
-    public void validate(final Cookie cookie, final CookieOrigin origin)
-            throws MalformedCookieException {
-        if (cookie == null) {
-            throw new IllegalArgumentException("Cookie may not be null");
-        }
-        if (cookie instanceof SetCookie2) {
-            if (cookie instanceof ClientCookie 
-                    && !((ClientCookie) cookie).containsAttribute(ClientCookie.VERSION_ATTR)) {
-                throw new MalformedCookieException(
-                        "Violates RFC 2965. Version attribute is required.");
-            }
-        }
-    }
-
-    public boolean match(final Cookie cookie, final CookieOrigin origin) {
-        return true;
-    }
-
-}
\ No newline at end of file
diff --git a/src/org/apache/http/impl/cookie/package.html b/src/org/apache/http/impl/cookie/package.html
deleted file mode 100644
index e301283..0000000
--- a/src/org/apache/http/impl/cookie/package.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<body>
-
-</body>
-
diff --git a/src/org/apache/http/impl/entity/EntityDeserializer.java b/src/org/apache/http/impl/entity/EntityDeserializer.java
deleted file mode 100644
index 12c4756..0000000
--- a/src/org/apache/http/impl/entity/EntityDeserializer.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/EntityDeserializer.java $
- * $Revision: 560358 $
- * $Date: 2007-07-27 12:30:42 -0700 (Fri, 27 Jul 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.impl.entity;
-
-import java.io.IOException;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.entity.BasicHttpEntity;
-import org.apache.http.entity.ContentLengthStrategy;
-import org.apache.http.impl.io.ChunkedInputStream;
-import org.apache.http.impl.io.ContentLengthInputStream;
-import org.apache.http.impl.io.IdentityInputStream;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.protocol.HTTP;
-
-/**
- * Default implementation of an entity deserializer.
- * <p>
- * This entity deserializer currently supports only "chunked" and "identitiy" transfer-coding</a>
- * </p>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 560358 $
- * 
- * @since 4.0
- */
-public class EntityDeserializer {
-
-    private final ContentLengthStrategy lenStrategy;
-    
-    public EntityDeserializer(final ContentLengthStrategy lenStrategy) {
-        super();
-        if (lenStrategy == null) {
-            throw new IllegalArgumentException("Content length strategy may not be null");
-        }
-        this.lenStrategy = lenStrategy;
-    }
-
-    protected BasicHttpEntity doDeserialize(
-            final SessionInputBuffer inbuffer,
-            final HttpMessage message) throws HttpException, IOException {
-        BasicHttpEntity entity = new BasicHttpEntity();
-        
-        long len = this.lenStrategy.determineLength(message);
-        if (len == ContentLengthStrategy.CHUNKED) {
-            entity.setChunked(true);
-            entity.setContentLength(-1);
-            entity.setContent(new ChunkedInputStream(inbuffer));
-        } else if (len == ContentLengthStrategy.IDENTITY) {
-            entity.setChunked(false);
-            entity.setContentLength(-1);
-            entity.setContent(new IdentityInputStream(inbuffer));                            
-        } else {
-            entity.setChunked(false);
-            entity.setContentLength(len);
-            entity.setContent(new ContentLengthInputStream(inbuffer, len));
-        }
-        
-        Header contentTypeHeader = message.getFirstHeader(HTTP.CONTENT_TYPE);
-        if (contentTypeHeader != null) {
-            entity.setContentType(contentTypeHeader);    
-        }
-        Header contentEncodingHeader = message.getFirstHeader(HTTP.CONTENT_ENCODING);
-        if (contentEncodingHeader != null) {
-            entity.setContentEncoding(contentEncodingHeader);    
-        }
-        return entity;
-    }
-        
-    public HttpEntity deserialize(
-            final SessionInputBuffer inbuffer,
-            final HttpMessage message) throws HttpException, IOException {
-        if (inbuffer == null) {
-            throw new IllegalArgumentException("Session input buffer may not be null");
-        }
-        if (message == null) {
-            throw new IllegalArgumentException("HTTP message may not be null");
-        }
-        return doDeserialize(inbuffer, message);
-    }
-    
-}
diff --git a/src/org/apache/http/impl/entity/EntitySerializer.java b/src/org/apache/http/impl/entity/EntitySerializer.java
deleted file mode 100644
index 3221980..0000000
--- a/src/org/apache/http/impl/entity/EntitySerializer.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/EntitySerializer.java $
- * $Revision: 560343 $
- * $Date: 2007-07-27 11:18:19 -0700 (Fri, 27 Jul 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.impl.entity;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.entity.ContentLengthStrategy;
-import org.apache.http.impl.io.ChunkedOutputStream;
-import org.apache.http.impl.io.ContentLengthOutputStream;
-import org.apache.http.impl.io.IdentityOutputStream;
-import org.apache.http.io.SessionOutputBuffer;
-
-/**
- * Default implementation of an entity serializer.
- * <p>
- * This entity serializer currently supports only "chunked" and "identitiy" transfer-coding</a>
- * </p>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 560343 $
- * 
- * @since 4.0
- */
-public class EntitySerializer {
-
-    private final ContentLengthStrategy lenStrategy;
-    
-    public EntitySerializer(final ContentLengthStrategy lenStrategy) {
-        super();
-        if (lenStrategy == null) {
-            throw new IllegalArgumentException("Content length strategy may not be null");
-        }
-        this.lenStrategy = lenStrategy;
-    }
-
-    protected OutputStream doSerialize(
-            final SessionOutputBuffer outbuffer,
-            final HttpMessage message) throws HttpException, IOException {
-        long len = this.lenStrategy.determineLength(message);
-        if (len == ContentLengthStrategy.CHUNKED) {
-            return new ChunkedOutputStream(outbuffer);
-        } else if (len == ContentLengthStrategy.IDENTITY) {
-            return new IdentityOutputStream(outbuffer);
-        } else {
-            return new ContentLengthOutputStream(outbuffer, len);
-        }
-    }
-
-    public void serialize(
-            final SessionOutputBuffer outbuffer,
-            final HttpMessage message,
-            final HttpEntity entity) throws HttpException, IOException {
-        if (outbuffer == null) {
-            throw new IllegalArgumentException("Session output buffer may not be null");
-        }
-        if (message == null) {
-            throw new IllegalArgumentException("HTTP message may not be null");
-        }
-        if (entity == null) {
-            throw new IllegalArgumentException("HTTP entity may not be null");
-        }
-        OutputStream outstream = doSerialize(outbuffer, message);
-        entity.writeTo(outstream);
-        outstream.close();
-    }
-    
-}
diff --git a/src/org/apache/http/impl/entity/LaxContentLengthStrategy.java b/src/org/apache/http/impl/entity/LaxContentLengthStrategy.java
deleted file mode 100644
index 9a0d238..0000000
--- a/src/org/apache/http/impl/entity/LaxContentLengthStrategy.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/LaxContentLengthStrategy.java $
- * $Revision: 576073 $
- * $Date: 2007-09-16 03:53:13 -0700 (Sun, 16 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.impl.entity;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.ParseException;
-import org.apache.http.ProtocolException;
-import org.apache.http.entity.ContentLengthStrategy;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.CoreProtocolPNames;
-import org.apache.http.protocol.HTTP;
-
-/**
- * The lax implementation of the content length strategy.
- * <p>
- * This strategy conforms to the entity transfer rules outlined in  
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec4.4">Section 4.4</a>, 
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6">Section 3.6</a>, 
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.41">Section 14.41</a>
- * and <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec14.13">Section 14.13</a>
- * of <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC 2616</a>, but is lenient 
- * about unsupported transfer codecs and malformed content-length headers.
- * </p>
- * <h>4.4 Message Length</h>
- * <p>
- * The transfer-length of a message is the length of the message-body as it appears in the 
- * message; that is, after any transfer-codings have been applied. When a message-body is 
- * included with a message, the transfer-length of that body is determined by one of the 
- * following (in order of precedence):
- * </p>
- * <p>
- * 1.Any response message which "MUST NOT" include a message-body (such as the 1xx, 204, 
- * and 304 responses and any response to a HEAD request) is always terminated by the first 
- * empty line after the header fields, regardless of the entity-header fields present in the 
- * message.
- * </p>
- * <p>
- * 2.If a Transfer-Encoding header field (section 14.41) is present and has any value other 
- * than "identity", then the transfer-length is defined by use of the "chunked" transfer-
- * coding (section 3.6), unless the message is terminated by closing the connection.
- * </p>
- * <p>
- * 3.If a Content-Length header field (section 14.13) is present, its decimal value in 
- * OCTETs represents both the entity-length and the transfer-length. The Content-Length 
- * header field MUST NOT be sent if these two lengths are different (i.e., if a 
- * Transfer-Encoding
- * </p>
- * <pre>
- *    header field is present). If a message is received with both a
- *    Transfer-Encoding header field and a Content-Length header field,
- *    the latter MUST be ignored.
- * </pre>
- * <p>
- * 4.If the message uses the media type "multipart/byteranges", and the ransfer-length is not 
- * otherwise specified, then this self- elimiting media type defines the transfer-length. 
- * This media type UST NOT be used unless the sender knows that the recipient can arse it; the 
- * presence in a request of a Range header with ultiple byte- range specifiers from a 1.1 
- * client implies that the lient can parse multipart/byteranges responses.
- * </p>
- * <pre>
- *     A range header might be forwarded by a 1.0 proxy that does not
- *     understand multipart/byteranges; in this case the server MUST
- *     delimit the message using methods defined in items 1,3 or 5 of
- *     this section.
- * </pre>
- * <p>
- * 5.By the server closing the connection. (Closing the connection cannot be used to indicate 
- * the end of a request body, since that would leave no possibility for the server to send back 
- * a response.)
- * </p>
- * <p>
- * For compatibility with HTTP/1.0 applications, HTTP/1.1 requests containing a message-body 
- * MUST include a valid Content-Length header field unless the server is known to be HTTP/1.1 
- * compliant. If a request contains a message-body and a Content-Length is not given, the 
- * server SHOULD respond with 400 (bad request) if it cannot determine the length of the 
- * message, or with 411 (length required) if it wishes to insist on receiving a valid 
- * Content-Length.
- * </p>
- * <p>All HTTP/1.1 applications that receive entities MUST accept the "chunked" transfer-coding 
- * (section 3.6), thus allowing this mechanism to be used for messages when the message 
- * length cannot be determined in advance. 
- * </p>
- * <h>3.6 Transfer Codings</h>
- * <p>
- * Transfer-coding values are used to indicate an encoding transformation that 
- * has been, can be, or may need to be applied to an entity-body in order to ensure 
- * "safe transport" through the network. This differs from a content coding in that 
- * the transfer-coding is a property of the message, not of the original entity.
- * </p>
- * <pre>
- * transfer-coding         = "chunked" | transfer-extension
- * transfer-extension      = token *( ";" parameter )
- * </pre>
- * <p>
- * Parameters are in the form of attribute/value pairs.
- * </p>
- * <pre>
- * parameter               = attribute "=" value
- * attribute               = token
- * value                   = token | quoted-string
- * </pre>
- * <p>
- * All transfer-coding values are case-insensitive. HTTP/1.1 uses transfer-coding values in 
- * the TE header field (section 14.39) and in the Transfer-Encoding header field (section 14.41).
- * </p>
- * <p>
- * Whenever a transfer-coding is applied to a message-body, the set of transfer-codings MUST 
- * include "chunked", unless the message is terminated by closing the connection. When the 
- * "chunked" transfer-coding is used, it MUST be the last transfer-coding applied to the 
- * message-body. The "chunked" transfer-coding MUST NOT be applied more than once to a 
- * message-body. These rules allow the recipient to determine the transfer-length of the 
- * message (section 4.4).
- * </p>
- * <h>14.41 Transfer-Encoding</h>
- * <p>
- * The Transfer-Encoding general-header field indicates what (if any) type of transformation has 
- * been applied to the message body in order to safely transfer it between the sender and the 
- * recipient. This differs from the content-coding in that the transfer-coding is a property of 
- * the message, not of the entity.
- * </p>
- * <pre>
- *   Transfer-Encoding       = "Transfer-Encoding" ":" 1#transfer-coding
- * </pre>
- * <p>
- * If multiple encodings have been applied to an entity, the transfer- codings MUST be listed in 
- * the order in which they were applied. Additional information about the encoding parameters 
- * MAY be provided by other entity-header fields not defined by this specification.
- * </p> 
- * <h>14.13 Content-Length</h>
- * <p>
- * The Content-Length entity-header field indicates the size of the entity-body, in decimal 
- * number of OCTETs, sent to the recipient or, in the case of the HEAD method, the size of 
- * the entity-body that would have been sent had the request been a GET.
- * </p>
- * <pre>
- *   Content-Length    = "Content-Length" ":" 1*DIGIT
- * </pre>
- * <p>
- * Applications SHOULD use this field to indicate the transfer-length of the message-body, 
- * unless this is prohibited by the rules in section 4.4. 
- * </p>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 576073 $
- * 
- * @since 4.0
- */
-public class LaxContentLengthStrategy implements ContentLengthStrategy {
-
-    public LaxContentLengthStrategy() {
-        super();
-    }
-
-    public long determineLength(final HttpMessage message) throws HttpException {
-        if (message == null) {
-            throw new IllegalArgumentException("HTTP message may not be null");
-        }
-
-        HttpParams params = message.getParams(); 
-        boolean strict = params.isParameterTrue(CoreProtocolPNames.STRICT_TRANSFER_ENCODING);
-        
-        Header transferEncodingHeader = message.getFirstHeader(HTTP.TRANSFER_ENCODING);
-        Header contentLengthHeader = message.getFirstHeader(HTTP.CONTENT_LEN);
-        // We use Transfer-Encoding if present and ignore Content-Length.
-        // RFC2616, 4.4 item number 3
-        if (transferEncodingHeader != null) {
-            HeaderElement[] encodings = null;
-            try {
-                encodings = transferEncodingHeader.getElements();
-            } catch (ParseException px) {
-                throw new ProtocolException
-                    ("Invalid Transfer-Encoding header value: " +
-                     transferEncodingHeader, px);
-            }
-            if (strict) {
-                // Currently only chunk and identity are supported
-                for (int i = 0; i < encodings.length; i++) {
-                    String encoding = encodings[i].getName();
-                    if (encoding != null && encoding.length() > 0 
-                        && !encoding.equalsIgnoreCase(HTTP.CHUNK_CODING)
-                        && !encoding.equalsIgnoreCase(HTTP.IDENTITY_CODING)) {
-                        throw new ProtocolException("Unsupported transfer encoding: " + encoding);
-                    }
-                }
-            }
-            // The chunked encoding must be the last one applied RFC2616, 14.41
-            int len = encodings.length;
-            if (HTTP.IDENTITY_CODING.equalsIgnoreCase(transferEncodingHeader.getValue())) {
-                return IDENTITY;                            
-            } else if ((len > 0) && (HTTP.CHUNK_CODING.equalsIgnoreCase(
-                    encodings[len - 1].getName()))) { 
-                return CHUNKED;
-            } else {
-                if (strict) {
-                    throw new ProtocolException("Chunk-encoding must be the last one applied");
-                }
-                return IDENTITY;                            
-            }
-        } else if (contentLengthHeader != null) {
-            long contentlen = -1;
-            Header[] headers = message.getHeaders(HTTP.CONTENT_LEN);
-            if (strict && headers.length > 1) {
-                throw new ProtocolException("Multiple content length headers");
-            }
-            for (int i = headers.length - 1; i >= 0; i--) {
-                Header header = headers[i];
-                try {
-                    contentlen = Long.parseLong(header.getValue());
-                    break;
-                } catch (NumberFormatException e) {
-                    if (strict) {
-                        throw new ProtocolException("Invalid content length: " + header.getValue());
-                    }
-                }
-                // See if we can have better luck with another header, if present
-            }
-            if (contentlen >= 0) {
-                return contentlen;
-            } else {
-                return IDENTITY;
-            }
-        } else {
-            return IDENTITY;
-        }
-    }
-        
-}
diff --git a/src/org/apache/http/impl/entity/StrictContentLengthStrategy.java b/src/org/apache/http/impl/entity/StrictContentLengthStrategy.java
deleted file mode 100644
index 30be8e2..0000000
--- a/src/org/apache/http/impl/entity/StrictContentLengthStrategy.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/StrictContentLengthStrategy.java $
- * $Revision: 573949 $
- * $Date: 2007-09-08 22:46: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.impl.entity;
-
-import org.apache.http.Header;
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolException;
-import org.apache.http.entity.ContentLengthStrategy;
-import org.apache.http.protocol.HTTP;
-
-/**
- * The strict implementation of the content length strategy.
- * <p>
- * This entity generator comforms to the entity transfer rules outlined in the 
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec4.4">Section 4.4</a>, 
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6">Section 3.6</a>, 
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.41">Section 14.41</a>
- * and <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec14.13">Section 14.13</a>
- * of <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC 2616</a>
- * </p>
- * <h>4.4 Message Length</h>
- * <p>
- * The transfer-length of a message is the length of the message-body as it appears in the 
- * message; that is, after any transfer-codings have been applied. When a message-body is 
- * included with a message, the transfer-length of that body is determined by one of the 
- * following (in order of precedence):
- * </p>
- * <p>
- * 1.Any response message which "MUST NOT" include a message-body (such as the 1xx, 204, 
- * and 304 responses and any response to a HEAD request) is always terminated by the first 
- * empty line after the header fields, regardless of the entity-header fields present in the 
- * message.
- * </p>
- * <p>
- * 2.If a Transfer-Encoding header field (section 14.41) is present and has any value other 
- * than "identity", then the transfer-length is defined by use of the "chunked" transfer-
- * coding (section 3.6), unless the message is terminated by closing the connection.
- * </p>
- * <p>
- * 3.If a Content-Length header field (section 14.13) is present, its decimal value in 
- * OCTETs represents both the entity-length and the transfer-length. The Content-Length 
- * header field MUST NOT be sent if these two lengths are different (i.e., if a 
- * Transfer-Encoding
- * </p>
- * <pre>
- *    header field is present). If a message is received with both a
- *    Transfer-Encoding header field and a Content-Length header field,
- *    the latter MUST be ignored.
- * </pre>
- * <p>
- * 4.If the message uses the media type "multipart/byteranges", and the ransfer-length is not 
- * otherwise specified, then this self- elimiting media type defines the transfer-length. 
- * This media type UST NOT be used unless the sender knows that the recipient can arse it; the 
- * presence in a request of a Range header with ultiple byte- range specifiers from a 1.1 
- * client implies that the lient can parse multipart/byteranges responses.
- * </p>
- * <pre>
- *     A range header might be forwarded by a 1.0 proxy that does not
- *     understand multipart/byteranges; in this case the server MUST
- *     delimit the message using methods defined in items 1,3 or 5 of
- *     this section.
- * </pre>
- * <p>
- * 5.By the server closing the connection. (Closing the connection cannot be used to indicate 
- * the end of a request body, since that would leave no possibility for the server to send back 
- * a response.)
- * </p>
- * <p>
- * For compatibility with HTTP/1.0 applications, HTTP/1.1 requests containing a message-body 
- * MUST include a valid Content-Length header field unless the server is known to be HTTP/1.1 
- * compliant. If a request contains a message-body and a Content-Length is not given, the 
- * server SHOULD respond with 400 (bad request) if it cannot determine the length of the 
- * message, or with 411 (length required) if it wishes to insist on receiving a valid 
- * Content-Length.
- * </p>
- * <p>All HTTP/1.1 applications that receive entities MUST accept the "chunked" transfer-coding 
- * (section 3.6), thus allowing this mechanism to be used for messages when the message 
- * length cannot be determined in advance. 
- * </p>
- * <h>3.6 Transfer Codings</h>
- * <p>
- * Transfer-coding values are used to indicate an encoding transformation that 
- * has been, can be, or may need to be applied to an entity-body in order to ensure 
- * "safe transport" through the network. This differs from a content coding in that 
- * the transfer-coding is a property of the message, not of the original entity.
- * </p>
- * <pre>
- * transfer-coding         = "chunked" | transfer-extension
- * transfer-extension      = token *( ";" parameter )
- * </pre>
- * <p>
- * Parameters are in the form of attribute/value pairs.
- * </p>
- * <pre>
- * parameter               = attribute "=" value
- * attribute               = token
- * value                   = token | quoted-string
- * </pre>
- * <p>
- * All transfer-coding values are case-insensitive. HTTP/1.1 uses transfer-coding values in 
- * the TE header field (section 14.39) and in the Transfer-Encoding header field (section 14.41).
- * </p>
- * <p>
- * Whenever a transfer-coding is applied to a message-body, the set of transfer-codings MUST 
- * include "chunked", unless the message is terminated by closing the connection. When the 
- * "chunked" transfer-coding is used, it MUST be the last transfer-coding applied to the 
- * message-body. The "chunked" transfer-coding MUST NOT be applied more than once to a 
- * message-body. These rules allow the recipient to determine the transfer-length of the 
- * message (section 4.4).
- * </p>
- * <h>14.41 Transfer-Encoding</h>
- * <p>
- * The Transfer-Encoding general-header field indicates what (if any) type of transformation has 
- * been applied to the message body in order to safely transfer it between the sender and the 
- * recipient. This differs from the content-coding in that the transfer-coding is a property of 
- * the message, not of the entity.
- * </p>
- * <pre>
- *   Transfer-Encoding       = "Transfer-Encoding" ":" 1#transfer-coding
- * </pre>
- * <p>
- * If multiple encodings have been applied to an entity, the transfer- codings MUST be listed in 
- * the order in which they were applied. Additional information about the encoding parameters 
- * MAY be provided by other entity-header fields not defined by this specification.
- * </p> 
- * <h>14.13 Content-Length</h>
- * <p>
- * The Content-Length entity-header field indicates the size of the entity-body, in decimal 
- * number of OCTETs, sent to the recipient or, in the case of the HEAD method, the size of 
- * the entity-body that would have been sent had the request been a GET.
- * </p>
- * <pre>
- *   Content-Length    = "Content-Length" ":" 1*DIGIT
- * </pre>
- * <p>
- * Applications SHOULD use this field to indicate the transfer-length of the message-body, 
- * unless this is prohibited by the rules in section 4.4. 
- * </p>
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 573949 $
- * 
- * @since 4.0
- */
-public class StrictContentLengthStrategy implements ContentLengthStrategy {
-
-    public StrictContentLengthStrategy() {
-        super();
-    }
-    
-    public long determineLength(final HttpMessage message) throws HttpException {
-        if (message == null) {
-            throw new IllegalArgumentException("HTTP message may not be null");
-        }
-        // Although Transfer-Encoding is specified as a list, in practice
-        // it is either missing or has the single value "chunked". So we
-        // treat it as a single-valued header here.
-        Header transferEncodingHeader = message.getFirstHeader(HTTP.TRANSFER_ENCODING);
-        Header contentLengthHeader = message.getFirstHeader(HTTP.CONTENT_LEN);
-        if (transferEncodingHeader != null) {
-            String s = transferEncodingHeader.getValue();
-            if (HTTP.CHUNK_CODING.equalsIgnoreCase(s)) {
-                if (message.getProtocolVersion().lessEquals(HttpVersion.HTTP_1_0)) {
-                    throw new ProtocolException(
-                            "Chunked transfer encoding not allowed for " + 
-                            message.getProtocolVersion());
-                }
-                return CHUNKED;
-            } else if (HTTP.IDENTITY_CODING.equalsIgnoreCase(s)) {
-                return IDENTITY;
-            } else {
-                throw new ProtocolException(
-                        "Unsupported transfer encoding: " + s);
-            }
-        } else if (contentLengthHeader != null) {
-            String s = contentLengthHeader.getValue();
-            try {
-                long len = Long.parseLong(s);
-                return len;
-            } catch (NumberFormatException e) {
-                throw new ProtocolException("Invalid content length: " + s);
-            }
-        } else {
-            return IDENTITY; 
-        }
-    }
-
-}
diff --git a/src/org/apache/http/impl/entity/package.html b/src/org/apache/http/impl/entity/package.html
deleted file mode 100644
index 9ac4481..0000000
--- a/src/org/apache/http/impl/entity/package.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/package.html $
- * $Revision: 496072 $
- * $Date: 2007-01-14 04:22:55 -0800 (Sun, 14 Jan 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>
-Default implementations for interfaces in
-{@link org.apache.http.entity org.apache.http.entity}.
-
-</body>
-</html>
diff --git a/src/org/apache/http/impl/io/AbstractMessageParser.java b/src/org/apache/http/impl/io/AbstractMessageParser.java
deleted file mode 100644
index 679bcd1..0000000
--- a/src/org/apache/http/impl/io/AbstractMessageParser.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/AbstractMessageParser.java $
- * $Revision: 576077 $
- * $Date: 2007-09-16 04:50:22 -0700 (Sun, 16 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.impl.io;
-
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.http.Header;
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.ParseException;
-import org.apache.http.ProtocolException;
-import org.apache.http.io.HttpMessageParser;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.message.LineParser;
-import org.apache.http.message.BasicLineParser;
-import org.apache.http.params.CoreConnectionPNames;
-import org.apache.http.params.HttpParams;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Message parser base class.
- * 
- * @author Michael Becke
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- */
-public abstract class AbstractMessageParser implements HttpMessageParser {
-
-    private final SessionInputBuffer sessionBuffer;
-    private final int maxHeaderCount;
-    private final int maxLineLen;
-    protected final LineParser lineParser;
-
-
-    public AbstractMessageParser(
-            final SessionInputBuffer buffer,
-            final LineParser parser,
-            final HttpParams params) {
-        super();
-        if (buffer == null) {
-            throw new IllegalArgumentException("Session input buffer may not be null");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        this.sessionBuffer = buffer;
-        this.maxHeaderCount = params.getIntParameter(
-                CoreConnectionPNames.MAX_HEADER_COUNT, -1);
-        this.maxLineLen = params.getIntParameter(
-                CoreConnectionPNames.MAX_LINE_LENGTH, -1);
-        this.lineParser = (parser != null) ? parser : BasicLineParser.DEFAULT;
-    }
-
-    /**
-     * Parses HTTP headers from the data receiver stream according to the generic 
-     * format as given in Section 3.1 of RFC 822, RFC-2616 Section 4 and 19.3.
-     *  
-     * @param inbuffer Session input buffer
-     * @param maxHeaderCount maximum number of headers allowed. If the number
-     *  of headers received from the data stream exceeds maxCount value, an
-     *  IOException will be thrown. Setting this parameter to a negative value
-     *  or zero  will disable the check.
-     * @param maxLineLen maximum number of characters for a header line,
-     *                   including the continuation lines
-     * @return array of HTTP headers
-     * 
-     * @throws HttpException
-     * @throws IOException
-     */
-    public static Header[] parseHeaders(
-            final SessionInputBuffer inbuffer,
-            int maxHeaderCount,
-            int maxLineLen,
-            LineParser parser)
-        throws HttpException, IOException {
-
-        if (inbuffer == null) {
-            throw new IllegalArgumentException("Session input buffer may not be null");
-        }
-        if (parser == null)
-            parser = BasicLineParser.DEFAULT;
-
-        ArrayList headerLines = new ArrayList();
-
-        CharArrayBuffer current = null;
-        CharArrayBuffer previous = null;
-        for (;;) {
-            if (current == null) {
-                current = new CharArrayBuffer(64);
-            } else {
-                current.clear();
-            }
-            int l = inbuffer.readLine(current);
-            if (l == -1 || current.length() < 1) {
-                break;
-            }
-            // Parse the header name and value
-            // Check for folded headers first
-            // Detect LWS-char see HTTP/1.0 or HTTP/1.1 Section 2.2
-            // discussion on folded headers
-            if ((current.charAt(0) == ' ' || current.charAt(0) == '\t') && previous != null) {
-                // we have continuation folded header
-                // so append value
-                int i = 0;
-                while (i < current.length()) {
-                    char ch = current.charAt(i);
-                    if (ch != ' ' && ch != '\t') {
-                        break;
-                    }
-                    i++;
-                }
-                if (maxLineLen > 0 
-                        && previous.length() + 1 + current.length() - i > maxLineLen) {
-                    throw new IOException("Maximum line length limit exceeded");
-                }
-                previous.append(' ');
-                previous.append(current, i, current.length() - i);
-            } else {
-                headerLines.add(current);
-                previous = current;
-                current = null;
-            }
-            if (maxHeaderCount > 0 && headerLines.size() >= maxHeaderCount) {
-                throw new IOException("Maximum header count exceeded");
-            }
-        }
-        Header[] headers = new Header[headerLines.size()];
-        for (int i = 0; i < headerLines.size(); i++) {
-            CharArrayBuffer buffer = (CharArrayBuffer) headerLines.get(i);
-            try {
-                headers[i] = parser.parseHeader(buffer);
-            } catch (ParseException ex) {
-                throw new ProtocolException(ex.getMessage());
-            }
-        }
-        return headers;
-    }
-
-    protected abstract HttpMessage parseHead(SessionInputBuffer sessionBuffer) 
-        throws IOException, HttpException, ParseException;
-
-    public HttpMessage parse() throws IOException, HttpException {
-        HttpMessage message = null;
-        try {
-            message = parseHead(this.sessionBuffer);
-        } catch (ParseException px) {
-            throw new ProtocolException(px.getMessage(), px);
-        }
-        Header[] headers = AbstractMessageParser.parseHeaders(
-                this.sessionBuffer, 
-                this.maxHeaderCount,
-                this.maxLineLen,
-                this.lineParser);
-        message.setHeaders(headers);
-        return message;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/AbstractMessageWriter.java b/src/org/apache/http/impl/io/AbstractMessageWriter.java
deleted file mode 100644
index f9644ce..0000000
--- a/src/org/apache/http/impl/io/AbstractMessageWriter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/AbstractMessageWriter.java $
- * $Revision: 569673 $
- * $Date: 2007-08-25 06:58:51 -0700 (Sat, 25 Aug 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.impl.io;
-
-import java.io.IOException;
-import java.util.Iterator;
-
-import org.apache.http.Header;
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.io.HttpMessageWriter;
-import org.apache.http.io.SessionOutputBuffer;
-import org.apache.http.message.LineFormatter;
-import org.apache.http.message.BasicLineFormatter;
-import org.apache.http.params.HttpParams;
-import org.apache.http.util.CharArrayBuffer;
-
-public abstract class AbstractMessageWriter implements HttpMessageWriter {
-    
-    protected final SessionOutputBuffer sessionBuffer;    
-    protected final CharArrayBuffer lineBuf;
-    protected final LineFormatter lineFormatter;
-
-    public AbstractMessageWriter(final SessionOutputBuffer buffer,
-                                 final LineFormatter formatter,
-                                 final HttpParams params) {
-        super();
-        if (buffer == null) {
-            throw new IllegalArgumentException("Session input buffer may not be null");
-        }
-        this.sessionBuffer = buffer;
-        this.lineBuf = new CharArrayBuffer(128);
-        this.lineFormatter = (formatter != null) ?
-            formatter : BasicLineFormatter.DEFAULT;
-    }
-    
-    protected abstract void writeHeadLine(HttpMessage message)
-        throws IOException
-        ;
-
-    public void write(
-            final HttpMessage message) throws IOException, HttpException {
-        if (message == null) {
-            throw new IllegalArgumentException("HTTP message may not be null");
-        }
-        writeHeadLine(message);
-        for (Iterator it = message.headerIterator(); it.hasNext(); ) {
-            Header header = (Header) it.next();
-            this.sessionBuffer.writeLine
-                (lineFormatter.formatHeader(this.lineBuf, header));
-        }
-        this.lineBuf.clear();
-        this.sessionBuffer.writeLine(this.lineBuf);
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/AbstractSessionInputBuffer.java b/src/org/apache/http/impl/io/AbstractSessionInputBuffer.java
deleted file mode 100644
index eb007a9..0000000
--- a/src/org/apache/http/impl/io/AbstractSessionInputBuffer.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/AbstractSessionInputBuffer.java $
- * $Revision: 576077 $
- * $Date: 2007-09-16 04:50:22 -0700 (Sun, 16 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.impl.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.io.HttpTransportMetrics;
-import org.apache.http.params.CoreConnectionPNames;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.HttpProtocolParams;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.ByteArrayBuffer;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Abstract base class for session input buffers that stream data 
- * from a {@link InputStream}.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- */
-public abstract class AbstractSessionInputBuffer implements SessionInputBuffer {
-
-    private InputStream instream;
-    private byte[] buffer;
-    private int bufferpos;
-    private int bufferlen;
-    
-    private ByteArrayBuffer linebuffer = null;
-    
-    private String charset = HTTP.US_ASCII;
-    private boolean ascii = true;
-    private int maxLineLen = -1;
-    
-    private HttpTransportMetricsImpl metrics;
-    
-    protected void init(final InputStream instream, int buffersize, final HttpParams params) {
-        if (instream == null) {
-            throw new IllegalArgumentException("Input stream may not be null");
-        }
-        if (buffersize <= 0) {
-            throw new IllegalArgumentException("Buffer size may not be negative or zero");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        this.instream = instream;
-        this.buffer = new byte[buffersize];
-        this.bufferpos = 0;
-        this.bufferlen = 0;
-        this.linebuffer = new ByteArrayBuffer(buffersize);
-        this.charset = HttpProtocolParams.getHttpElementCharset(params);
-        this.ascii = this.charset.equalsIgnoreCase(HTTP.US_ASCII)
-                     || this.charset.equalsIgnoreCase(HTTP.ASCII);
-        this.maxLineLen = params.getIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH, -1);
-        this.metrics = new HttpTransportMetricsImpl();
-    }
-    
-    protected int fillBuffer() throws IOException {
-        // compact the buffer if necessary
-        if (this.bufferpos > 0) {
-            int len = this.bufferlen - this.bufferpos;
-            if (len > 0) {
-                System.arraycopy(this.buffer, this.bufferpos, this.buffer, 0, len);
-            }
-            this.bufferpos = 0;
-            this.bufferlen = len;
-        }
-        int l;
-        int off = this.bufferlen;
-        int len = this.buffer.length - off;
-        l = this.instream.read(this.buffer, off, len);
-        if (l == -1) {
-            return -1;
-        } else {
-            this.bufferlen = off + l;
-            this.metrics.incrementBytesTransferred(l);
-            return l;
-        }
-    }
-
-    protected boolean hasBufferedData() {
-        return this.bufferpos < this.bufferlen;
-    }
-    
-    public int read() throws IOException {
-        int noRead = 0;
-        while (!hasBufferedData()) {
-            noRead = fillBuffer();
-            if (noRead == -1) {
-                return -1;
-            }
-        }
-        return this.buffer[this.bufferpos++] & 0xff;
-    }
-    
-    public int read(final byte[] b, int off, int len) throws IOException {
-        if (b == null) {
-            return 0;
-        }
-        int noRead = 0;
-        while (!hasBufferedData()) {
-            noRead = fillBuffer();
-            if (noRead == -1) {
-                return -1;
-            }
-        }
-        int chunk = this.bufferlen - this.bufferpos;
-        if (chunk > len) {
-            chunk = len;
-        }
-        System.arraycopy(this.buffer, this.bufferpos, b, off, chunk);
-        this.bufferpos += chunk;
-        return chunk;
-    }
-    
-    public int read(final byte[] b) throws IOException {
-        if (b == null) {
-            return 0;
-        }
-        return read(b, 0, b.length);
-    }
-    
-    private int locateLF() {
-        for (int i = this.bufferpos; i < this.bufferlen; i++) {
-            if (this.buffer[i] == HTTP.LF) {
-                return i;
-            }
-        }
-        return -1;
-    }
-    
-    public int readLine(final CharArrayBuffer charbuffer) throws IOException {
-        if (charbuffer == null) {
-            throw new IllegalArgumentException("Char array buffer may not be null");
-        }
-        this.linebuffer.clear();
-        int noRead = 0;
-        boolean retry = true;
-        while (retry) {
-            // attempt to find end of line (LF)
-            int i = locateLF();
-            if (i != -1) {
-                // end of line found. 
-                if (this.linebuffer.isEmpty()) {
-                    // the entire line is preset in the read buffer
-                    return lineFromReadBuffer(charbuffer, i);
-                }
-                retry = false;
-                int len = i + 1 - this.bufferpos;
-                this.linebuffer.append(this.buffer, this.bufferpos, len);
-                this.bufferpos = i + 1;
-            } else {
-                // end of line not found
-                if (hasBufferedData()) {
-                    int len = this.bufferlen - this.bufferpos;
-                    this.linebuffer.append(this.buffer, this.bufferpos, len);
-                    this.bufferpos = this.bufferlen;
-                }
-                noRead = fillBuffer();
-                if (noRead == -1) {
-                    retry = false;
-                }
-            }
-            if (this.maxLineLen > 0 && this.linebuffer.length() >= this.maxLineLen) {
-                throw new IOException("Maximum line length limit exceeded");
-            }
-        }
-        if (noRead == -1 && this.linebuffer.isEmpty()) {
-            // indicate the end of stream
-            return -1;
-        }
-        return lineFromLineBuffer(charbuffer);
-    }
-    
-    private int lineFromLineBuffer(final CharArrayBuffer charbuffer) 
-            throws IOException {
-        // discard LF if found
-        int l = this.linebuffer.length(); 
-        if (l > 0) {
-            if (this.linebuffer.byteAt(l - 1) == HTTP.LF) {
-                l--;
-                this.linebuffer.setLength(l);
-            }
-            // discard CR if found
-            if (l > 0) {
-                if (this.linebuffer.byteAt(l - 1) == HTTP.CR) {
-                    l--;
-                    this.linebuffer.setLength(l);
-                }
-            }
-        }
-        l = this.linebuffer.length(); 
-        if (this.ascii) {
-            charbuffer.append(this.linebuffer, 0, l);
-        } else {
-            // This is VERY memory inefficient, BUT since non-ASCII charsets are 
-            // NOT meant to be used anyway, there's no point optimizing it
-            String s = new String(this.linebuffer.buffer(), 0, l, this.charset);
-            charbuffer.append(s);
-        }
-        return l;
-    }
-    
-    private int lineFromReadBuffer(final CharArrayBuffer charbuffer, int pos) 
-            throws IOException {
-        int off = this.bufferpos;
-        int len;
-        this.bufferpos = pos + 1;
-        if (pos > 0 && this.buffer[pos - 1] == HTTP.CR) {
-            // skip CR if found
-            pos--;
-        }
-        len = pos - off;
-        if (this.ascii) {
-            charbuffer.append(this.buffer, off, len);
-        } else {
-            // This is VERY memory inefficient, BUT since non-ASCII charsets are 
-            // NOT meant to be used anyway, there's no point optimizing it
-            String s = new String(this.buffer, off, len, this.charset);
-            charbuffer.append(s);
-        }
-        return len;
-    }
-    
-    public String readLine() throws IOException {
-        CharArrayBuffer charbuffer = new CharArrayBuffer(64);
-        int l = readLine(charbuffer);
-        if (l != -1) {
-            return charbuffer.toString();
-        } else {
-            return null;
-        }
-    }
-    
-    public HttpTransportMetrics getMetrics() {
-        return this.metrics;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/AbstractSessionOutputBuffer.java b/src/org/apache/http/impl/io/AbstractSessionOutputBuffer.java
deleted file mode 100644
index bf4e56e..0000000
--- a/src/org/apache/http/impl/io/AbstractSessionOutputBuffer.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/AbstractSessionOutputBuffer.java $
- * $Revision: 652091 $
- * $Date: 2008-04-29 13:41:07 -0700 (Tue, 29 Apr 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.impl.io;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.apache.http.io.SessionOutputBuffer;
-import org.apache.http.io.HttpTransportMetrics;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.HttpProtocolParams;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.ByteArrayBuffer;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Abstract base class for session output buffers that stream data
- * to an {@link OutputStream}. 
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- */
-public abstract class AbstractSessionOutputBuffer implements SessionOutputBuffer {
-
-    private static final byte[] CRLF = new byte[] {HTTP.CR, HTTP.LF};
-    
-    private static final int MAX_CHUNK = 256;
-    
-    private OutputStream outstream;
-    private ByteArrayBuffer buffer;
-        
-    private String charset = HTTP.US_ASCII;
-    private boolean ascii = true;
-    
-    private HttpTransportMetricsImpl metrics;
-    
-    protected void init(final OutputStream outstream, int buffersize, final HttpParams params) {
-        if (outstream == null) {
-            throw new IllegalArgumentException("Input stream may not be null");
-        }
-        if (buffersize <= 0) {
-            throw new IllegalArgumentException("Buffer size may not be negative or zero");
-        }
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        this.outstream = outstream;
-        this.buffer = new ByteArrayBuffer(buffersize);
-        this.charset = HttpProtocolParams.getHttpElementCharset(params); 
-        this.ascii = this.charset.equalsIgnoreCase(HTTP.US_ASCII)
-                     || this.charset.equalsIgnoreCase(HTTP.ASCII);
-        this.metrics = new HttpTransportMetricsImpl();
-    }
-    
-    protected void flushBuffer() throws IOException {
-        int len = this.buffer.length();
-        if (len > 0) {
-            this.outstream.write(this.buffer.buffer(), 0, len);
-            this.buffer.clear();
-            this.metrics.incrementBytesTransferred(len);
-        }
-    }
-    
-    public void flush() throws IOException {
-        flushBuffer();
-        this.outstream.flush();
-    }
-    
-    public void write(final byte[] b, int off, int len) throws IOException {
-        if (b == null) {
-            return;
-        }
-        // Do not want to buffer largish chunks
-        // if the byte array is larger then MAX_CHUNK
-        // write it directly to the output stream
-        if (len > MAX_CHUNK || len > this.buffer.capacity()) {
-            // flush the buffer
-            flushBuffer();
-            // write directly to the out stream
-            this.outstream.write(b, off, len);
-            this.metrics.incrementBytesTransferred(len);
-        } else {
-            // Do not let the buffer grow unnecessarily
-            int freecapacity = this.buffer.capacity() - this.buffer.length();
-            if (len > freecapacity) {
-                // flush the buffer
-                flushBuffer();
-            }
-            // buffer
-            this.buffer.append(b, off, len);
-        }
-    }
-    
-    public void write(final byte[] b) throws IOException {
-        if (b == null) {
-            return;
-        }
-        write(b, 0, b.length);
-    }
-    
-    public void write(int b) throws IOException {
-        if (this.buffer.isFull()) {
-            flushBuffer();
-        }
-        this.buffer.append(b);
-    }
-    
-    public void writeLine(final String s) throws IOException {
-        if (s == null) {
-            return;
-        }
-        if (s.length() > 0) {
-            write(s.getBytes(this.charset));
-        }
-        write(CRLF);
-    }
-    
-    public void writeLine(final CharArrayBuffer s) throws IOException {
-        if (s == null) {
-            return;
-        }
-        if (this.ascii) {
-            int off = 0;
-            int remaining = s.length();
-            while (remaining > 0) {
-                int chunk = this.buffer.capacity() - this.buffer.length();
-                chunk = Math.min(chunk, remaining);
-                if (chunk > 0) {
-                    this.buffer.append(s, off, chunk);
-                }
-                if (this.buffer.isFull()) {
-                    flushBuffer();
-                }
-                off += chunk;
-                remaining -= chunk;
-            }
-        } else {
-            // This is VERY memory inefficient, BUT since non-ASCII charsets are 
-            // NOT meant to be used anyway, there's no point optimizing it
-            byte[] tmp = s.toString().getBytes(this.charset);
-            write(tmp);
-        }
-        write(CRLF);
-    }
-    
-    public HttpTransportMetrics getMetrics() {
-        return this.metrics;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/ChunkedInputStream.java b/src/org/apache/http/impl/io/ChunkedInputStream.java
deleted file mode 100644
index 60cae90..0000000
--- a/src/org/apache/http/impl/io/ChunkedInputStream.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/ChunkedInputStream.java $
- * $Revision: 569843 $
- * $Date: 2007-08-26 10:05:40 -0700 (Sun, 26 Aug 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.impl.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.http.Header;
-import org.apache.http.HttpException;
-import org.apache.http.MalformedChunkCodingException;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.CharArrayBuffer;
-import org.apache.http.util.ExceptionUtils;
-
-/**
- * Implements chunked transfer coding.
- * See <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC 2616</a>,
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6">section 3.6.1</a>.
- * It transparently coalesces chunks of a HTTP stream that uses chunked
- * transfer coding. After the stream is read to the end, it provides access
- * to the trailers, if any.
- * <p>
- * Note that this class NEVER closes the underlying stream, even when close
- * gets called.  Instead, it will read until the "end" of its chunking on
- * close, which allows for the seamless execution of subsequent HTTP 1.1
- * requests, while not requiring the client to remember to read the entire
- * contents of the response.
- * </p>
- *
- * @author Ortwin Glueck
- * @author Sean C. Sullivan
- * @author Martin Elwin
- * @author Eric Johnson
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author Michael Becke
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @since 4.0
- *
- */
-public class ChunkedInputStream extends InputStream {
-
-    /** The session input buffer */
-    private SessionInputBuffer in;
-
-    private final CharArrayBuffer buffer;
-    
-    /** The chunk size */
-    private int chunkSize;
-
-    /** The current position within the current chunk */
-    private int pos;
-
-    /** True if we'are at the beginning of stream */
-    private boolean bof = true;
-
-    /** True if we've reached the end of stream */
-    private boolean eof = false;
-
-    /** True if this stream is closed */
-    private boolean closed = false;
-    
-    private Header[] footers = new Header[] {};
-
-    public ChunkedInputStream(final SessionInputBuffer in) {
-        super();
-        if (in == null) {
-            throw new IllegalArgumentException("Session input buffer may not be null");
-        }
-        this.in = in;
-        this.pos = 0;
-        this.buffer = new CharArrayBuffer(16);
-    }
-
-    /**
-     * <p> Returns all the data in a chunked stream in coalesced form. A chunk
-     * is followed by a CRLF. The method returns -1 as soon as a chunksize of 0
-     * is detected.</p>
-     * 
-     * <p> Trailer headers are read automcatically at the end of the stream and
-     * can be obtained with the getResponseFooters() method.</p>
-     *
-     * @return -1 of the end of the stream has been reached or the next data
-     * byte
-     * @throws IOException If an IO problem occurs
-     */
-    public int read() throws IOException {
-        if (this.closed) {
-            throw new IOException("Attempted read from closed stream.");
-        }
-        if (this.eof) {
-            return -1;
-        } 
-        if (this.pos >= this.chunkSize) {
-            nextChunk();
-            if (this.eof) { 
-                return -1;
-            }
-        }
-        pos++;
-        return in.read();
-    }
-
-    /**
-     * Read some bytes from the stream.
-     * @param b The byte array that will hold the contents from the stream.
-     * @param off The offset into the byte array at which bytes will start to be
-     * placed.
-     * @param len the maximum number of bytes that can be returned.
-     * @return The number of bytes returned or -1 if the end of stream has been
-     * reached.
-     * @see java.io.InputStream#read(byte[], int, int)
-     * @throws IOException if an IO problem occurs.
-     */
-    public int read (byte[] b, int off, int len) throws IOException {
-
-        if (closed) {
-            throw new IOException("Attempted read from closed stream.");
-        }
-
-        if (eof) { 
-            return -1;
-        }
-        if (pos >= chunkSize) {
-            nextChunk();
-            if (eof) { 
-                return -1;
-            }
-        }
-        len = Math.min(len, chunkSize - pos);
-        int count = in.read(b, off, len);
-        pos += count;
-        return count;
-    }
-
-    /**
-     * Read some bytes from the stream.
-     * @param b The byte array that will hold the contents from the stream.
-     * @return The number of bytes returned or -1 if the end of stream has been
-     * reached.
-     * @see java.io.InputStream#read(byte[])
-     * @throws IOException if an IO problem occurs.
-     */
-    public int read (byte[] b) throws IOException {
-        return read(b, 0, b.length);
-    }
-
-    /**
-     * Read the next chunk.
-     * @throws IOException If an IO error occurs.
-     */
-    private void nextChunk() throws IOException {
-        chunkSize = getChunkSize();
-        if (chunkSize < 0) {
-            throw new MalformedChunkCodingException("Negative chunk size");
-        }
-        bof = false;
-        pos = 0;
-        if (chunkSize == 0) {
-            eof = true;
-            parseTrailerHeaders();
-        }
-    }
-
-    /**
-     * Expects the stream to start with a chunksize in hex with optional
-     * comments after a semicolon. The line must end with a CRLF: "a3; some
-     * comment\r\n" Positions the stream at the start of the next line.
-     *
-     * @param in The new input stream.
-     * @param required <tt>true<tt/> if a valid chunk must be present,
-     *                 <tt>false<tt/> otherwise.
-     * 
-     * @return the chunk size as integer
-     * 
-     * @throws IOException when the chunk size could not be parsed
-     */
-    private int getChunkSize() throws IOException {
-        // skip CRLF
-        if (!bof) {
-            int cr = in.read();
-            int lf = in.read();
-            if ((cr != HTTP.CR) || (lf != HTTP.LF)) { 
-                throw new MalformedChunkCodingException(
-                    "CRLF expected at end of chunk");
-            }
-        }
-        //parse data
-        this.buffer.clear();
-        int i = this.in.readLine(this.buffer);
-        if (i == -1) {
-            throw new MalformedChunkCodingException(
-                    "Chunked stream ended unexpectedly");
-        }
-        int separator = this.buffer.indexOf(';');
-        if (separator < 0) {
-            separator = this.buffer.length();
-        }
-        try {
-            return Integer.parseInt(this.buffer.substringTrimmed(0, separator), 16);
-        } catch (NumberFormatException e) {
-            throw new MalformedChunkCodingException("Bad chunk header");
-        }
-    }
-
-    /**
-     * Reads and stores the Trailer headers.
-     * @throws IOException If an IO problem occurs
-     */
-    private void parseTrailerHeaders() throws IOException {
-        try {
-            this.footers = AbstractMessageParser.parseHeaders
-                (in, -1, -1, null);
-        } catch (HttpException e) {
-            IOException ioe = new MalformedChunkCodingException("Invalid footer: " 
-                    + e.getMessage());
-            ExceptionUtils.initCause(ioe, e); 
-            throw ioe;
-        }
-    }
-
-    /**
-     * Upon close, this reads the remainder of the chunked message,
-     * leaving the underlying socket at a position to start reading the
-     * next response without scanning.
-     * @throws IOException If an IO problem occurs.
-     */
-    public void close() throws IOException {
-        if (!closed) {
-            try {
-                if (!eof) {
-                    exhaustInputStream(this);
-                }
-            } finally {
-                eof = true;
-                closed = true;
-            }
-        }
-    }
-
-    public Header[] getFooters() {
-        return (Header[])this.footers.clone();
-    }
-    
-    /**
-     * Exhaust an input stream, reading until EOF has been encountered.
-     *
-     * <p>Note that this function is intended as a non-public utility.
-     * This is a little weird, but it seemed silly to make a utility
-     * class for this one function, so instead it is just static and
-     * shared that way.</p>
-     *
-     * @param inStream The {@link InputStream} to exhaust.
-     * @throws IOException If an IO problem occurs
-     */
-    static void exhaustInputStream(final InputStream inStream) throws IOException {
-        // read and discard the remainder of the message
-        byte buffer[] = new byte[1024];
-        while (inStream.read(buffer) >= 0) {
-            ;
-        }
-    }
-
-}
diff --git a/src/org/apache/http/impl/io/ChunkedOutputStream.java b/src/org/apache/http/impl/io/ChunkedOutputStream.java
deleted file mode 100644
index 5ee7dd6..0000000
--- a/src/org/apache/http/impl/io/ChunkedOutputStream.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/ChunkedOutputStream.java $
- * $Revision: 645081 $
- * $Date: 2008-04-05 04:36:42 -0700 (Sat, 05 Apr 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.impl.io;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.apache.http.io.SessionOutputBuffer;
-
-/**
- * Implements chunked transfer coding.
- * See <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC 2616</a>,
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6">section 3.6.1</a>.
- * Writes are buffered to an internal buffer (2048 default size).
- * 
- * @author Mohammad Rezaei (Goldman, Sachs &amp; Co.)
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public class ChunkedOutputStream extends OutputStream {
-
-    // ----------------------------------------------------- Instance Variables
-    private final SessionOutputBuffer out;
-
-    private byte[] cache;
-
-    private int cachePosition = 0;
-
-    private boolean wroteLastChunk = false;
-
-    /** True if the stream is closed. */
-    private boolean closed = false;
-    
-    // ----------------------------------------------------------- Constructors
-    /**
-     * Wraps a session output buffer and chunks the output.
-     * @param out the session output buffer to wrap
-     * @param bufferSize minimum chunk size (excluding last chunk)
-     * @throws IOException
-     */
-    public ChunkedOutputStream(final SessionOutputBuffer out, int bufferSize)
-            throws IOException {
-        super();
-        this.cache = new byte[bufferSize];
-        this.out = out;
-    }
-
-    /**
-     * Wraps a session output buffer and chunks the output. The default buffer 
-     * size of 2048 was chosen because the chunk overhead is less than 0.5%
-     *
-     * @param out       the output buffer to wrap
-     * @throws IOException
-     */
-    public ChunkedOutputStream(final SessionOutputBuffer out) 
-            throws IOException {
-        this(out, 2048);
-    }
-
-    // ----------------------------------------------------------- Internal methods
-    /**
-     * Writes the cache out onto the underlying stream
-     * @throws IOException
-     */
-    protected void flushCache() throws IOException {
-        if (this.cachePosition > 0) {
-            this.out.writeLine(Integer.toHexString(this.cachePosition));
-            this.out.write(this.cache, 0, this.cachePosition);
-            this.out.writeLine("");
-            this.cachePosition = 0;
-        }
-    }
-
-    /**
-     * Writes the cache and bufferToAppend to the underlying stream
-     * as one large chunk
-     * @param bufferToAppend
-     * @param off
-     * @param len
-     * @throws IOException
-     */
-    protected void flushCacheWithAppend(byte bufferToAppend[], int off, int len) throws IOException {
-        this.out.writeLine(Integer.toHexString(this.cachePosition + len));
-        this.out.write(this.cache, 0, this.cachePosition);
-        this.out.write(bufferToAppend, off, len);
-        this.out.writeLine("");
-        this.cachePosition = 0;
-    }
-
-    protected void writeClosingChunk() throws IOException {
-        // Write the final chunk.
-        this.out.writeLine("0");
-        this.out.writeLine("");
-    }
-
-    // ----------------------------------------------------------- Public Methods
-    /**
-     * Must be called to ensure the internal cache is flushed and the closing chunk is written.
-     * @throws IOException
-     */
-    public void finish() throws IOException {
-        if (!this.wroteLastChunk) {
-            flushCache();
-            writeClosingChunk();
-            this.wroteLastChunk = true;
-        }
-    }
-
-    // -------------------------------------------- OutputStream Methods
-    public void write(int b) throws IOException {
-        if (this.closed) {
-            throw new IOException("Attempted write to closed stream.");
-        }
-        this.cache[this.cachePosition] = (byte) b;
-        this.cachePosition++;
-        if (this.cachePosition == this.cache.length) flushCache();
-    }
-
-    /**
-     * Writes the array. If the array does not fit within the buffer, it is
-     * not split, but rather written out as one large chunk.
-     * @param b
-     * @throws IOException
-     */
-    public void write(byte b[]) throws IOException {
-        write(b, 0, b.length);
-    }
-
-    public void write(byte src[], int off, int len) throws IOException {
-        if (this.closed) {
-            throw new IOException("Attempted write to closed stream.");
-        }
-        if (len >= this.cache.length - this.cachePosition) {
-            flushCacheWithAppend(src, off, len);
-        } else {
-            System.arraycopy(src, off, cache, this.cachePosition, len);
-            this.cachePosition += len;
-        }
-    }
-
-    /**
-     * Flushes the content buffer and the underlying stream.
-     * @throws IOException
-     */
-    public void flush() throws IOException {
-        flushCache();
-        this.out.flush();
-    }
-
-    /**
-     * Finishes writing to the underlying stream, but does NOT close the underlying stream.
-     * @throws IOException
-     */
-    public void close() throws IOException {
-        if (!this.closed) {
-            this.closed = true;
-            finish();
-            this.out.flush();
-        }
-    }
-}
diff --git a/src/org/apache/http/impl/io/ContentLengthInputStream.java b/src/org/apache/http/impl/io/ContentLengthInputStream.java
deleted file mode 100644
index 3b19c5b..0000000
--- a/src/org/apache/http/impl/io/ContentLengthInputStream.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/ContentLengthInputStream.java $
- * $Revision: 652091 $
- * $Date: 2008-04-29 13:41:07 -0700 (Tue, 29 Apr 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.impl.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.http.io.SessionInputBuffer;
-
-/**
- * Stream that cuts off after a specified number of bytes.
- * Note that this class NEVER closes the underlying stream, even when close
- * gets called.  Instead, it will read until the "end" of its chunking on
- * close, which allows for the seamless execution of subsequent HTTP 1.1
- * requests, while not requiring the client to remember to read the entire
- * contents of the response.
- *
- * <p>Implementation note: Choices abound. One approach would pass
- * through the {@link InputStream#mark} and {@link InputStream#reset} calls to
- * the underlying stream.  That's tricky, though, because you then have to
- * start duplicating the work of keeping track of how much a reset rewinds.
- * Further, you have to watch out for the "readLimit", and since the semantics
- * for the readLimit leave room for differing implementations, you might get
- * into a lot of trouble.</p>
- *
- * <p>Alternatively, you could make this class extend
- * {@link java.io.BufferedInputStream}
- * and then use the protected members of that class to avoid duplicated effort.
- * That solution has the side effect of adding yet another possible layer of
- * buffering.</p>
- *
- * <p>Then, there is the simple choice, which this takes - simply don't
- * support {@link InputStream#mark} and {@link InputStream#reset}.  That choice
- * has the added benefit of keeping this class very simple.</p>
- *
- * @author Ortwin Glueck
- * @author Eric Johnson
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- *
- * @since 4.0
- */
-public class ContentLengthInputStream extends InputStream {
-    
-    private static final int BUFFER_SIZE = 2048;
-    /**
-     * The maximum number of bytes that can be read from the stream. Subsequent
-     * read operations will return -1.
-     */
-    private long contentLength;
-
-    /** The current position */
-    private long pos = 0;
-
-    /** True if the stream is closed. */
-    private boolean closed = false;
-
-    /**
-     * Wrapped input stream that all calls are delegated to.
-     */
-    private SessionInputBuffer in = null;
-
-    /**
-     * Creates a new length limited stream
-     *
-     * @param in The session input buffer to wrap
-     * @param contentLength The maximum number of bytes that can be read from
-     * the stream. Subsequent read operations will return -1.
-     */
-    public ContentLengthInputStream(final SessionInputBuffer in, long contentLength) {
-        super();
-        if (in == null) {
-            throw new IllegalArgumentException("Input stream may not be null");
-        }
-        if (contentLength < 0) {
-            throw new IllegalArgumentException("Content length may not be negative");
-        }
-        this.in = in;
-        this.contentLength = contentLength;
-    }
-
-    /**
-     * <p>Reads until the end of the known length of content.</p>
-     *
-     * <p>Does not close the underlying socket input, but instead leaves it
-     * primed to parse the next response.</p>
-     * @throws IOException If an IO problem occurs.
-     */
-    public void close() throws IOException {
-        if (!closed) {
-            try {
-                byte buffer[] = new byte[BUFFER_SIZE];
-                while (read(buffer) >= 0) {
-                }
-            } finally {
-                // close after above so that we don't throw an exception trying
-                // to read after closed!
-                closed = true;
-            }
-        }
-    }
-
-
-    /**
-     * Read the next byte from the stream
-     * @return The next byte or -1 if the end of stream has been reached.
-     * @throws IOException If an IO problem occurs
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOException {
-        if (closed) {
-            throw new IOException("Attempted read from closed stream.");
-        }
-
-        if (pos >= contentLength) {
-            return -1;
-        }
-        pos++;
-        return this.in.read();
-    }
-
-    /**
-     * Does standard {@link InputStream#read(byte[], int, int)} behavior, but
-     * also notifies the watcher when the contents have been consumed.
-     *
-     * @param b     The byte array to fill.
-     * @param off   Start filling at this position.
-     * @param len   The number of bytes to attempt to read.
-     * @return The number of bytes read, or -1 if the end of content has been
-     *  reached.
-     *
-     * @throws java.io.IOException Should an error occur on the wrapped stream.
-     */
-    public int read (byte[] b, int off, int len) throws java.io.IOException {
-        if (closed) {
-            throw new IOException("Attempted read from closed stream.");
-        }
-
-        if (pos >= contentLength) {
-            return -1;
-        }
-
-        if (pos + len > contentLength) {
-            len = (int) (contentLength - pos);
-        }
-        int count = this.in.read(b, off, len);
-        pos += count;
-        return count;
-    }
-
-
-    /**
-     * Read more bytes from the stream.
-     * @param b The byte array to put the new data in.
-     * @return The number of bytes read into the buffer.
-     * @throws IOException If an IO problem occurs
-     * @see java.io.InputStream#read(byte[])
-     */
-    public int read(byte[] b) throws IOException {
-        return read(b, 0, b.length);
-    }
-
-    /**
-     * Skips and discards a number of bytes from the input stream.
-     * @param n The number of bytes to skip.
-     * @return The actual number of bytes skipped. <= 0 if no bytes
-     * are skipped.
-     * @throws IOException If an error occurs while skipping bytes.
-     * @see InputStream#skip(long)
-     */
-    public long skip(long n) throws IOException {
-        if (n <= 0) {
-            return 0;
-        }
-        byte[] buffer = new byte[BUFFER_SIZE];
-        // make sure we don't skip more bytes than are 
-        // still available
-        long remaining = Math.min(n, this.contentLength - this.pos); 
-        // skip and keep track of the bytes actually skipped
-        long count = 0;
-        while (remaining > 0) {
-            int l = read(buffer, 0, (int)Math.min(BUFFER_SIZE, remaining));
-            if (l == -1) {
-                break;
-            }
-            count += l;
-            remaining -= l;
-        }
-        this.pos += count;
-        return count;
-    }
-}
diff --git a/src/org/apache/http/impl/io/ContentLengthOutputStream.java b/src/org/apache/http/impl/io/ContentLengthOutputStream.java
deleted file mode 100644
index afcb883..0000000
--- a/src/org/apache/http/impl/io/ContentLengthOutputStream.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/ContentLengthOutputStream.java $
- * $Revision: 560343 $
- * $Date: 2007-07-27 11:18:19 -0700 (Fri, 27 Jul 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.impl.io;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.apache.http.io.SessionOutputBuffer;
-
-/**
- * A stream wrapper that closes itself after a defined number of bytes.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 560343 $
- * 
- * @since 4.0
- */
-public class ContentLengthOutputStream extends OutputStream {
-    
-    /**
-     * Wrapped session outbut buffer.
-     */
-    private final SessionOutputBuffer out;
-
-    /**
-     * The maximum number of bytes that can be written the stream. Subsequent
-     * write operations will be ignored.
-     */
-    private final long contentLength;
-
-    /** Total bytes written */
-    private long total = 0;
-
-    /** True if the stream is closed. */
-    private boolean closed = false;
-
-    /**
-     * Creates a new length limited stream
-     *
-     * @param out The data transmitter to wrap
-     * @param contentLength The maximum number of bytes that can be written to
-     * the stream. Subsequent write operations will be ignored.
-     * 
-     * @since 4.0
-     */
-    public ContentLengthOutputStream(final SessionOutputBuffer out, long contentLength) {
-        super();
-        if (out == null) {
-            throw new IllegalArgumentException("Session output buffer may not be null");
-        }
-        if (contentLength < 0) {
-            throw new IllegalArgumentException("Content length may not be negative");
-        }
-        this.out = out;
-        this.contentLength = contentLength;
-    }
-
-    /**
-     * <p>Does not close the underlying socket output.</p>
-     * 
-     * @throws IOException If an I/O problem occurs.
-     */
-    public void close() throws IOException {
-        if (!this.closed) {
-            this.closed = true;
-            this.out.flush();
-        }
-    }
-
-    public void flush() throws IOException {
-        this.out.flush();
-    }
-
-    public void write(byte[] b, int off, int len) throws IOException {
-        if (this.closed) {
-            throw new IOException("Attempted write to closed stream.");
-        }
-        if (this.total < this.contentLength) {
-            long max = this.contentLength - this.total;
-            if (len > max) {
-                len = (int) max;
-            }
-            this.out.write(b, off, len);
-            this.total += len;
-        }
-    }
-
-    public void write(byte[] b) throws IOException {
-        write(b, 0, b.length);
-    }
-
-    public void write(int b) throws IOException {
-        if (this.closed) {
-            throw new IOException("Attempted write to closed stream.");
-        }
-        if (this.total < this.contentLength) {
-            this.out.write(b);
-            this.total++;
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/HttpRequestParser.java b/src/org/apache/http/impl/io/HttpRequestParser.java
deleted file mode 100644
index a7bae6d..0000000
--- a/src/org/apache/http/impl/io/HttpRequestParser.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/HttpRequestParser.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.impl.io;
-
-import java.io.IOException;
-
-import org.apache.http.ConnectionClosedException;
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.HttpRequestFactory;
-import org.apache.http.RequestLine;
-import org.apache.http.ParseException;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.message.LineParser;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.params.HttpParams;
-import org.apache.http.util.CharArrayBuffer;
-
-public class HttpRequestParser extends AbstractMessageParser {
-    
-    private final HttpRequestFactory requestFactory;
-    private final CharArrayBuffer lineBuf;
-    
-    public HttpRequestParser(
-            final SessionInputBuffer buffer, 
-            final LineParser parser,
-            final HttpRequestFactory requestFactory,
-            final HttpParams params) {
-        super(buffer, parser, params);
-        if (requestFactory == null) {
-            throw new IllegalArgumentException("Request factory may not be null");
-        }
-        this.requestFactory = requestFactory;
-        this.lineBuf = new CharArrayBuffer(128);
-    }
-
-    protected HttpMessage parseHead(
-            final SessionInputBuffer sessionBuffer)
-        throws IOException, HttpException, ParseException {
-
-        this.lineBuf.clear();
-        int i = sessionBuffer.readLine(this.lineBuf);
-        if (i == -1) {
-            throw new ConnectionClosedException("Client closed connection"); 
-        }
-        ParserCursor cursor = new ParserCursor(0, this.lineBuf.length());
-        RequestLine requestline = this.lineParser.parseRequestLine(this.lineBuf, cursor);
-        return this.requestFactory.newHttpRequest(requestline);
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/HttpRequestWriter.java b/src/org/apache/http/impl/io/HttpRequestWriter.java
deleted file mode 100644
index b784e2d..0000000
--- a/src/org/apache/http/impl/io/HttpRequestWriter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/HttpRequestWriter.java $
- * $Revision: 569673 $
- * $Date: 2007-08-25 06:58:51 -0700 (Sat, 25 Aug 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.impl.io;
-
-import java.io.IOException;
-
-import org.apache.http.HttpMessage;
-import org.apache.http.HttpRequest;
-import org.apache.http.io.SessionOutputBuffer;
-import org.apache.http.message.LineFormatter;
-import org.apache.http.params.HttpParams;
-import org.apache.http.util.CharArrayBuffer;
-
-public class HttpRequestWriter extends AbstractMessageWriter {
-
-    public HttpRequestWriter(final SessionOutputBuffer buffer,
-                             final LineFormatter formatter,
-                             final HttpParams params) {
-        super(buffer, formatter, params);
-    }
-    
-    protected void writeHeadLine(final HttpMessage message)
-        throws IOException {
-
-        final CharArrayBuffer buffer = lineFormatter.formatRequestLine
-            (this.lineBuf, ((HttpRequest) message).getRequestLine());
-        this.sessionBuffer.writeLine(buffer);
-    }
-
-}
diff --git a/src/org/apache/http/impl/io/HttpResponseParser.java b/src/org/apache/http/impl/io/HttpResponseParser.java
deleted file mode 100644
index 575aa18..0000000
--- a/src/org/apache/http/impl/io/HttpResponseParser.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/impl/io/HttpResponseParser.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.impl.io;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.HttpResponseFactory;
-import org.apache.http.NoHttpResponseException;
-import org.apache.http.StatusLine;
-import org.apache.http.ParseException;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.message.LineParser;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.params.HttpParams;
-import org.apache.http.util.CharArrayBuffer;
-
-public class HttpResponseParser extends AbstractMessageParser {
-    
-    private final HttpResponseFactory responseFactory;
-    private final CharArrayBuffer lineBuf;
-    
-    public HttpResponseParser(
-            final SessionInputBuffer buffer,
-            final LineParser parser,
-            final HttpResponseFactory responseFactory,
-            final HttpParams params) {
-        super(buffer, parser, params);
-        if (responseFactory == null) {
-            throw new IllegalArgumentException("Response factory may not be null");
-        }
-        this.responseFactory = responseFactory;
-        this.lineBuf = new CharArrayBuffer(128);
-    }
-
-    protected HttpMessage parseHead(
-            final SessionInputBuffer sessionBuffer)
-        throws IOException, HttpException, ParseException {
-
-        this.lineBuf.clear();
-        int i = sessionBuffer.readLine(this.lineBuf);
-        if (i == -1) {
-            throw new NoHttpResponseException("The target server failed to respond");
-        }
-        //create the status line from the status string
-        ParserCursor cursor = new ParserCursor(0, this.lineBuf.length());
-        StatusLine statusline = lineParser.parseStatusLine(this.lineBuf, cursor);
-        return this.responseFactory.newHttpResponse(statusline, null);
-    }
-
-}
diff --git a/src/org/apache/http/impl/io/HttpResponseWriter.java b/src/org/apache/http/impl/io/HttpResponseWriter.java
deleted file mode 100644
index f88791e..0000000
--- a/src/org/apache/http/impl/io/HttpResponseWriter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/HttpResponseWriter.java $
- * $Revision: 569673 $
- * $Date: 2007-08-25 06:58:51 -0700 (Sat, 25 Aug 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.impl.io;
-
-import java.io.IOException;
-
-import org.apache.http.HttpMessage;
-import org.apache.http.HttpResponse;
-import org.apache.http.io.SessionOutputBuffer;
-import org.apache.http.message.LineFormatter;
-import org.apache.http.params.HttpParams;
-import org.apache.http.util.CharArrayBuffer;
-
-public class HttpResponseWriter extends AbstractMessageWriter {
-
-    public HttpResponseWriter(final SessionOutputBuffer buffer,
-                              final LineFormatter formatter,
-                              final HttpParams params) {
-        super(buffer, formatter, params);
-    }
-    
-    protected void writeHeadLine(final HttpMessage message)
-        throws IOException {
-
-        final CharArrayBuffer buffer = lineFormatter.formatStatusLine
-            (this.lineBuf, ((HttpResponse) message).getStatusLine());
-        this.sessionBuffer.writeLine(buffer);
-    }
-
-}
diff --git a/src/org/apache/http/impl/io/HttpTransportMetricsImpl.java b/src/org/apache/http/impl/io/HttpTransportMetricsImpl.java
deleted file mode 100644
index 53e6772..0000000
--- a/src/org/apache/http/impl/io/HttpTransportMetricsImpl.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/HttpTransportMetricsImpl.java $
- * $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/>.
- *
- */
-
-package org.apache.http.impl.io;
-
-import org.apache.http.io.HttpTransportMetrics;
-
-/**
- * Default implementation of {@link HttpTransportMetrics}.
- */
-public class HttpTransportMetricsImpl implements HttpTransportMetrics {
-
-    private long bytesTransferred = 0;
-    
-    public HttpTransportMetricsImpl() {
-        super();
-    }
-    
-    public long getBytesTransferred() {
-        return this.bytesTransferred;
-    }
-
-    public void setBytesTransferred(long count) {
-        this.bytesTransferred = count;
-    }
-
-    public void incrementBytesTransferred(long count) {
-        this.bytesTransferred += count;
-    }
-
-    public void reset() {
-        this.bytesTransferred = 0;
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/IdentityInputStream.java b/src/org/apache/http/impl/io/IdentityInputStream.java
deleted file mode 100644
index 390d5b7..0000000
--- a/src/org/apache/http/impl/io/IdentityInputStream.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/IdentityInputStream.java $
- * $Revision: 560358 $
- * $Date: 2007-07-27 12:30:42 -0700 (Fri, 27 Jul 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.impl.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.http.io.SessionInputBuffer;
-
-/**
- * A stream for reading from a {@link SessionInputBuffer session input buffer}.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 560358 $
- * 
- * @since 4.0
- */
-public class IdentityInputStream extends InputStream {
-    
-    private final SessionInputBuffer in;
-    
-    private boolean closed = false;
-    
-    public IdentityInputStream(final SessionInputBuffer in) {
-        super();
-        if (in == null) {
-            throw new IllegalArgumentException("Session input buffer may not be null");
-        }
-        this.in = in;
-    }
-    
-    public int available() throws IOException {
-        if (!this.closed && this.in.isDataAvailable(10)) {
-            return 1;
-        } else {
-            return 0;
-        }
-    }
-    
-    public void close() throws IOException {
-        this.closed = true;
-    }
-
-    public int read() throws IOException {
-        if (this.closed) {
-            return -1;
-        } else {
-            return this.in.read();
-        }
-    }
-    
-    public int read(final byte[] b, int off, int len) throws IOException {
-        if (this.closed) {
-            return -1;
-        } else {
-            return this.in.read(b, off, len);
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/IdentityOutputStream.java b/src/org/apache/http/impl/io/IdentityOutputStream.java
deleted file mode 100644
index 10b64f7..0000000
--- a/src/org/apache/http/impl/io/IdentityOutputStream.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/IdentityOutputStream.java $
- * $Revision: 560343 $
- * $Date: 2007-07-27 11:18:19 -0700 (Fri, 27 Jul 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.impl.io;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.apache.http.io.SessionOutputBuffer;
-
-/**
- * A stream for writing with an "identity" transport encoding.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 560343 $
- * 
- * @since 4.0
- */
-public class IdentityOutputStream extends OutputStream {
-    
-    /**
-     * Wrapped session output buffer.
-     */
-    private final SessionOutputBuffer out;
-
-    /** True if the stream is closed. */
-    private boolean closed = false;
-
-    public IdentityOutputStream(final SessionOutputBuffer out) {
-        super();
-        if (out == null) {
-            throw new IllegalArgumentException("Session output buffer may not be null");
-        }
-        this.out = out;
-    }
-
-    /**
-     * <p>Does not close the underlying socket output.</p>
-     * 
-     * @throws IOException If an I/O problem occurs.
-     */
-    public void close() throws IOException {
-        if (!this.closed) {
-            this.closed = true;
-            this.out.flush();
-        }
-    }
-
-    public void flush() throws IOException {
-        this.out.flush();
-    }
-
-    public void write(byte[] b, int off, int len) throws IOException {
-        if (this.closed) {
-            throw new IOException("Attempted write to closed stream.");
-        }
-        this.out.write(b, off, len);
-    }
-
-    public void write(byte[] b) throws IOException {
-        write(b, 0, b.length);
-    }
-
-    public void write(int b) throws IOException {
-        if (this.closed) {
-            throw new IOException("Attempted write to closed stream.");
-        }
-        this.out.write(b);
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/SocketInputBuffer.java b/src/org/apache/http/impl/io/SocketInputBuffer.java
deleted file mode 100644
index 925e80a..0000000
--- a/src/org/apache/http/impl/io/SocketInputBuffer.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/SocketInputBuffer.java $
- * $Revision: 560358 $
- * $Date: 2007-07-27 12:30:42 -0700 (Fri, 27 Jul 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.impl.io;
-
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.net.Socket;
-
-import org.apache.http.params.HttpParams;
-
-
-/**
- * {@link Socket} bound session input buffer.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 560358 $
- * 
- * @since 4.0
- */
-public class SocketInputBuffer extends AbstractSessionInputBuffer {
-
-    static private final Class SOCKET_TIMEOUT_CLASS = SocketTimeoutExceptionClass();
-
-    /**
-     * Returns <code>SocketTimeoutExceptionClass<code> or <code>null</code> if the class
-     * does not exist.
-     * 
-     * @return <code>SocketTimeoutExceptionClass<code>, or <code>null</code> if unavailable.
-     */ 
-    static private Class SocketTimeoutExceptionClass() {
-        try {
-            return Class.forName("java.net.SocketTimeoutException");
-        } catch (ClassNotFoundException e) {
-            return null;
-        }
-    }
-
-    private static boolean isSocketTimeoutException(final InterruptedIOException e) {
-        if (SOCKET_TIMEOUT_CLASS != null) {
-            return SOCKET_TIMEOUT_CLASS.isInstance(e);
-        } else {
-            return true;
-        }
-    }
-    
-    private final Socket socket;
-    
-    public SocketInputBuffer(
-            final Socket socket, 
-            int buffersize, 
-            final HttpParams params) throws IOException {
-        super();
-        if (socket == null) {
-            throw new IllegalArgumentException("Socket may not be null");
-        }
-        this.socket = socket;
-        if (buffersize < 0) {
-            buffersize = socket.getReceiveBufferSize();
-        }
-        if (buffersize < 1024) {
-            buffersize = 1024;
-        }
-        init(socket.getInputStream(), buffersize, params);
-    }
-    
-    public boolean isDataAvailable(int timeout) throws IOException {
-        boolean result = hasBufferedData();
-        if (!result) {
-            int oldtimeout = this.socket.getSoTimeout();
-            try {
-                this.socket.setSoTimeout(timeout);
-                fillBuffer();
-                result = hasBufferedData();
-            } catch (InterruptedIOException e) {
-                if (!isSocketTimeoutException(e)) {
-                    throw e;
-                }
-            } finally {
-                socket.setSoTimeout(oldtimeout);
-            }
-        }
-        return result;
-    }    
-        
-}
diff --git a/src/org/apache/http/impl/io/SocketOutputBuffer.java b/src/org/apache/http/impl/io/SocketOutputBuffer.java
deleted file mode 100644
index efb91e9..0000000
--- a/src/org/apache/http/impl/io/SocketOutputBuffer.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/SocketOutputBuffer.java $
- * $Revision: 560358 $
- * $Date: 2007-07-27 12:30:42 -0700 (Fri, 27 Jul 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.impl.io;
-
-import java.io.IOException;
-import java.net.Socket;
-
-import org.apache.http.params.HttpParams;
-
-
-/**
- * {@link Socket} bound session output buffer.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 560358 $
- * 
- * @since 4.0
- */
-public class SocketOutputBuffer extends AbstractSessionOutputBuffer {
-
-    public SocketOutputBuffer(
-            final Socket socket, 
-            int buffersize,
-            final HttpParams params) throws IOException {
-        super();
-        if (socket == null) {
-            throw new IllegalArgumentException("Socket may not be null");
-        }
-        if (buffersize < 0) {
-            buffersize = socket.getReceiveBufferSize();
-// BEGIN android-changed
-            // Workaround for http://b/issue?id=1083103.
-            if (buffersize > 8096) {
-                buffersize = 8096;
-            }
-// END android-changed
-        }
-        if (buffersize < 1024) {
-            buffersize = 1024;
-        }
-
-// BEGIN android-changed
-        socket.setSendBufferSize(buffersize * 3);
-// END andrdoid-changed
-
-        init(socket.getOutputStream(), buffersize, params);
-    }
-    
-}
diff --git a/src/org/apache/http/impl/io/package.html b/src/org/apache/http/impl/io/package.html
deleted file mode 100644
index 48eb2c1..0000000
--- a/src/org/apache/http/impl/io/package.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/io/package.html $
- * $Revision: 567360 $
- * $Date: 2007-08-18 23:49:21 -0700 (Sat, 18 Aug 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>
-Default implementations for interfaces in
-{@link org.apache.http.io org.apache.http.io}.
-
-<br/>
-
-There are implementations of the transport encodings used by HTTP,
-in particular the chunked encoding for
-{@link org.apache.http.impl.io.ChunkedOutputStream sending} and
-{@link org.apache.http.impl.io.ChunkedInputStream receiving} entities.
-
-</body>
-</html>
diff --git a/src/org/apache/http/impl/package.html b/src/org/apache/http/impl/package.html
deleted file mode 100644
index 6cec586..0000000
--- a/src/org/apache/http/impl/package.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/package.html $
- * $Revision: 496072 $
- * $Date: 2007-01-14 04:22:55 -0800 (Sun, 14 Jan 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>
-Default implementations for interfaces in
-{@link org.apache.http org.apache.http}.
-
-</body>
-</html>
diff --git a/src/org/apache/http/io/HttpMessageParser.java b/src/org/apache/http/io/HttpMessageParser.java
deleted file mode 100644
index 5c24736..0000000
--- a/src/org/apache/http/io/HttpMessageParser.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/io/HttpMessageParser.java $
- * $Revision: 567370 $
- * $Date: 2007-08-19 01:13:21 -0700 (Sun, 19 Aug 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.io;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-
-/**
- * Generic message parser interface.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 567370 $
- * 
- * @since 4.0
- */
-public interface HttpMessageParser {
-    
-    HttpMessage parse()
-        throws IOException, HttpException;
-
-}
diff --git a/src/org/apache/http/io/HttpMessageWriter.java b/src/org/apache/http/io/HttpMessageWriter.java
deleted file mode 100644
index b6ac7c1..0000000
--- a/src/org/apache/http/io/HttpMessageWriter.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/io/HttpMessageWriter.java $
- * $Revision: 567370 $
- * $Date: 2007-08-19 01:13:21 -0700 (Sun, 19 Aug 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.io;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-
-/**
- * Generic message writer interface.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 567370 $
- * 
- * @since 4.0
- */
-public interface HttpMessageWriter {
-    
-    void write(HttpMessage message)
-        throws IOException, HttpException;
-    
-}
diff --git a/src/org/apache/http/io/HttpTransportMetrics.java b/src/org/apache/http/io/HttpTransportMetrics.java
deleted file mode 100644
index f88e036..0000000
--- a/src/org/apache/http/io/HttpTransportMetrics.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/io/HttpTransportMetrics.java $
- * $Revision: 536667 $
- * $Date: 2007-05-09 14:48:41 -0700 (Wed, 09 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/>.
- *
- */
-
-package org.apache.http.io;
-
-public interface HttpTransportMetrics {
-    
-    /**
-     * Returns the number of bytes trasferred.
-     */
-    long getBytesTransferred(); 
-    
-    /**
-     * Resets the counts
-     */
-    void reset();
-    
-}
diff --git a/src/org/apache/http/io/SessionInputBuffer.java b/src/org/apache/http/io/SessionInputBuffer.java
deleted file mode 100644
index d7824d9..0000000
--- a/src/org/apache/http/io/SessionInputBuffer.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/io/SessionInputBuffer.java $
- * $Revision: 560528 $
- * $Date: 2007-07-28 04:34:17 -0700 (Sat, 28 Jul 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.io;
-
-import java.io.IOException;
-
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Session input buffer for blocking connections.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 560528 $
- * 
- * @since 4.0
- */
-public interface SessionInputBuffer {
-    
-    int read(byte[] b, int off, int len) throws IOException; 
-    
-    int read(byte[] b) throws IOException; 
-    
-    int read() throws IOException; 
-    
-    int readLine(CharArrayBuffer buffer) throws IOException;
-    
-    String readLine() throws IOException;
-    
-    boolean isDataAvailable(int timeout) throws IOException; 
-
-    HttpTransportMetrics getMetrics();
-    
-}
diff --git a/src/org/apache/http/io/SessionOutputBuffer.java b/src/org/apache/http/io/SessionOutputBuffer.java
deleted file mode 100644
index 6587a26..0000000
--- a/src/org/apache/http/io/SessionOutputBuffer.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/io/SessionOutputBuffer.java $
- * $Revision: 560528 $
- * $Date: 2007-07-28 04:34:17 -0700 (Sat, 28 Jul 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.io;
-
-import java.io.IOException;
-
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Session output buffer for blocking connections.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 560528 $
- * 
- * @since 4.0
- */
-public interface SessionOutputBuffer {
-
-    void write(byte[] b, int off, int len) throws IOException;
-    
-    void write(byte[] b) throws IOException;
-    
-    void write(int b) throws IOException;
-    
-    void writeLine(String s) throws IOException;
-    
-    void writeLine(CharArrayBuffer buffer) throws IOException;
-    
-    void flush() throws IOException;
-    
-    HttpTransportMetrics getMetrics();
-    
-}
diff --git a/src/org/apache/http/io/package.html b/src/org/apache/http/io/package.html
deleted file mode 100644
index da9fabf..0000000
--- a/src/org/apache/http/io/package.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/io/package.html $
- * $Revision: 503192 $
- * $Date: 2007-02-03 03:55:49 -0800 (Sat, 03 Feb 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>
-The transport layer abstraction of the HTTP components.
-
-This layer is used to transfer messages over connections.
-Connections are typically based on sockets: plain or secure,
-direct or via SOCKS hosts, with bandwidth throttling, or
-whatever else you might think of.
-However, opening connections is not within the responsibility
-of HttpCore.
-
-</body>
-</html>
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>
diff --git a/src/org/apache/http/package.html b/src/org/apache/http/package.html
deleted file mode 100644
index e9647b4..0000000
--- a/src/org/apache/http/package.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/package.html $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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>
-The core interfaces and classes of the HTTP components.
-
-These deal with the fundamental things required for using the
-HTTP protocol, such as representing a
-{@link org.apache.http.HttpMessage message} including it's
-{@link org.apache.http.Header headers} and optional
-{@link org.apache.http.HttpEntity entity}, and
-{@link org.apache.http.HttpConnection connections}
-over which messages are sent. In order to prepare messages
-before sending or after receiving, there are interceptors for
-{@link org.apache.http.HttpRequestInterceptor requests} and
-{@link org.apache.http.HttpResponseInterceptor responses}.
-
-</body>
-</html>
diff --git a/src/org/apache/http/params/AbstractHttpParams.java b/src/org/apache/http/params/AbstractHttpParams.java
deleted file mode 100644
index 91631fc..0000000
--- a/src/org/apache/http/params/AbstractHttpParams.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/AbstractHttpParams.java $
- * $Revision: 542224 $
- * $Date: 2007-05-28 06:34:04 -0700 (Mon, 28 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/>.
- *
- */
-
-package org.apache.http.params;
-
-import org.apache.http.params.HttpParams;
-
-
-/**
- * Abstract base class for parameter collections.
- * Type specific setters and getters are mapped to the abstract,
- * generic getters and setters.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * 
- * @version $Revision: 542224 $
- */
-public abstract class AbstractHttpParams implements HttpParams {
-
-    /**
-     * Instantiates parameters.
-     */
-    protected AbstractHttpParams() {
-        super();
-    }
-
-    public long getLongParameter(final String name, long defaultValue) { 
-        Object param = getParameter(name);
-        if (param == null) {
-            return defaultValue;
-        }
-        return ((Long)param).longValue();
-    }
-    
-    public HttpParams setLongParameter(final String name, long value) {
-        setParameter(name, new Long(value));
-        return this;
-    }
-
-    public int getIntParameter(final String name, int defaultValue) { 
-        Object param = getParameter(name);
-        if (param == null) {
-            return defaultValue;
-        }
-        return ((Integer)param).intValue();
-    }
-    
-    public HttpParams setIntParameter(final String name, int value) {
-        setParameter(name, new Integer(value));
-        return this;
-    }
-
-    public double getDoubleParameter(final String name, double defaultValue) { 
-        Object param = getParameter(name);
-        if (param == null) {
-            return defaultValue;
-        }
-        return ((Double)param).doubleValue();
-    }
-    
-    public HttpParams setDoubleParameter(final String name, double value) {
-        setParameter(name, new Double(value));
-        return this;
-    }
-
-    public boolean getBooleanParameter(final String name, boolean defaultValue) { 
-        Object param = getParameter(name);
-        if (param == null) {
-            return defaultValue;
-        }
-        return ((Boolean)param).booleanValue();
-    }
-    
-    public HttpParams setBooleanParameter(final String name, boolean value) {
-        setParameter(name, value ? Boolean.TRUE : Boolean.FALSE);
-        return this;
-    }
-        
-    public boolean isParameterTrue(final String name) {
-        return getBooleanParameter(name, false);
-    }
-        
-    public boolean isParameterFalse(final String name) {
-        return !getBooleanParameter(name, false);
-    }
-
-} // class AbstractHttpParams
diff --git a/src/org/apache/http/params/BasicHttpParams.java b/src/org/apache/http/params/BasicHttpParams.java
deleted file mode 100644
index 70e6605..0000000
--- a/src/org/apache/http/params/BasicHttpParams.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/BasicHttpParams.java $
- * $Revision: 610464 $
- * $Date: 2008-01-09 09:10:55 -0800 (Wed, 09 Jan 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.params;
-
-import java.io.Serializable;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.apache.http.params.HttpParams;
-
-/**
- * This class represents a collection of HTTP protocol parameters.
- * Protocol parameters may be linked together to form a hierarchy.
- * If a particular parameter value has not been explicitly defined
- * in the collection itself, its value will be drawn from the parent 
- * collection of parameters.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 610464 $
- */
-public final class BasicHttpParams extends AbstractHttpParams
-    implements Serializable, Cloneable {
-
-    private static final long serialVersionUID = -7086398485908701455L;
-
-    /** Map of HTTP parameters that this collection contains. */
-    private HashMap parameters;
-
-    public BasicHttpParams() {
-        super();
-    }
-
-    public Object getParameter(final String name) {
-        // See if the parameter has been explicitly defined
-        Object param = null;
-        if (this.parameters != null) {
-            param = this.parameters.get(name);
-        }    
-        return param;
-    }
-
-    public HttpParams setParameter(final String name, final Object value) {
-        if (this.parameters == null) {
-            this.parameters = new HashMap();
-        }
-        this.parameters.put(name, value);
-        return this;
-    }
-    
-    public boolean removeParameter(String name) {
-        if (this.parameters == null) {
-            return false;
-        }
-        //this is to avoid the case in which the key has a null value
-        if (this.parameters.containsKey(name)) {
-            this.parameters.remove(name);
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    
-    /**
-     * Assigns the value to all the parameter with the given names
-     * 
-     * @param names array of parameter name
-     * @param value parameter value
-     */ 
-    public void setParameters(final String[] names, final Object value) {
-        for (int i = 0; i < names.length; i++) {
-            setParameter(names[i], value);
-        }
-    }
-
-    public boolean isParameterSet(final String name) {
-        return getParameter(name) != null;
-    }
-        
-    public boolean isParameterSetLocally(final String name) {
-        return this.parameters != null && this.parameters.get(name) != null;
-    }
-        
-    /**
-     * Removes all parameters from this collection.
-     */
-    public void clear() {
-        this.parameters = null;
-    }
-
-    /**
-     * Creates a copy of these parameters.
-     * The implementation here instantiates {@link BasicHttpParams}, 
-     * then calls {@link #copyParams(HttpParams)} to populate the copy.
-     *
-     * @return  a new set of params holding a copy of the
-     *          <i>local</i> parameters in this object.
-     */
-    public HttpParams copy() {
-        BasicHttpParams clone = new BasicHttpParams();
-        copyParams(clone);
-        return clone;
-    }
-
-    public Object clone() throws CloneNotSupportedException {
-        BasicHttpParams clone = (BasicHttpParams) super.clone();
-        copyParams(clone);
-        return clone;
-    }
- 
-    /**
-     * Copies the locally defined parameters to the argument parameters.
-     * This method is called from {@link #copy()}.
-     *
-     * @param target    the parameters to which to copy
-     */
-    protected void copyParams(HttpParams target) {
-        if (this.parameters == null)
-            return;
-
-        Iterator iter = parameters.entrySet().iterator();
-        while (iter.hasNext()) {
-            Map.Entry me = (Map.Entry) iter.next();
-            if (me.getKey() instanceof String)
-                target.setParameter((String)me.getKey(), me.getValue());
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/params/CoreConnectionPNames.java b/src/org/apache/http/params/CoreConnectionPNames.java
deleted file mode 100644
index a2dec8b..0000000
--- a/src/org/apache/http/params/CoreConnectionPNames.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/CoreConnectionPNames.java $
- * $Revision: 576077 $
- * $Date: 2007-09-16 04:50:22 -0700 (Sun, 16 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.params;
-
-
-/**
- * Defines parameter names for connections in HttpCore.
- * 
- * @version $Revision: 576077 $
- * 
- * @since 4.0
- */
-public interface CoreConnectionPNames {
-
-    /**
-     * Defines the default socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
-     * timeout for waiting for data. A timeout value of zero is interpreted as an infinite 
-     * timeout. This value is used when no socket timeout is set in the 
-     * method parameters. 
-     * <p>
-     * This parameter expects a value of type {@link Integer}.
-     * </p>
-     * @see java.net.SocketOptions#SO_TIMEOUT
-     */
-    public static final String SO_TIMEOUT = "http.socket.timeout"; 
-
-    /**
-     * Determines whether Nagle's algorithm is to be used. The Nagle's algorithm 
-     * tries to conserve bandwidth by minimizing the number of segments that are 
-     * sent. When applications wish to decrease network latency and increase 
-     * performance, they can disable Nagle's algorithm (that is enable TCP_NODELAY). 
-     * Data will be sent earlier, at the cost of an increase in bandwidth consumption. 
-     * <p>
-     * This parameter expects a value of type {@link Boolean}.
-     * </p>
-     * @see java.net.SocketOptions#TCP_NODELAY
-     */
-    public static final String TCP_NODELAY = "http.tcp.nodelay"; 
-
-    /**
-     * Determines the size of the internal socket buffer used to buffer data
-     * while receiving / transmitting HTTP messages.
-     * <p>
-     * This parameter expects a value of type {@link Integer}.
-     * </p>
-     */
-    public static final String SOCKET_BUFFER_SIZE = "http.socket.buffer-size"; 
-
-    /**
-     * Sets SO_LINGER with the specified linger time in seconds. The maximum timeout 
-     * value is platform specific. Value <tt>0</tt> implies that the option is disabled.
-     * Value <tt>-1</tt> implies that the JRE default is used. The setting only affects 
-     * socket close.  
-     * <p>
-     * This parameter expects a value of type {@link Integer}.
-     * </p>
-     * @see java.net.SocketOptions#SO_LINGER
-     */
-    public static final String SO_LINGER = "http.socket.linger"; 
-
-    /**
-     * Determines the timeout until a connection is etablished. A value of zero 
-     * means the timeout is not used. The default value is zero.
-     * <p>
-     * This parameter expects a value of type {@link Integer}.
-     * </p>
-     */
-    public static final String CONNECTION_TIMEOUT = "http.connection.timeout"; 
-
-    /**
-     * Determines whether stale connection check is to be used. Disabling 
-     * stale connection check may result in slight performance improvement 
-     * at the risk of getting an I/O error when executing a request over a
-     * connection that has been closed at the server side. 
-     * <p>
-     * This parameter expects a value of type {@link Boolean}.
-     * </p>
-     */
-    public static final String STALE_CONNECTION_CHECK = "http.connection.stalecheck"; 
-
-    /**
-     * Determines the maximum line length limit. If set to a positive value, any HTTP 
-     * line exceeding this limit will cause an IOException. A negative or zero value
-     * will effectively disable the check.
-     * <p>
-     * This parameter expects a value of type {@link Integer}.
-     * </p>
-     */
-    public static final String MAX_LINE_LENGTH = "http.connection.max-line-length";
-    
-    /**
-     * Determines the maximum HTTP header count allowed. If set to a positive value, 
-     * the number of HTTP headers received from the data stream exceeding this limit 
-     * will cause an IOException. A negative or zero value will effectively disable 
-     * the check. 
-     * <p>
-     * This parameter expects a value of type {@link Integer}.
-     * </p>
-     */
-    public static final String MAX_HEADER_COUNT = "http.connection.max-header-count";
-
-}
diff --git a/src/org/apache/http/params/CoreProtocolPNames.java b/src/org/apache/http/params/CoreProtocolPNames.java
deleted file mode 100644
index a42c5de..0000000
--- a/src/org/apache/http/params/CoreProtocolPNames.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/CoreProtocolPNames.java $
- * $Revision: 576077 $
- * $Date: 2007-09-16 04:50:22 -0700 (Sun, 16 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.params;
-
-
-/**
- * Defines parameter names for protocol execution in HttpCore.
- * 
- * @version $Revision: 576077 $
- * 
- * @since 4.0
- */
-public interface CoreProtocolPNames {
-
-    /**
-     * Defines the {@link org.apache.http.ProtocolVersion protocol version}
-     * used per default.
-     * <p>
-     * This parameter expects a value of type
-     * {@link org.apache.http.ProtocolVersion}.
-     * </p>
-     */
-    public static final String PROTOCOL_VERSION = "http.protocol.version"; 
-
-    /**
-     * Defines the charset to be used for encoding HTTP protocol elements.
-     * <p>
-     * This parameter expects a value of type {@link String}.
-     * </p>
-     */
-    public static final String HTTP_ELEMENT_CHARSET = "http.protocol.element-charset"; 
-    
-    /**
-     * Defines the charset to be used per default for encoding content body.
-     * <p>
-     * This parameter expects a value of type {@link String}.
-     * </p>
-     */
-    public static final String HTTP_CONTENT_CHARSET = "http.protocol.content-charset"; 
-    
-    /**
-     * Defines the content of the <tt>User-Agent</tt> header.
-     * <p>
-     * This parameter expects a value of type {@link String}.
-     * </p>
-     */
-    public static final String USER_AGENT = "http.useragent"; 
-
-    /**
-     * Defines the content of the <tt>Server</tt> header.
-     * <p>
-     * This parameter expects a value of type {@link String}.
-     * </p>
-     */
-    public static final String ORIGIN_SERVER = "http.origin-server"; 
-
-    /**
-     * Defines whether responses with an invalid <tt>Transfer-Encoding</tt> header should be 
-     * rejected.
-     * <p>
-     * This parameter expects a value of type {@link Boolean}.
-     * </p>
-     */
-    public static final String STRICT_TRANSFER_ENCODING = "http.protocol.strict-transfer-encoding"; 
-
-    /**
-     * <p>
-     * Activates 'Expect: 100-Continue' handshake for the 
-     * entity enclosing methods. The purpose of the 'Expect: 100-Continue'
-     * handshake to allow a client that is sending a request message with 
-     * a request body to determine if the origin server is willing to 
-     * accept the request (based on the request headers) before the client
-     * sends the request body.
-     * </p>
-     * 
-     * <p>
-     * The use of the 'Expect: 100-continue' handshake can result in 
-     * noticable peformance improvement for entity enclosing requests
-     * (such as POST and PUT) that require the target server's 
-     * authentication.
-     * </p>
-     * 
-     * <p>
-     * 'Expect: 100-continue' handshake should be used with 
-     * caution, as it may cause problems with HTTP servers and 
-     * proxies that do not support HTTP/1.1 protocol.
-     * </p>
-     * 
-     * This parameter expects a value of type {@link Boolean}.
-     */
-    public static final String USE_EXPECT_CONTINUE = "http.protocol.expect-continue"; 
-
-    /**
-     * <p>
-     * Defines the maximum period of time in milliseconds the client should spend
-     * waiting for a 100-continue response.
-     * </p>
-     * 
-     * This parameter expects a value of type {@link Integer}.
-     */
-    public static final String WAIT_FOR_CONTINUE = "http.protocol.wait-for-continue";
-    
-}
diff --git a/src/org/apache/http/params/DefaultedHttpParams.java b/src/org/apache/http/params/DefaultedHttpParams.java
deleted file mode 100644
index ce33247..0000000
--- a/src/org/apache/http/params/DefaultedHttpParams.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/DefaultedHttpParams.java $
- * $Revision: 610763 $
- * $Date: 2008-01-10 04:01:13 -0800 (Thu, 10 Jan 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.params;
-
-import org.apache.http.params.HttpParams;
-
-/**
- * {@link HttpParams} implementation that delegates resolution of a parameter
- * to the given default {@link HttpParams} instance if the parameter is not 
- * present in the local one. The state of the local collection can be mutated,
- * whereas the default collection is treated as read-only.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 610763 $
- */
-public final class DefaultedHttpParams extends AbstractHttpParams {
-
-    private final HttpParams local;
-    private final HttpParams defaults;
-    
-    public DefaultedHttpParams(final HttpParams local, final HttpParams defaults) {
-        super();
-        if (local == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        this.local = local;
-        this.defaults = defaults;
-    }
-
-    /**
-     * Creates a copy of the local collection with the same default
-     */
-    public HttpParams copy() {
-        HttpParams clone = this.local.copy();
-        return new DefaultedHttpParams(clone, this.defaults);
-    }
-
-    /**
-     * Retrieves the value of the parameter from the local collection and, if the 
-     * parameter is not set locally, delegates its resolution to the default 
-     * collection.
-     */
-    public Object getParameter(final String name) {
-        Object obj = this.local.getParameter(name);
-        if (obj == null && this.defaults != null) {
-            obj = this.defaults.getParameter(name);
-        }
-        return obj;
-    }
-
-    /**
-     * Attempts to remove the parameter from the local collection. This method 
-     * <i>does not</i> modify the default collection.
-     */
-    public boolean removeParameter(final String name) {
-        return this.local.removeParameter(name);
-    }
-
-    /**
-     * Sets the parameter in the local collection. This method <i>does not</i> 
-     * modify the default collection.
-     */
-    public HttpParams setParameter(final String name, final Object value) {
-        return this.local.setParameter(name, value);
-    }
-
-    public HttpParams getDefaults() {
-        return this.defaults;
-    }
-    
-}
diff --git a/src/org/apache/http/params/HttpAbstractParamBean.java b/src/org/apache/http/params/HttpAbstractParamBean.java
deleted file mode 100644
index 8701a99..0000000
--- a/src/org/apache/http/params/HttpAbstractParamBean.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/HttpAbstractParamBean.java $
- * $Revision: 593937 $
- * $Date: 2007-11-11 10:44:12 -0800 (Sun, 11 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.params;
-
-public abstract class HttpAbstractParamBean {
-    
-    protected final HttpParams params;
-
-    public HttpAbstractParamBean (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/params/HttpConnectionParamBean.java b/src/org/apache/http/params/HttpConnectionParamBean.java
deleted file mode 100644
index 0b61346..0000000
--- a/src/org/apache/http/params/HttpConnectionParamBean.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/HttpConnectionParamBean.java $
- * $Revision: 593937 $
- * $Date: 2007-11-11 10:44:12 -0800 (Sun, 11 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.params;
-
-public class HttpConnectionParamBean extends HttpAbstractParamBean {
-    
-    public HttpConnectionParamBean (final HttpParams params) {
-        super(params);
-    }
-
-    public void setSoTimeout (int soTimeout) {
-        HttpConnectionParams.setSoTimeout(params, soTimeout);
-    }
-
-    public void setTcpNoDelay (boolean tcpNoDelay) {
-        HttpConnectionParams.setTcpNoDelay(params, tcpNoDelay);
-    }
-
-    public void setSocketBufferSize (int socketBufferSize) {
-        HttpConnectionParams.setSocketBufferSize(params, socketBufferSize);
-    }
-
-    public void setLinger (int linger) {
-        HttpConnectionParams.setLinger(params, linger);
-    }
-
-    public void setConnectionTimeout (int connectionTimeout) {
-        HttpConnectionParams.setConnectionTimeout(params, connectionTimeout);
-    }
-
-    public void setStaleCheckingEnabled (boolean staleCheckingEnabled) {
-        HttpConnectionParams.setStaleCheckingEnabled(params, staleCheckingEnabled);
-    }
-    
-}
diff --git a/src/org/apache/http/params/HttpConnectionParams.java b/src/org/apache/http/params/HttpConnectionParams.java
deleted file mode 100644
index 7918a66..0000000
--- a/src/org/apache/http/params/HttpConnectionParams.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/HttpConnectionParams.java $
- * $Revision: 576089 $
- * $Date: 2007-09-16 05:39:56 -0700 (Sun, 16 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.params;
-
-/**
- * An adaptor for accessing connection parameters in {@link HttpParams}.
- * <br/>
- * Note that the <i>implements</i> relation to {@link CoreConnectionPNames}
- * is for compatibility with existing application code only. References to
- * the parameter names should use the interface, not this class.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 576089 $
- * 
- * @since 4.0
- */
-public final class HttpConnectionParams implements CoreConnectionPNames {
-
-    /**
-     */
-    private HttpConnectionParams() {
-        super();
-    }
-
-    /**
-     * Returns the default socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
-     * timeout for waiting for data. A timeout value of zero is interpreted as an infinite 
-     * timeout. This value is used when no socket timeout is set in the 
-     * method parameters. 
-     *
-     * @return timeout in milliseconds
-     */
-    public static int getSoTimeout(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getIntParameter(CoreConnectionPNames.SO_TIMEOUT, 0);
-    }
-
-    /**
-     * Sets the default socket timeout (<tt>SO_TIMEOUT</tt>) in milliseconds which is the 
-     * timeout for waiting for data. A timeout value of zero is interpreted as an infinite 
-     * timeout. This value is used when no socket timeout is set in the 
-     * method parameters. 
-     *
-     * @param timeout Timeout in milliseconds
-     */
-    public static void setSoTimeout(final HttpParams params, int timeout) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, timeout);
-        
-    }
-
-    /**
-     * Tests if Nagle's algorithm is to be used.  
-     *
-     * @return <tt>true</tt> if the Nagle's algorithm is to NOT be used
-     *   (that is enable TCP_NODELAY), <tt>false</tt> otherwise.
-     */
-    public static boolean getTcpNoDelay(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getBooleanParameter
-            (CoreConnectionPNames.TCP_NODELAY, true);
-    }
-
-    /**
-     * Determines whether Nagle's algorithm is to be used. The Nagle's algorithm 
-     * tries to conserve bandwidth by minimizing the number of segments that are 
-     * sent. When applications wish to decrease network latency and increase 
-     * performance, they can disable Nagle's algorithm (that is enable TCP_NODELAY). 
-     * Data will be sent earlier, at the cost of an increase in bandwidth consumption. 
-     *
-     * @param value <tt>true</tt> if the Nagle's algorithm is to NOT be used
-     *   (that is enable TCP_NODELAY), <tt>false</tt> otherwise.
-     */
-    public static void setTcpNoDelay(final HttpParams params, boolean value) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, value);
-    }
-
-    public static int getSocketBufferSize(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getIntParameter
-            (CoreConnectionPNames.SOCKET_BUFFER_SIZE, -1);
-    }
-    
-    public static void setSocketBufferSize(final HttpParams params, int size) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE, size);
-    }
-
-    /**
-     * Returns linger-on-close timeout. Value <tt>0</tt> implies that the option is 
-     * disabled. Value <tt>-1</tt> implies that the JRE default is used.
-     * 
-     * @return the linger-on-close timeout
-     */
-    public static int getLinger(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getIntParameter(CoreConnectionPNames.SO_LINGER, -1);
-    }
-
-    /**
-     * Returns linger-on-close timeout. This option disables/enables immediate return 
-     * from a close() of a TCP Socket. Enabling this option with a non-zero Integer 
-     * timeout means that a close() will block pending the transmission and 
-     * acknowledgement of all data written to the peer, at which point the socket is 
-     * closed gracefully. Value <tt>0</tt> implies that the option is 
-     * disabled. Value <tt>-1</tt> implies that the JRE default is used.
-     *
-     * @param value the linger-on-close timeout
-     */
-    public static void setLinger(final HttpParams params, int value) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setIntParameter(CoreConnectionPNames.SO_LINGER, value);
-    }
-
-    /**
-     * Returns the timeout until a connection is etablished. A value of zero 
-     * means the timeout is not used. The default value is zero.
-     * 
-     * @return timeout in milliseconds.
-     */
-    public static int getConnectionTimeout(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getIntParameter
-            (CoreConnectionPNames.CONNECTION_TIMEOUT, 0);
-    }
-
-    /**
-     * Sets the timeout until a connection is etablished. A value of zero 
-     * means the timeout is not used. The default value is zero.
-     * 
-     * @param timeout Timeout in milliseconds.
-     */
-    public static void setConnectionTimeout(final HttpParams params, int timeout) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setIntParameter
-            (CoreConnectionPNames.CONNECTION_TIMEOUT, timeout);
-    }
-    
-    /**
-     * Tests whether stale connection check is to be used. Disabling 
-     * stale connection check may result in slight performance improvement 
-     * at the risk of getting an I/O error when executing a request over a
-     * connection that has been closed at the server side. 
-     * 
-     * @return <tt>true</tt> if stale connection check is to be used, 
-     *   <tt>false</tt> otherwise.
-     */
-    public static boolean isStaleCheckingEnabled(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getBooleanParameter
-            (CoreConnectionPNames.STALE_CONNECTION_CHECK, true);
-    }
-
-    /**
-     * Defines whether stale connection check is to be used. Disabling 
-     * stale connection check may result in slight performance improvement 
-     * at the risk of getting an I/O error when executing a request over a
-     * connection that has been closed at the server side. 
-     * 
-     * @param value <tt>true</tt> if stale connection check is to be used, 
-     *   <tt>false</tt> otherwise.
-     */
-    public static void setStaleCheckingEnabled(final HttpParams params, boolean value) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setBooleanParameter
-            (CoreConnectionPNames.STALE_CONNECTION_CHECK, value);
-    }
-    
-}
diff --git a/src/org/apache/http/params/HttpParams.java b/src/org/apache/http/params/HttpParams.java
deleted file mode 100644
index ba901a2..0000000
--- a/src/org/apache/http/params/HttpParams.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/HttpParams.java $
- * $Revision: 610763 $
- * $Date: 2008-01-10 04:01:13 -0800 (Thu, 10 Jan 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.params;
-
-/**
- * Represents a collection of HTTP protocol and framework parameters.
- *   
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 610763 $
- *
- * @since 4.0
- */
-public interface HttpParams {
-
-    /** 
-     * Obtains the value of the given parameter.
-     * 
-     * @param name the parent name.
-     * 
-     * @return  an object that represents the value of the parameter,
-     *          <code>null</code> if the parameter is not set or if it
-     *          is explicitly set to <code>null</code>
-     * 
-     * @see #setParameter(String, Object)
-     */
-    Object getParameter(String name);
-
-    /**
-     * Assigns the value to the parameter with the given name.
-     *
-     * @param name parameter name
-     * @param value parameter value
-     */
-    HttpParams setParameter(String name, Object value);
-
-    /**
-     * Creates a copy of these parameters.
-     *
-     * @return  a new set of parameters holding the same values as this one
-     */
-    HttpParams copy();
-    
-    /**
-     * Removes the parameter with the specified name.
-     * 
-     * @param name parameter name
-     * 
-     * @return true if the parameter existed and has been removed, false else.
-     */
-    boolean removeParameter(String name);
-
-    /** 
-     * Returns a {@link Long} parameter value with the given name. 
-     * If the parameter is not explicitly set, the default value is returned.  
-     * 
-     * @param name the parent name.
-     * @param defaultValue the default value.
-     * 
-     * @return a {@link Long} that represents the value of the parameter.
-     * 
-     * @see #setLongParameter(String, long)
-     */
-    long getLongParameter(String name, long defaultValue);
-
-    /**
-     * Assigns a {@link Long} to the parameter with the given name
-     * 
-     * @param name parameter name
-     * @param value parameter value
-     */ 
-    HttpParams setLongParameter(String name, long value);
-
-    /** 
-     * Returns an {@link Integer} parameter value with the given name. 
-     * If the parameter is not explicitly set, the default value is returned.  
-     * 
-     * @param name the parent name.
-     * @param defaultValue the default value.
-     * 
-     * @return a {@link Integer} that represents the value of the parameter.
-     * 
-     * @see #setIntParameter(String, int)
-     */
-    int getIntParameter(String name, int defaultValue);
-
-    /**
-     * Assigns an {@link Integer} to the parameter with the given name
-     * 
-     * @param name parameter name
-     * @param value parameter value
-     */ 
-    HttpParams setIntParameter(String name, int value);
-
-    /** 
-     * Returns a {@link Double} parameter value with the given name. 
-     * If the parameter is not explicitly set, the default value is returned.  
-     *
-     * @param name the parent name.
-     * @param defaultValue the default value.
-     * 
-     * @return a {@link Double} that represents the value of the parameter.
-     * 
-     * @see #setDoubleParameter(String, double)
-     */
-    double getDoubleParameter(String name, double defaultValue);
-
-    /**
-     * Assigns a {@link Double} to the parameter with the given name
-     * 
-     * @param name parameter name
-     * @param value parameter value
-     */ 
-    HttpParams setDoubleParameter(String name, double value);
-
-    /** 
-     * Returns a {@link Boolean} parameter value with the given name. 
-     * If the parameter is not explicitly set, the default value is returned.  
-     * 
-     * @param name the parent name.
-     * @param defaultValue the default value.
-     * 
-     * @return a {@link Boolean} that represents the value of the parameter.
-     * 
-     * @see #setBooleanParameter(String, boolean)
-     */
-    boolean getBooleanParameter(String name, boolean defaultValue);
-
-    /**
-     * Assigns a {@link Boolean} to the parameter with the given name
-     * 
-     * @param name parameter name
-     * @param value parameter value
-     */ 
-    HttpParams setBooleanParameter(String name, boolean value);
-
-    /**
-     * Checks if a boolean parameter is set to <code>true</code>.
-     * 
-     * @param name parameter name
-     * 
-     * @return <tt>true</tt> if the parameter is set to value <tt>true</tt>,
-     *         <tt>false</tt> if it is not set or set to <code>false</code>
-     */
-    boolean isParameterTrue(String name);
-
-    /**
-     * Checks if a boolean parameter is not set or <code>false</code>.
-     * 
-     * @param name parameter name
-     * 
-     * @return <tt>true</tt> if the parameter is either not set or
-     *         set to value <tt>false</tt>,
-     *         <tt>false</tt> if it is set to <code>true</code>
-     */
-    boolean isParameterFalse(String name);
-
-}
diff --git a/src/org/apache/http/params/HttpProtocolParamBean.java b/src/org/apache/http/params/HttpProtocolParamBean.java
deleted file mode 100644
index 6273430..0000000
--- a/src/org/apache/http/params/HttpProtocolParamBean.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/HttpProtocolParamBean.java $
- * $Revision: 593937 $
- * $Date: 2007-11-11 10:44:12 -0800 (Sun, 11 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.params;
-
-import org.apache.http.HttpVersion;
-
-public class HttpProtocolParamBean extends HttpAbstractParamBean {
-    
-    public HttpProtocolParamBean (final HttpParams params) {
-        super(params);
-    }
-
-    public void setHttpElementCharset (final String httpElementCharset) {
-        HttpProtocolParams.setHttpElementCharset(params, httpElementCharset);
-    }
-
-    public void setContentCharset (final String contentCharset) {
-        HttpProtocolParams.setContentCharset(params, contentCharset);
-    }
-
-    public void setVersion (final HttpVersion version) {
-        HttpProtocolParams.setVersion(params, version);
-    }
-
-    public void setUserAgent (final String userAgent) {
-        HttpProtocolParams.setUserAgent(params, userAgent);
-    }
-
-    public void setUseExpectContinue (boolean useExpectContinue) {
-        HttpProtocolParams.setUseExpectContinue(params, useExpectContinue);
-    }
-    
-}
diff --git a/src/org/apache/http/params/HttpProtocolParams.java b/src/org/apache/http/params/HttpProtocolParams.java
deleted file mode 100644
index 71e9c67..0000000
--- a/src/org/apache/http/params/HttpProtocolParams.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/HttpProtocolParams.java $
- * $Revision: 576089 $
- * $Date: 2007-09-16 05:39:56 -0700 (Sun, 16 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.params;
-
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.protocol.HTTP;
-
-/**
- * This class implements an adaptor around the {@link HttpParams} interface
- * to simplify manipulation of the HTTP protocol specific parameters.
- * <br/>
- * Note that the <i>implements</i> relation to {@link CoreProtocolPNames}
- * is for compatibility with existing application code only. References to
- * the parameter names should use the interface, not this class.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 576089 $
- * 
- * @since 4.0
- *
- * @see CoreProtocolPNames
- */
-public final class HttpProtocolParams implements CoreProtocolPNames {
-    
-    /**
-     */
-    private HttpProtocolParams() {
-        super();
-    }
-
-    /**
-     * Returns the charset to be used for writing HTTP headers.
-     * @return The charset
-     */
-    public static String getHttpElementCharset(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        String charset = (String) params.getParameter
-            (CoreProtocolPNames.HTTP_ELEMENT_CHARSET);
-        if (charset == null) {
-            charset = HTTP.DEFAULT_PROTOCOL_CHARSET;
-        }
-        return charset;
-    }
-    
-    /**
-     * Sets the charset to be used for writing HTTP headers.
-     * @param charset The charset
-     */
-    public static void setHttpElementCharset(final HttpParams params, final String charset) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setParameter(CoreProtocolPNames.HTTP_ELEMENT_CHARSET, charset);
-    }
-
-    /**
-     * Returns the default charset to be used for writing content body, 
-     * when no charset explicitly specified.
-     * @return The charset
-     */
-    public static String getContentCharset(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        String charset = (String) params.getParameter
-            (CoreProtocolPNames.HTTP_CONTENT_CHARSET);
-        if (charset == null) {
-            charset = HTTP.DEFAULT_CONTENT_CHARSET;
-        }
-        return charset;
-    }
-    
-    /**
-     * Sets the default charset to be used for writing content body,
-     * when no charset explicitly specified.
-     * @param charset The charset
-     */
-    public static void setContentCharset(final HttpParams params, final String charset) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, charset);
-    }
-
-    /**
-     * Returns {@link ProtocolVersion protocol version} to be used per default. 
-     *
-     * @return {@link ProtocolVersion protocol version}
-     */
-    public static ProtocolVersion getVersion(final HttpParams params) { 
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        Object param = params.getParameter
-            (CoreProtocolPNames.PROTOCOL_VERSION);
-        if (param == null) {
-            return HttpVersion.HTTP_1_1;
-        }
-        return (ProtocolVersion)param;
-    }
-    
-    /**
-     * Assigns the {@link ProtocolVersion protocol version} to be used by the 
-     * HTTP methods that this collection of parameters applies to. 
-     *
-     * @param version the {@link ProtocolVersion protocol version}
-     */
-    public static void setVersion(final HttpParams params, final ProtocolVersion version) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, version);
-    }
-
-    public static String getUserAgent(final HttpParams params) { 
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return (String) params.getParameter(CoreProtocolPNames.USER_AGENT);
-    }
-    
-    public static void setUserAgent(final HttpParams params, final String useragent) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setParameter(CoreProtocolPNames.USER_AGENT, useragent);
-    }
-
-    public static boolean useExpectContinue(final HttpParams params) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        return params.getBooleanParameter
-            (CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
-    }
-    
-    public static void setUseExpectContinue(final HttpParams params, boolean b) {
-        if (params == null) {
-            throw new IllegalArgumentException("HTTP parameters may not be null");
-        }
-        params.setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, b);
-    }
-}
diff --git a/src/org/apache/http/params/package.html b/src/org/apache/http/params/package.html
deleted file mode 100644
index 3943053..0000000
--- a/src/org/apache/http/params/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/package.html $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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>
-The parameterization framework for HTTP components.
-
-</body>
-</html>
diff --git a/src/org/apache/http/protocol/BasicHttpContext.java b/src/org/apache/http/protocol/BasicHttpContext.java
deleted file mode 100644
index 9b4e2b3..0000000
--- a/src/org/apache/http/protocol/BasicHttpContext.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/BasicHttpContext.java $
- * $Revision: 654882 $
- * $Date: 2008-05-09 09:58:59 -0700 (Fri, 09 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.protocol;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Default implementation of the {@link HttpContext HttpContext}.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 654882 $
- * 
- * @since 4.0
- */
-public class BasicHttpContext implements HttpContext {
-    
-    private final HttpContext parentContext;
-    private Map map = null;
-    
-    public BasicHttpContext() {
-        this(null);
-    }
-    
-    public BasicHttpContext(final HttpContext parentContext) {
-        super();
-        this.parentContext = parentContext;
-    }
-    
-    public Object getAttribute(final String id) {
-        if (id == null) {
-            throw new IllegalArgumentException("Id may not be null");
-        }
-        Object obj = null;
-        if (this.map != null) {
-            obj = this.map.get(id);
-        }
-        if (obj == null && this.parentContext != null) {
-            obj = this.parentContext.getAttribute(id);
-        }
-        return obj;
-    }
-
-    public void setAttribute(final String id, final Object obj) {
-        if (id == null) {
-            throw new IllegalArgumentException("Id may not be null");
-        }
-        if (this.map == null) {
-            this.map = new HashMap();
-        }
-        this.map.put(id, obj);
-    }
-    
-    public Object removeAttribute(final String id) {
-        if (id == null) {
-            throw new IllegalArgumentException("Id may not be null");
-        }
-        if (this.map != null) {
-            return this.map.remove(id);
-        } else {
-            return null;
-        }
-    }
-
-}
diff --git a/src/org/apache/http/protocol/BasicHttpProcessor.java b/src/org/apache/http/protocol/BasicHttpProcessor.java
deleted file mode 100644
index 3caec72..0000000
--- a/src/org/apache/http/protocol/BasicHttpProcessor.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/BasicHttpProcessor.java $
- * $Revision: 613298 $
- * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 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.protocol;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-
-/**
- * Keeps lists of interceptors for processing requests and responses.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author Andrea Selva
- *
- * @version $Revision: 613298 $
- * 
- * @since 4.0
- */
-public final class BasicHttpProcessor implements
-    HttpProcessor, HttpRequestInterceptorList, HttpResponseInterceptorList, Cloneable {
-
-    protected List requestInterceptors = null; 
-    protected List responseInterceptors = null;
-
-
-    // non-Javadoc, see interface HttpRequestInterceptorList
-    public void addRequestInterceptor(final HttpRequestInterceptor itcp) {
-
-        if (itcp == null) {
-            return;
-        }
-        if (this.requestInterceptors == null) {
-            this.requestInterceptors = new ArrayList();
-        }
-        this.requestInterceptors.add(itcp);
-    }
-    
-    // non-Javadoc, see interface HttpRequestInterceptorList
-    public void addRequestInterceptor(final HttpRequestInterceptor itcp,
-                                      int index) {
-        if (index < 0) {
-            throw new IndexOutOfBoundsException(String.valueOf(index));
-        }
-        if (itcp == null) {
-            return;
-        }
-
-        if (this.requestInterceptors == null) {
-            if (index > 0) {
-                throw new IndexOutOfBoundsException(String.valueOf(index));
-            }
-            this.requestInterceptors = new ArrayList();
-        }
-        this.requestInterceptors.add(index, itcp);
-    }
-    
-
-    public void addResponseInterceptor(HttpResponseInterceptor itcp,
-                                       int index) {
-        if (index < 0) {
-            throw new IndexOutOfBoundsException(String.valueOf(index));
-        }
-        if (itcp == null) {
-            return;
-        }
-
-        if (this.responseInterceptors == null) {
-            if (index > 0) {
-                throw new IndexOutOfBoundsException(String.valueOf(index));
-            }
-            this.responseInterceptors = new ArrayList();
-        }
-        this.responseInterceptors.add(index, itcp);
-    }
-    
-    
-    // non-Javadoc, see interface HttpRequestInterceptorList
-    public void removeRequestInterceptorByClass(final Class clazz) {
-        if (this.requestInterceptors == null) {
-            return;
-        }
-        for (Iterator it = this.requestInterceptors.iterator();
-             it.hasNext(); ) {
-            Object request = it.next();
-            if (request.getClass().equals(clazz)) {
-                it.remove();
-            }
-        }
-    }
-    
-    // non-Javadoc, see interface HttpResponseInterceptorList
-    public void removeResponseInterceptorByClass(final Class clazz) {
-        if (this.responseInterceptors == null) {
-            return;
-        }
-        for (Iterator it = this.responseInterceptors.iterator();
-             it.hasNext(); ) {
-            Object request = it.next();
-            if (request.getClass().equals(clazz)) {
-                it.remove();
-            }
-        }
-    }
-    
-    /**
-     * Same as {@link #addRequestInterceptor(HttpRequestInterceptor) addRequestInterceptor}.
-     *
-     * @param interceptor       the interceptor to add
-     */
-    public final
-            void addInterceptor(final HttpRequestInterceptor interceptor) {
-        addRequestInterceptor(interceptor);
-    }
-    
-     public final
-            void addInterceptor(final HttpRequestInterceptor interceptor,
-                                int index) {
-        addRequestInterceptor(interceptor, index);
-    }
-    
-    
-    // non-Javadoc, see interface HttpRequestInterceptorList
-    public int getRequestInterceptorCount() {
-        return (this.requestInterceptors == null) ?
-            0 : this.requestInterceptors.size();
-    }
-    
-    
-    // non-Javadoc, see interface HttpRequestInterceptorList
-    public HttpRequestInterceptor getRequestInterceptor(int index) {
-        
-        if ((this.requestInterceptors == null) ||
-                (index < 0) || (index >= this.requestInterceptors.size()))
-            return null;
-        
-        return (HttpRequestInterceptor) this.requestInterceptors.get(index);
-    }
-    
-    
-    // non-Javadoc, see interface HttpRequestInterceptorList
-    public void clearRequestInterceptors() {
-        this.requestInterceptors = null;
-    }
-    
-    
-    
-    // non-Javadoc, see interface HttpResponseInterceptorList
-    public void addResponseInterceptor(final HttpResponseInterceptor itcp) {
-        if (itcp == null) {
-            return;
-        }
-        if (this.responseInterceptors == null) {
-            this.responseInterceptors = new ArrayList();
-        }
-        this.responseInterceptors.add(itcp);
-    }
-    
-    /**
-     * Same as {@link #addResponseInterceptor(HttpResponseInterceptor) addResponseInterceptor}.
-     *
-     * @param interceptor       the interceptor to add
-     */
-    public final
-            void addInterceptor(final HttpResponseInterceptor interceptor) {
-        addResponseInterceptor(interceptor);
-    }
-    
-    public final void addInterceptor(final HttpResponseInterceptor interceptor,
-                                     int index) {
-        addResponseInterceptor(interceptor, index);
-    }
-      
-    
-    
-    // non-Javadoc, see interface HttpResponseInterceptorList
-    public int getResponseInterceptorCount() {
-        return (this.responseInterceptors == null) ?
-            0 : this.responseInterceptors.size();
-    }
-    
-    
-    // non-Javadoc, see interface HttpResponseInterceptorList
-    public HttpResponseInterceptor getResponseInterceptor(int index) {
-        
-        if ((this.responseInterceptors == null) ||
-                (index < 0) || (index >= this.responseInterceptors.size()))
-            return null;
-        
-        return (HttpResponseInterceptor) this.responseInterceptors.get(index);
-    }
-    
-    
-    // non-Javadoc, see interface HttpResponseInterceptorList
-    public void clearResponseInterceptors() {
-        this.responseInterceptors = null;
-    }
-    
-    
-    /**
-     * Sets the interceptor lists.
-     * First, both interceptor lists maintained by this processor
-     * will be cleared.
-     * Subsequently,
-     * elements of the argument list that are request interceptors will be
-     * added to the request interceptor list.
-     * Elements that are response interceptors will be
-     * added to the response interceptor list.
-     * Elements that are both request and response interceptor will be
-     * added to both lists.
-     * Elements that are neither request nor response interceptor
-     * will be ignored.
-     *
-     * @param list      the list of request and response interceptors
-     *                  from which to initialize
-     */
-    public void setInterceptors(final List list) {
-        if (list == null) {
-            throw new IllegalArgumentException("List must not be null.");
-        }
-        if (this.requestInterceptors != null) {
-            this.requestInterceptors.clear();
-        }
-        if (this.responseInterceptors != null) {
-            this.responseInterceptors.clear();
-        }
-        for (int i = 0; i < list.size(); i++) {
-            Object obj = list.get(i);
-            if (obj instanceof HttpRequestInterceptor) {
-                addInterceptor((HttpRequestInterceptor)obj);
-            }
-            if (obj instanceof HttpResponseInterceptor) {
-                addInterceptor((HttpResponseInterceptor)obj);
-            }
-        }
-    }
-    
-    /**
-     * Clears both interceptor lists maintained by this processor.
-     */
-    public void clearInterceptors() {
-        clearRequestInterceptors();
-        clearResponseInterceptors();
-    }
-    
-    // non-Javadoc, see interface HttpRequestInterceptor (via HttpProcessor)
-    public void process(
-            final HttpRequest request,
-            final HttpContext context)
-            throws IOException, HttpException {
-        if (this.requestInterceptors != null) {
-            for (int i = 0; i < this.requestInterceptors.size(); i++) {
-                HttpRequestInterceptor interceptor =
-                    (HttpRequestInterceptor) this.requestInterceptors.get(i);
-                interceptor.process(request, context);
-            }
-        }
-    }
-    
-    // non-Javadoc, see interface HttpResponseInterceptor (via HttpProcessor)
-    public void process(
-            final HttpResponse response,
-            final HttpContext context)
-            throws IOException, HttpException {
-        if (this.responseInterceptors != null) {
-            for (int i = 0; i < this.responseInterceptors.size(); i++) {
-                HttpResponseInterceptor interceptor =
-                    (HttpResponseInterceptor) this.responseInterceptors.get(i);
-                interceptor.process(response, context);
-            }
-        }
-    }
-
-    protected void copyInterceptors(final BasicHttpProcessor target) {
-        if (this.requestInterceptors != null) {
-            target.requestInterceptors =
-                new ArrayList(this.requestInterceptors);
-        }
-        if (this.responseInterceptors != null) {
-            target.responseInterceptors =
-                new ArrayList(this.responseInterceptors);
-        }
-    }
-    
-    /**
-     * Creates a copy of this instance
-     *
-     * @return new instance of the BasicHttpProcessor
-     */
-    public BasicHttpProcessor copy() {
-        BasicHttpProcessor clone = new BasicHttpProcessor();
-        copyInterceptors(clone);
-        return clone;
-    }
-    
-    public Object clone() throws CloneNotSupportedException {
-        BasicHttpProcessor clone = (BasicHttpProcessor) super.clone();
-        copyInterceptors(clone);
-        return clone;
-    }
- 
-}
diff --git a/src/org/apache/http/protocol/DefaultedHttpContext.java b/src/org/apache/http/protocol/DefaultedHttpContext.java
deleted file mode 100644
index 986f1a6..0000000
--- a/src/org/apache/http/protocol/DefaultedHttpContext.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/DefaultedHttpContext.java $
- * $Revision: 654882 $
- * $Date: 2008-05-09 09:58:59 -0700 (Fri, 09 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.protocol;
-
-/**
- * {@link HttpContext} implementation that delegates resolution of an attribute
- * to the given default {@link HttpContext} instance if the attribute is not 
- * present in the local one. The state of the local context can be mutated,
- * whereas the default context is treated as read-only.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 654882 $
- */
-public final class DefaultedHttpContext implements HttpContext {
-
-    private final HttpContext local;
-    private final HttpContext defaults;
-    
-    public DefaultedHttpContext(final HttpContext local, final HttpContext defaults) {
-        super();
-        if (local == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-        this.local = local;
-        this.defaults = defaults;
-    }
-
-    public Object getAttribute(final String id) {
-        Object obj = this.local.getAttribute(id);
-        if (obj == null) {
-            return this.defaults.getAttribute(id);
-        } else {
-            return obj;
-        }
-    }
-
-    public Object removeAttribute(final String id) {
-        return this.local.removeAttribute(id);
-    }
-
-    public void setAttribute(final String id, final Object obj) {
-        this.local.setAttribute(id, obj);
-    }
-
-    public HttpContext getDefaults() {
-        return this.defaults;
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/ExecutionContext.java b/src/org/apache/http/protocol/ExecutionContext.java
deleted file mode 100644
index d14acb5..0000000
--- a/src/org/apache/http/protocol/ExecutionContext.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ExecutionContext.java $
- * $Revision: 558154 $
- * $Date: 2007-07-20 14:29:02 -0700 (Fri, 20 Jul 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.protocol;
-
-/**
- * {@link HttpContext Context} attribute names for protocol execution.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 558154 $
- * 
- * @since 4.0
- */
-public interface ExecutionContext {
-    
-    public static final String HTTP_CONNECTION  = "http.connection"; 
-    public static final String HTTP_REQUEST     = "http.request"; 
-    public static final String HTTP_RESPONSE    = "http.response"; 
-    public static final String HTTP_TARGET_HOST = "http.target_host"; 
-    public static final String HTTP_PROXY_HOST  = "http.proxy_host"; 
-    public static final String HTTP_REQ_SENT    = "http.request_sent"; 
-
-}
diff --git a/src/org/apache/http/protocol/HTTP.java b/src/org/apache/http/protocol/HTTP.java
deleted file mode 100644
index de76ca6..0000000
--- a/src/org/apache/http/protocol/HTTP.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/protocol/HTTP.java $
- * $Revision: 555989 $
- * $Date: 2007-07-13 06:33:39 -0700 (Fri, 13 Jul 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.protocol;
-
-/**
- * Constants and static helpers related to the HTTP protocol.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 555989 $
- * 
- * @since 4.0
- */
-public final class HTTP {
-
-    public static final int CR = 13; // <US-ASCII CR, carriage return (13)>
-    public static final int LF = 10; // <US-ASCII LF, linefeed (10)>
-    public static final int SP = 32; // <US-ASCII SP, space (32)>
-    public static final int HT = 9;  // <US-ASCII HT, horizontal-tab (9)>
-
-    /** HTTP header definitions */ 
-    public static final String TRANSFER_ENCODING = "Transfer-Encoding";
-    public static final String CONTENT_LEN  = "Content-Length";
-    public static final String CONTENT_TYPE = "Content-Type";
-    public static final String CONTENT_ENCODING = "Content-Encoding";
-    public static final String EXPECT_DIRECTIVE = "Expect";
-    public static final String CONN_DIRECTIVE = "Connection";
-    public static final String TARGET_HOST = "Host";
-    public static final String USER_AGENT = "User-Agent";
-    public static final String DATE_HEADER = "Date";
-    public static final String SERVER_HEADER = "Server";
-    
-    /** HTTP expectations */
-    public static final String EXPECT_CONTINUE = "100-Continue";
-
-    /** HTTP connection control */
-    public static final String CONN_CLOSE = "Close";
-    public static final String CONN_KEEP_ALIVE = "Keep-Alive";
-    
-    /** Transfer encoding definitions */
-    public static final String CHUNK_CODING = "chunked";
-    public static final String IDENTITY_CODING = "identity";
-    
-    /** Common charset definitions */
-    public static final String UTF_8 = "UTF-8";
-    public static final String UTF_16 = "UTF-16";
-    public static final String US_ASCII = "US-ASCII";
-    public static final String ASCII = "ASCII";
-    public static final String ISO_8859_1 = "ISO-8859-1";
-
-    /** Default charsets */
-    public static final String DEFAULT_CONTENT_CHARSET = ISO_8859_1;
-    public static final String DEFAULT_PROTOCOL_CHARSET = US_ASCII;
-
-    /** Content type definitions */
-    public final static String OCTET_STREAM_TYPE = "application/octet-stream";
-    public final static String PLAIN_TEXT_TYPE = "text/plain";
-    public final static String CHARSET_PARAM = "; charset=";
-
-    /** Default content type */
-    public final static String DEFAULT_CONTENT_TYPE = OCTET_STREAM_TYPE;
-
-    public static boolean isWhitespace(char ch) {
-        return ch == SP || ch == HT || ch == CR || ch == LF; 
-    }
-    
-    private HTTP() {
-    }
-       
-}
diff --git a/src/org/apache/http/protocol/HttpContext.java b/src/org/apache/http/protocol/HttpContext.java
deleted file mode 100644
index bcf36fd..0000000
--- a/src/org/apache/http/protocol/HttpContext.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpContext.java $
- * $Revision: 558111 $
- * $Date: 2007-07-20 13:01:50 -0700 (Fri, 20 Jul 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.protocol;
-
-/**
- * A context for executing a request.
- * The context is used to tie together the request, the response,
- * and optional application data. It is also used for internal data.
- * Attribute names starting with the prefix "http." are
- * {@link #RESERVED_PREFIX reserved} for internal data.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 558111 $
- * 
- * @since 4.0
- */
-public interface HttpContext {
-
-    /** The prefix reserved for use by HTTP components. "http." */
-    public static final String RESERVED_PREFIX  = "http.";
-    
-    Object getAttribute(String id);
-
-    void setAttribute(String id, Object obj);
-
-    Object removeAttribute(String id);
-    
-}
diff --git a/src/org/apache/http/protocol/HttpDateGenerator.java b/src/org/apache/http/protocol/HttpDateGenerator.java
deleted file mode 100644
index bfb0863..0000000
--- a/src/org/apache/http/protocol/HttpDateGenerator.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/protocol/HttpDateGenerator.java $
- * $Revision: 548066 $
- * $Date: 2007-06-17 09:51:55 -0700 (Sun, 17 Jun 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.protocol;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.TimeZone;
-
-
-/**
- * Generates a date in the format required by the HTTP protocol.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 548066 $
- * 
- * @since 4.0
- */
-public class HttpDateGenerator {
-
-    /** Date format pattern used to generate the header in RFC 1123 format. */
-    public static final
-        String PATTERN_RFC1123 = "EEE, dd MMM yyyy HH:mm:ss zzz";
-
-    /** The time zone to use in the date header. */
-    public static final TimeZone GMT = TimeZone.getTimeZone("GMT");
-
-
-    private final DateFormat dateformat;
-    
-    private long dateAsLong = 0L;
-    private String dateAsText = null;
-
-    public HttpDateGenerator() {
-        super();
-        this.dateformat = new SimpleDateFormat(PATTERN_RFC1123, Locale.US);
-        this.dateformat.setTimeZone(GMT);
-    }
-    
-    public synchronized String getCurrentDate() {
-        long now = System.currentTimeMillis();
-        if (now - this.dateAsLong > 1000) {
-            // Generate new date string
-            this.dateAsText = this.dateformat.format(new Date(now));
-            this.dateAsLong = now;
-        }
-        return this.dateAsText;
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/HttpExpectationVerifier.java b/src/org/apache/http/protocol/HttpExpectationVerifier.java
deleted file mode 100644
index 9fa4316..0000000
--- a/src/org/apache/http/protocol/HttpExpectationVerifier.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpExpectationVerifier.java $
- * $Revision: 613298 $
- * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 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.protocol;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-
-/**
- * Defines an interface to verify whether an incoming HTTP request meets 
- * the target server's expectations. 
- *<p>
- * The Expect request-header field is used to indicate that particular
- * server behaviors are required by the client.
- *</p>
- *<pre>
- *    Expect       =  "Expect" ":" 1#expectation
- *
- *    expectation  =  "100-continue" | expectation-extension
- *    expectation-extension =  token [ "=" ( token | quoted-string )
- *                             *expect-params ]
- *    expect-params =  ";" token [ "=" ( token | quoted-string ) ]
- *</pre>
- *<p>
- * A server that does not understand or is unable to comply with any of
- * the expectation values in the Expect field of a request MUST respond
- * with appropriate error status. The server MUST respond with a 417
- * (Expectation Failed) status if any of the expectations cannot be met
- * or, if there are other problems with the request, some other 4xx
- * status.
- *</p>
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 613298 $
- * 
- * @since 4.0
- */
-public interface HttpExpectationVerifier {
-
-    void verify(HttpRequest request, HttpResponse response, HttpContext context)
-            throws HttpException;
-    
-}
diff --git a/src/org/apache/http/protocol/HttpProcessor.java b/src/org/apache/http/protocol/HttpProcessor.java
deleted file mode 100644
index 489220d..0000000
--- a/src/org/apache/http/protocol/HttpProcessor.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpProcessor.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.protocol;
-
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.HttpResponseInterceptor;
-
-/**
- * Performs interceptor processing of requests and responses.
- * Specific interceptors typically interpret or update message headers,
- * and they may wrap the message entity for example to implement a
- * specific transport or content encoding.
- * A <code>HttpProcessor</code> typically maintains a list of
- * interceptors that will be applied to a request or response.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public interface HttpProcessor
-    extends HttpRequestInterceptor, HttpResponseInterceptor {
-
-    // no additional methods
-}
diff --git a/src/org/apache/http/protocol/HttpRequestExecutor.java b/src/org/apache/http/protocol/HttpRequestExecutor.java
deleted file mode 100644
index 71fa75a..0000000
--- a/src/org/apache/http/protocol/HttpRequestExecutor.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestExecutor.java $
- * $Revision: 576073 $
- * $Date: 2007-09-16 03:53:13 -0700 (Sun, 16 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.protocol;
-
-import java.io.IOException;
-import java.net.ProtocolException;
-
-import org.apache.http.HttpClientConnection;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.params.CoreProtocolPNames;
-
-/**
- * Sends HTTP requests and receives the responses.
- * Takes care of request preprocessing and response postprocessing
- * by the respective interceptors.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 576073 $
- * 
- * @since 4.0
- */
-public class HttpRequestExecutor {
-
-    /**
-     * Create a new request executor.
-     */
-    public HttpRequestExecutor() {
-        super();
-    }
-
-    /**
-     * Decide whether a response comes with an entity.
-     * The implementation in this class is based on RFC 2616.
-     * Unknown methods and response codes are supposed to
-     * indicate responses with an entity.
-     * <br/>
-     * Derived executors can override this method to handle
-     * methods and response codes not specified in RFC 2616.
-     *
-     * @param request   the request, to obtain the executed method
-     * @param response  the response, to obtain the status code
-     */
-    protected boolean canResponseHaveBody(final HttpRequest request,
-                                          final HttpResponse response) {
-
-        if ("HEAD".equalsIgnoreCase(request.getRequestLine().getMethod())) {
-            return false;
-        }
-        int status = response.getStatusLine().getStatusCode(); 
-        return status >= HttpStatus.SC_OK 
-            && status != HttpStatus.SC_NO_CONTENT 
-            && status != HttpStatus.SC_NOT_MODIFIED
-            && status != HttpStatus.SC_RESET_CONTENT; 
-    }
-
-    /**
-     * Synchronously send a request and obtain the response.
-     *
-     * @param request   the request to send. It will be preprocessed.
-     * @param conn      the open connection over which to send
-     *
-     * @return  the response to the request, postprocessed
-     *
-     * @throws HttpException      in case of a protocol or processing problem
-     * @throws IOException        in case of an I/O problem
-     */    
-    public HttpResponse execute(
-            final HttpRequest request,
-            final HttpClientConnection conn,
-            final HttpContext context) 
-                throws IOException, HttpException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (conn == null) {
-            throw new IllegalArgumentException("Client connection may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-
-        try {
-            HttpResponse response = doSendRequest(request, conn, context);
-            if (response == null) {
-                response = doReceiveResponse(request, conn, context);
-            }
-            return response;
-        } catch (IOException ex) {
-            conn.close();
-            throw ex;
-        } catch (HttpException ex) {
-            conn.close();
-            throw ex;
-        } catch (RuntimeException ex) {
-            conn.close();
-            throw ex;
-        }
-    }
-
-    /**
-     * Prepare a request for sending.
-     *
-     * @param request   the request to prepare
-     * @param processor the processor to use
-     * @param context   the context for sending the request
-     *
-     * @throws HttpException      in case of a protocol or processing problem
-     * @throws IOException        in case of an I/O problem
-     */
-    public void preProcess(
-            final HttpRequest request,
-            final HttpProcessor processor,
-            final HttpContext context)
-                throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (processor == null) {
-            throw new IllegalArgumentException("HTTP processor may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-        processor.process(request, context);
-    }
-
-    /**
-     * Send a request over a connection.
-     * This method also handles the expect-continue handshake if necessary.
-     * If it does not have to handle an expect-continue handshake, it will
-     * not use the connection for reading or anything else that depends on
-     * data coming in over the connection.
-     *
-     * @param request   the request to send, already
-     *                  {@link #preProcess preprocessed}
-     * @param conn      the connection over which to send the request,
-     *                  already established
-     * @param context   the context for sending the request
-     *
-     * @return  a terminal response received as part of an expect-continue
-     *          handshake, or
-     *          <code>null</code> if the expect-continue handshake is not used
-     *
-     * @throws HttpException      in case of a protocol or processing problem
-     * @throws IOException        in case of an I/O problem
-     */
-    protected HttpResponse doSendRequest(
-            final HttpRequest request,
-            final HttpClientConnection conn,
-            final HttpContext context)
-                throws IOException, HttpException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (conn == null) {
-            throw new IllegalArgumentException("HTTP connection may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-
-        HttpResponse response = null;
-        context.setAttribute(ExecutionContext.HTTP_REQ_SENT, Boolean.FALSE);
-
-        conn.sendRequestHeader(request);
-        if (request instanceof HttpEntityEnclosingRequest) {
-            // Check for expect-continue handshake. We have to flush the
-            // headers and wait for an 100-continue response to handle it.
-            // If we get a different response, we must not send the entity.
-            boolean sendentity = true;
-            final ProtocolVersion ver =
-                request.getRequestLine().getProtocolVersion();
-            if (((HttpEntityEnclosingRequest) request).expectContinue() &&
-                !ver.lessEquals(HttpVersion.HTTP_1_0)) {
-
-                conn.flush();
-                // As suggested by RFC 2616 section 8.2.3, we don't wait for a
-                // 100-continue response forever. On timeout, send the entity.
-                int tms = request.getParams().getIntParameter(
-                        CoreProtocolPNames.WAIT_FOR_CONTINUE, 2000);
-                
-                if (conn.isResponseAvailable(tms)) {
-                    response = conn.receiveResponseHeader();
-                    if (canResponseHaveBody(request, response)) {
-                        conn.receiveResponseEntity(response);
-                    }
-                    int status = response.getStatusLine().getStatusCode();
-                    if (status < 200) {
-                        if (status != HttpStatus.SC_CONTINUE) {
-                            throw new ProtocolException(
-                                    "Unexpected response: " + response.getStatusLine());
-                        }
-                        // discard 100-continue
-                        response = null;
-                    } else {
-                        sendentity = false;
-                    }
-                }
-            }
-            if (sendentity) {
-                conn.sendRequestEntity((HttpEntityEnclosingRequest) request);
-            }
-        }
-        conn.flush();
-        context.setAttribute(ExecutionContext.HTTP_REQ_SENT, Boolean.TRUE);
-        return response;
-    } 
-
-    /**
-     * Wait for and receive a response.
-     * This method will automatically ignore intermediate responses
-     * with status code 1xx.
-     *
-     * @param request   the request for which to obtain the response
-     * @param conn      the connection over which the request was sent
-     * @param context   the context for receiving the response
-     *
-     * @return  the final response, not yet post-processed
-     *
-     * @throws HttpException      in case of a protocol or processing problem
-     * @throws IOException        in case of an I/O problem
-     */
-    protected HttpResponse doReceiveResponse(
-            final HttpRequest          request,
-            final HttpClientConnection conn,
-            final HttpContext          context)
-                throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (conn == null) {
-            throw new IllegalArgumentException("HTTP connection may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-
-        HttpResponse response = null;
-        int statuscode = 0;
-
-        while (response == null || statuscode < HttpStatus.SC_OK) {
-
-            response = conn.receiveResponseHeader();
-            if (canResponseHaveBody(request, response)) {
-                conn.receiveResponseEntity(response);
-            }
-            statuscode = response.getStatusLine().getStatusCode();
-
-        } // while intermediate response
-
-        return response;
-
-    }
-
-    /**
-     * Finish a response.
-     * This includes post-processing of the response object.
-     * It does <i>not</i> read the response entity, if any.
-     * It does <i>not</i> allow for immediate re-use of the
-     * connection over which the response is coming in.
-     *
-     * @param response  the response object to finish
-     * @param processor the processor to use
-     * @param context   the context for post-processing the response
-     *
-     * @throws HttpException      in case of a protocol or processing problem
-     * @throws IOException        in case of an I/O problem
-     */
-    public void postProcess(
-            final HttpResponse response,
-            final HttpProcessor processor,
-            final HttpContext context)
-                throws HttpException, IOException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        if (processor == null) {
-            throw new IllegalArgumentException("HTTP processor may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-        processor.process(response, context);
-    }
-
-} // class HttpRequestExecutor
diff --git a/src/org/apache/http/protocol/HttpRequestHandler.java b/src/org/apache/http/protocol/HttpRequestHandler.java
deleted file mode 100644
index 7494353..0000000
--- a/src/org/apache/http/protocol/HttpRequestHandler.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandler.java $
- * $Revision: 613298 $
- * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-
-/**
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 613298 $
- * 
- * @since 4.0
- */
-public interface HttpRequestHandler {
-
-    void handle(HttpRequest request, HttpResponse response, HttpContext context) 
-            throws HttpException, IOException;
-    
-}
diff --git a/src/org/apache/http/protocol/HttpRequestHandlerRegistry.java b/src/org/apache/http/protocol/HttpRequestHandlerRegistry.java
deleted file mode 100644
index 668d748..0000000
--- a/src/org/apache/http/protocol/HttpRequestHandlerRegistry.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerRegistry.java $
- * $Revision: 630662 $
- * $Date: 2008-02-24 11:40:51 -0800 (Sun, 24 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.protocol;
-
-import java.util.Map;
-
-/**
- * Maintains a map of HTTP request handlers keyed by a request URI pattern.
- * {@link HttpRequestHandler} instances can be looked up by request URI
- * using the {@link HttpRequestHandlerResolver} interface.<br/>
- * Patterns may have three formats:
- * <ul>
- *   <li><code>*</code></li>
- *   <li><code>*&lt;uri&gt;</code></li>
- *   <li><code>&lt;uri&gt;*</code></li>
- * </ul>
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 630662 $
- */
-public class HttpRequestHandlerRegistry implements HttpRequestHandlerResolver {
-
-    private final UriPatternMatcher matcher;
-
-    public HttpRequestHandlerRegistry() {
-        matcher = new UriPatternMatcher();
-    }
-
-    public void register(final String pattern, final HttpRequestHandler handler) {
-        matcher.register(pattern, handler);
-    }
-
-    public void unregister(final String pattern) {
-        matcher.unregister(pattern);
-    }
-
-    public void setHandlers(final Map map) {
-        matcher.setHandlers(map);
-    }
-
-    public HttpRequestHandler lookup(final String requestURI) {
-        return (HttpRequestHandler) matcher.lookup(requestURI);
-    }
-
-    /**
-     * @deprecated
-     */
-    protected boolean matchUriRequestPattern(final String pattern, final String requestUri) {
-        return matcher.matchUriRequestPattern(pattern, requestUri);
-    }
-
-}
diff --git a/src/org/apache/http/protocol/HttpRequestHandlerResolver.java b/src/org/apache/http/protocol/HttpRequestHandlerResolver.java
deleted file mode 100644
index be92deb..0000000
--- a/src/org/apache/http/protocol/HttpRequestHandlerResolver.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerResolver.java $
- * $Revision: 613298 $
- * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 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.protocol;
-
-/**
- * Interface to be implemented by objects that can resolve 
- * {@link HttpRequestHandler} instances by request URI.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 613298 $
- */
-public interface HttpRequestHandlerResolver {
-
-    HttpRequestHandler lookup(String requestURI);
-    
-}
diff --git a/src/org/apache/http/protocol/HttpRequestInterceptorList.java b/src/org/apache/http/protocol/HttpRequestInterceptorList.java
deleted file mode 100644
index 84ec761..0000000
--- a/src/org/apache/http/protocol/HttpRequestInterceptorList.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestInterceptorList.java $
- * $Revision: 554903 $
- * $Date: 2007-07-10 03:54:17 -0700 (Tue, 10 Jul 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.protocol;
-
-import java.util.List;
-
-import org.apache.http.HttpRequestInterceptor;
-
-/**
- * Provides access to an ordered list of request interceptors.
- * Lists are expected to be built upfront and used read-only afterwards
- * for {@link HttpProcessor processing}.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- * @version $Revision: 554903 $
- * 
- * @since 4.0
- */
-public interface HttpRequestInterceptorList {
-
-    /**
-     * Appends a request interceptor to this list.
-     *
-     * @param itcp      the request interceptor to add
-     */
-    void addRequestInterceptor(HttpRequestInterceptor itcp)
-        ;
-
-
-    /**
-     * Inserts a request interceptor at the specified index.
-     *
-     * @param itcp      the request interceptor to add
-     * @param index     the index to insert the interceptor at
-     */
-    void addRequestInterceptor(HttpRequestInterceptor itcp, int index);
-    
-    
-    /**
-     * Obtains the current size of this list.
-     *
-     * @return  the number of request interceptors in this list
-     */
-    int getRequestInterceptorCount()
-        ;
-
-
-    /**
-     * Obtains a request interceptor from this list.
-     *
-     * @param index     the index of the interceptor to obtain,
-     *                  0 for first
-     *
-     * @return  the interceptor at the given index, or
-     *          <code>null</code> if the index is out of range
-     */
-    HttpRequestInterceptor getRequestInterceptor(int index)
-        ;
-
-
-    /**
-     * Removes all request interceptors from this list.
-     */
-    void clearRequestInterceptors()
-        ;
-
-
-    /**
-     * Removes all request interceptor of the specified class
-     *
-     * @param clazz  the class of the instances to be removed.
-     */
-    void removeRequestInterceptorByClass(Class clazz);
-    
-    
-    /**
-     * Sets the request interceptors in this list.
-     * This list will be cleared and re-initialized to contain
-     * all request interceptors from the argument list.
-     * If the argument list includes elements that are not request
-     * interceptors, the behavior is implementation dependent.
-     *
-     * @param itcps     the list of request interceptors
-     */
-    void setInterceptors(List itcps)
-        ;
-
-
-} // interface HttpRequestInterceptorList
-
diff --git a/src/org/apache/http/protocol/HttpResponseInterceptorList.java b/src/org/apache/http/protocol/HttpResponseInterceptorList.java
deleted file mode 100644
index 8b5811b..0000000
--- a/src/org/apache/http/protocol/HttpResponseInterceptorList.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpResponseInterceptorList.java $
- * $Revision: 554903 $
- * $Date: 2007-07-10 03:54:17 -0700 (Tue, 10 Jul 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.protocol;
-
-
-import java.util.List;
-
-import org.apache.http.HttpResponseInterceptor;
-
-
-/**
- * Provides access to an ordered list of response interceptors.
- * Lists are expected to be built upfront and used read-only afterwards
- * for {@link HttpProcessor processing}.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- *
- * @version $Revision: 554903 $
- * 
- * @since 4.0
- */
-public interface HttpResponseInterceptorList {
-
-    /**
-     * Appends a response interceptor to this list.
-     *
-     * @param itcp      the response interceptor to add
-     */
-    void addResponseInterceptor(HttpResponseInterceptor itcp)
-        ;
-
-    /**
-     * Inserts a response interceptor at the specified index.
-     *
-     * @param itcp      the response interceptor to add
-     * @param index     the index to insert the interceptor at
-     */
-    void addResponseInterceptor(HttpResponseInterceptor itcp, int index);
-    
-    
-    /**
-     * Obtains the current size of this list.
-     *
-     * @return  the number of response interceptors in this list
-     */
-    int getResponseInterceptorCount()
-        ;
-
-
-    /**
-     * Obtains a response interceptor from this list.
-     *
-     * @param index     the index of the interceptor to obtain,
-     *                  0 for first
-     *
-     * @return  the interceptor at the given index, or
-     *          <code>null</code> if the index is out of range
-     */
-    HttpResponseInterceptor getResponseInterceptor(int index)
-        ;
-
-
-    /**
-     * Removes all response interceptors from this list.
-     */
-    void clearResponseInterceptors()
-        ;
-
-    
-    /**
-     * Removes all response interceptor of the specified class
-     *
-     * @param clazz  the class of the instances to be removed.
-     */
-    void removeResponseInterceptorByClass(Class clazz);
-
-    
-    /**
-     * Sets the response interceptors in this list.
-     * This list will be cleared and re-initialized to contain
-     * all response interceptors from the argument list.
-     * If the argument list includes elements that are not response
-     * interceptors, the behavior is implementation dependent.
-     *
-     * @param itcps     the list of response interceptors
-     */
-    void setInterceptors(List itcps)
-        ;
-
-
-} // interface HttpResponseInterceptorList
-
diff --git a/src/org/apache/http/protocol/HttpService.java b/src/org/apache/http/protocol/HttpService.java
deleted file mode 100644
index 991e931..0000000
--- a/src/org/apache/http/protocol/HttpService.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpService.java $
- * $Revision: 610763 $
- * $Date: 2008-01-10 04:01:13 -0800 (Thu, 10 Jan 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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.ConnectionReuseStrategy;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseFactory;
-import org.apache.http.HttpServerConnection;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpVersion;
-import org.apache.http.MethodNotSupportedException;
-import org.apache.http.ProtocolException;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.UnsupportedHttpVersionException;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.DefaultedHttpParams;
-import org.apache.http.util.EncodingUtils;
-
-/**
- * Minimalistic server-side implementation of an HTTP processor.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 610763 $
- */
-public class HttpService {
-
-    private HttpParams params = null;
-    private HttpProcessor processor = null;
-    private HttpRequestHandlerResolver handlerResolver = null;
-    private ConnectionReuseStrategy connStrategy = null;
-    private HttpResponseFactory responseFactory = null;
-    private HttpExpectationVerifier expectationVerifier = null;
-    
-    /**
-     * Create a new HTTP service.
-     *
-     * @param proc             the processor to use on requests and responses
-     * @param connStrategy     the connection reuse strategy
-     * @param responseFactory  the response factory
-     */
-    public HttpService(
-            final HttpProcessor proc,
-            final ConnectionReuseStrategy connStrategy,
-            final HttpResponseFactory responseFactory) {
-        super();
-        setHttpProcessor(proc);
-        setConnReuseStrategy(connStrategy);
-        setResponseFactory(responseFactory);
-    }
-    
-    public void setHttpProcessor(final HttpProcessor processor) {
-        if (processor == null) {
-            throw new IllegalArgumentException("HTTP processor may not be null.");
-        }
-        this.processor = processor;
-    }
-
-    public void setConnReuseStrategy(final ConnectionReuseStrategy connStrategy) {
-        if (connStrategy == null) {
-            throw new IllegalArgumentException("Connection reuse strategy may not be null");
-        }
-        this.connStrategy = connStrategy;
-    }
-
-    public void setResponseFactory(final HttpResponseFactory responseFactory) {
-        if (responseFactory == null) {
-            throw new IllegalArgumentException("Response factory may not be null");
-        }
-        this.responseFactory = responseFactory;
-    }
-    
-    public void setHandlerResolver(final HttpRequestHandlerResolver handlerResolver) {
-        this.handlerResolver = handlerResolver;
-    }
-
-    public void setExpectationVerifier(final HttpExpectationVerifier expectationVerifier) {
-        this.expectationVerifier = expectationVerifier;
-    }
-
-    public HttpParams getParams() {
-        return this.params;
-    }
-    
-    public void setParams(final HttpParams params) {
-        this.params = params;
-    }
-    
-    public void handleRequest(
-            final HttpServerConnection conn, 
-            final HttpContext context) throws IOException, HttpException { 
-        
-        context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
-
-        HttpResponse response = null;
-        
-        try {
-
-            HttpRequest request = conn.receiveRequestHeader();
-            request.setParams(
-                    new DefaultedHttpParams(request.getParams(), this.params));
-            
-            ProtocolVersion ver =
-                request.getRequestLine().getProtocolVersion();
-            if (!ver.lessEquals(HttpVersion.HTTP_1_1)) {
-                // Downgrade protocol version if greater than HTTP/1.1 
-                ver = HttpVersion.HTTP_1_1;
-            }
-
-            if (request instanceof HttpEntityEnclosingRequest) {
-
-                if (((HttpEntityEnclosingRequest) request).expectContinue()) {
-                    response = this.responseFactory.newHttpResponse(ver, 
-                            HttpStatus.SC_CONTINUE, context);
-                    response.setParams(
-                            new DefaultedHttpParams(response.getParams(), this.params));
-                    
-                    if (this.expectationVerifier != null) {
-                        try {
-                            this.expectationVerifier.verify(request, response, context);
-                        } catch (HttpException ex) {
-                            response = this.responseFactory.newHttpResponse(HttpVersion.HTTP_1_0, 
-                                    HttpStatus.SC_INTERNAL_SERVER_ERROR, context);
-                            response.setParams(
-                                    new DefaultedHttpParams(response.getParams(), this.params));
-                            handleException(ex, response);
-                        }
-                    }
-                    if (response.getStatusLine().getStatusCode() < 200) {
-                        // Send 1xx response indicating the server expections
-                        // have been met
-                        conn.sendResponseHeader(response);
-                        conn.flush();
-                        response = null;
-                        conn.receiveRequestEntity((HttpEntityEnclosingRequest) request);
-                    }
-                } else {
-                    conn.receiveRequestEntity((HttpEntityEnclosingRequest) request);
-                }
-            }
-
-            if (response == null) {
-                response = this.responseFactory.newHttpResponse(ver, HttpStatus.SC_OK, context);
-                response.setParams(
-                        new DefaultedHttpParams(response.getParams(), this.params));
-
-                context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
-                context.setAttribute(ExecutionContext.HTTP_RESPONSE, response);
-
-                this.processor.process(request, context);
-                doService(request, response, context);
-            }
-            
-            // Make sure the request content is fully consumed
-            if (request instanceof HttpEntityEnclosingRequest) {
-                HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity();
-                if (entity != null) {
-                    entity.consumeContent();
-                }
-            }
-            
-        } catch (HttpException ex) {
-            response = this.responseFactory.newHttpResponse
-                (HttpVersion.HTTP_1_0, HttpStatus.SC_INTERNAL_SERVER_ERROR,
-                 context);
-            response.setParams(
-                    new DefaultedHttpParams(response.getParams(), this.params));
-            handleException(ex, response);
-        }
-        
-        this.processor.process(response, context);
-        conn.sendResponseHeader(response);
-        conn.sendResponseEntity(response);
-        conn.flush();
-        
-        if (!this.connStrategy.keepAlive(response, context)) {
-            conn.close();
-        }
-    }
-    
-    protected void handleException(final HttpException ex, final HttpResponse response) {
-        if (ex instanceof MethodNotSupportedException) {
-            response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED);
-        } else if (ex instanceof UnsupportedHttpVersionException) {
-            response.setStatusCode(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED);
-        } else if (ex instanceof ProtocolException) {
-            response.setStatusCode(HttpStatus.SC_BAD_REQUEST);
-        } else {
-            response.setStatusCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);
-        }
-        byte[] msg = EncodingUtils.getAsciiBytes(ex.getMessage());
-        ByteArrayEntity entity = new ByteArrayEntity(msg);
-        entity.setContentType("text/plain; charset=US-ASCII");
-        response.setEntity(entity);
-    }
-    
-    protected void doService(
-            final HttpRequest request, 
-            final HttpResponse response,
-            final HttpContext context) throws HttpException, IOException {
-        HttpRequestHandler handler = null;
-        if (this.handlerResolver != null) {
-            String requestURI = request.getRequestLine().getUri();
-            handler = this.handlerResolver.lookup(requestURI);
-        }
-        if (handler != null) {
-            handler.handle(request, response, context);
-        } else {
-            response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED);
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/RequestConnControl.java b/src/org/apache/http/protocol/RequestConnControl.java
deleted file mode 100644
index 0a7088c..0000000
--- a/src/org/apache/http/protocol/RequestConnControl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestConnControl.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-
-/**
- * A request interceptor that suggests connection keep-alive to the server.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public class RequestConnControl implements HttpRequestInterceptor {
-
-    public RequestConnControl() {
-        super();
-    }
-    
-    public void process(final HttpRequest request, final HttpContext context) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (!request.containsHeader(HTTP.CONN_DIRECTIVE)) {
-            // Default policy is to keep connection alive
-            // whenever possible
-            request.addHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE);
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/RequestContent.java b/src/org/apache/http/protocol/RequestContent.java
deleted file mode 100644
index 745f604..0000000
--- a/src/org/apache/http/protocol/RequestContent.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestContent.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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.ProtocolException;
-
-/**
- * A request interceptor that decides about the transport encoding.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 573864 $
- * 
- * @since 4.0
- */
-public class RequestContent implements HttpRequestInterceptor {
-
-    public RequestContent() {
-        super();
-    }
-    
-    public void process(final HttpRequest request, final HttpContext context) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (request instanceof HttpEntityEnclosingRequest) {
-            if (request.containsHeader(HTTP.TRANSFER_ENCODING)) {
-                throw new ProtocolException("Transfer-encoding header already present");
-            }
-            if (request.containsHeader(HTTP.CONTENT_LEN)) {
-                throw new ProtocolException("Content-Length header already present");
-            }
-            ProtocolVersion ver = request.getRequestLine().getProtocolVersion();
-            HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity();
-            if (entity == null) {
-                request.addHeader(HTTP.CONTENT_LEN, "0");
-                return;
-            }
-            // Must specify a transfer encoding or a content length 
-            if (entity.isChunked() || entity.getContentLength() < 0) {
-                if (ver.lessEquals(HttpVersion.HTTP_1_0)) {
-                    throw new ProtocolException(
-                            "Chunked transfer encoding not allowed for " + ver);
-                }
-                request.addHeader(HTTP.TRANSFER_ENCODING, HTTP.CHUNK_CODING);
-            } else {
-                request.addHeader(HTTP.CONTENT_LEN, Long.toString(entity.getContentLength()));
-            }
-            // Specify a content type if known
-            if (entity.getContentType() != null && !request.containsHeader(
-                    HTTP.CONTENT_TYPE )) {
-                request.addHeader(entity.getContentType()); 
-            }
-            // Specify a content encoding if known
-            if (entity.getContentEncoding() != null && !request.containsHeader(
-                    HTTP.CONTENT_ENCODING)) {
-                request.addHeader(entity.getContentEncoding()); 
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/RequestDate.java b/src/org/apache/http/protocol/RequestDate.java
deleted file mode 100644
index 6462906..0000000
--- a/src/org/apache/http/protocol/RequestDate.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestDate.java $
- * $Revision: 555989 $
- * $Date: 2007-07-13 06:33:39 -0700 (Fri, 13 Jul 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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpRequestInterceptor;
-
-/**
- * A request interceptor that adds a Date header.
- * For use on the client side.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 555989 $
- * 
- * @since 4.0
- */
-public class RequestDate implements HttpRequestInterceptor {
-
-    private static final HttpDateGenerator DATE_GENERATOR = new HttpDateGenerator(); 
-    
-    public RequestDate() {
-        super();
-    }
-
-    public void process(final HttpRequest request, final HttpContext context) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException
-                ("HTTP request may not be null.");
-        }
-        if ((request instanceof HttpEntityEnclosingRequest) &&
-            !request.containsHeader(HTTP.DATE_HEADER)) {
-            String httpdate = DATE_GENERATOR.getCurrentDate();
-            request.setHeader(HTTP.DATE_HEADER, httpdate); 
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/RequestExpectContinue.java b/src/org/apache/http/protocol/RequestExpectContinue.java
deleted file mode 100644
index 0799849..0000000
--- a/src/org/apache/http/protocol/RequestExpectContinue.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestExpectContinue.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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.params.HttpProtocolParams;
-
-/**
- * A request interceptor that enables the expect-continue handshake.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 573864 $
- * 
- * @since 4.0
- */
-public class RequestExpectContinue implements HttpRequestInterceptor {
-
-    public RequestExpectContinue() {
-        super();
-    }
-    
-    public void process(final HttpRequest request, final HttpContext context) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (request instanceof HttpEntityEnclosingRequest) {
-            HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity();
-            // Do not send the expect header if request body is known to be empty
-            if (entity != null && entity.getContentLength() != 0) { 
-                ProtocolVersion ver = request.getRequestLine().getProtocolVersion();
-                if (HttpProtocolParams.useExpectContinue(request.getParams()) 
-                        && !ver.lessEquals(HttpVersion.HTTP_1_0)) {
-                    request.addHeader(HTTP.EXPECT_DIRECTIVE, HTTP.EXPECT_CONTINUE);
-                }
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/RequestTargetHost.java b/src/org/apache/http/protocol/RequestTargetHost.java
deleted file mode 100644
index 9349a8a..0000000
--- a/src/org/apache/http/protocol/RequestTargetHost.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/protocol/RequestTargetHost.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.protocol;
-
-import java.io.IOException;
-import java.net.InetAddress;
-
-import org.apache.http.HttpConnection;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpInetConnection;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.ProtocolException;
-
-/**
- * A request interceptor that sets the Host header for HTTP/1.1 requests.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 573864 $
- * 
- * @since 4.0
- */
-public class RequestTargetHost implements HttpRequestInterceptor {
-
-    public RequestTargetHost() {
-        super();
-    }
-    
-    public void process(final HttpRequest request, final HttpContext context) 
-            throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-        if (!request.containsHeader(HTTP.TARGET_HOST)) {
-            HttpHost targethost = (HttpHost) context
-                .getAttribute(ExecutionContext.HTTP_TARGET_HOST);
-            if (targethost == null) {
-                HttpConnection conn = (HttpConnection) context
-                    .getAttribute(ExecutionContext.HTTP_CONNECTION);
-                if (conn instanceof HttpInetConnection) {
-                    // Populate the context with a default HTTP host based on the 
-                    // inet address of the target host
-                    InetAddress address = ((HttpInetConnection) conn).getRemoteAddress();
-                    int port = ((HttpInetConnection) conn).getRemotePort();
-                    if (address != null) {
-                        targethost = new HttpHost(address.getHostName(), port);
-                    }
-                }
-                if (targethost == null) {
-                    ProtocolVersion ver = request.getRequestLine().getProtocolVersion();
-                    if (ver.lessEquals(HttpVersion.HTTP_1_0)) {
-                        return;
-                    } else {
-                        throw new ProtocolException("Target host missing");
-                    }
-                }
-            }
-            request.addHeader(HTTP.TARGET_HOST, targethost.toHostString());
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/RequestUserAgent.java b/src/org/apache/http/protocol/RequestUserAgent.java
deleted file mode 100644
index 5a3145f..0000000
--- a/src/org/apache/http/protocol/RequestUserAgent.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestUserAgent.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.params.HttpProtocolParams;
-
-/**
- * A request interceptor that adds a User-Agent header.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public class RequestUserAgent implements HttpRequestInterceptor {
-
-    public RequestUserAgent() {
-        super();
-    }
-    
-    public void process(final HttpRequest request, final HttpContext context) 
-        throws HttpException, IOException {
-        if (request == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (!request.containsHeader(HTTP.USER_AGENT)) {
-            String useragent = HttpProtocolParams.getUserAgent(request.getParams());
-            if (useragent != null) {
-                request.addHeader(HTTP.USER_AGENT, useragent);
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/ResponseConnControl.java b/src/org/apache/http/protocol/ResponseConnControl.java
deleted file mode 100644
index 2e535fe..0000000
--- a/src/org/apache/http/protocol/ResponseConnControl.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ResponseConnControl.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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
-
-/**
- * A response interceptor that suggests connection keep-alive to the client.
- * For use on the server side.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618017 $
- * 
- * @since 4.0
- */
-public class ResponseConnControl implements HttpResponseInterceptor {
-
-    public ResponseConnControl() {
-        super();
-    }
-    
-    public void process(final HttpResponse response, final HttpContext context) 
-            throws HttpException, IOException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP response may not be null");
-        }
-        if (context == null) {
-            throw new IllegalArgumentException("HTTP context may not be null");
-        }
-        // Always drop connection after certain type of responses
-        int status = response.getStatusLine().getStatusCode();
-        if (status == HttpStatus.SC_BAD_REQUEST ||
-                status == HttpStatus.SC_REQUEST_TIMEOUT ||
-                status == HttpStatus.SC_LENGTH_REQUIRED ||
-                status == HttpStatus.SC_REQUEST_TOO_LONG ||
-                status == HttpStatus.SC_REQUEST_URI_TOO_LONG ||
-                status == HttpStatus.SC_SERVICE_UNAVAILABLE ||
-                status == HttpStatus.SC_NOT_IMPLEMENTED) {
-            response.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE);
-            return;
-        }
-        // Always drop connection for HTTP/1.0 responses and below
-        // if the content body cannot be correctly delimited
-        HttpEntity entity = response.getEntity();
-        if (entity != null) {
-            ProtocolVersion ver = response.getStatusLine().getProtocolVersion();
-            if (entity.getContentLength() < 0 && 
-                    (!entity.isChunked() || ver.lessEquals(HttpVersion.HTTP_1_0))) {
-                response.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE);
-                return;
-            }
-        }
-        // Drop connection if requested by the client
-        HttpRequest request = (HttpRequest)
-            context.getAttribute(ExecutionContext.HTTP_REQUEST);
-        if (request != null) {
-            Header header = request.getFirstHeader(HTTP.CONN_DIRECTIVE);
-            if (header != null) {
-                response.setHeader(HTTP.CONN_DIRECTIVE, header.getValue());
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/ResponseContent.java b/src/org/apache/http/protocol/ResponseContent.java
deleted file mode 100644
index d1ac054..0000000
--- a/src/org/apache/http/protocol/ResponseContent.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ResponseContent.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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpException;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.ProtocolException;
-
-/**
- * A response interceptor that sets up entity-related headers.
- * For use on the server side.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 573864 $
- * 
- * @since 4.0
- */
-public class ResponseContent implements HttpResponseInterceptor {
-
-    public ResponseContent() {
-        super();
-    }
-    
-    public void process(final HttpResponse response, final HttpContext context) 
-            throws HttpException, IOException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (response.containsHeader(HTTP.TRANSFER_ENCODING)) {
-            throw new ProtocolException("Transfer-encoding header already present");
-        }
-        if (response.containsHeader(HTTP.CONTENT_LEN)) {
-            throw new ProtocolException("Content-Length header already present");
-        }
-        ProtocolVersion ver = response.getStatusLine().getProtocolVersion();
-        HttpEntity entity = response.getEntity();
-        if (entity != null) {
-            long len = entity.getContentLength();
-            if (entity.isChunked() && !ver.lessEquals(HttpVersion.HTTP_1_0)) {
-                response.addHeader(HTTP.TRANSFER_ENCODING, HTTP.CHUNK_CODING);
-            } else if (len >= 0) {
-                response.addHeader(HTTP.CONTENT_LEN, Long.toString(entity.getContentLength()));
-            }
-            // Specify a content type if known
-            if (entity.getContentType() != null && !response.containsHeader(
-                    HTTP.CONTENT_TYPE )) {
-                response.addHeader(entity.getContentType()); 
-            }
-            // Specify a content encoding if known
-            if (entity.getContentEncoding() != null && !response.containsHeader(
-                    HTTP.CONTENT_ENCODING)) {
-                response.addHeader(entity.getContentEncoding()); 
-            }
-        } else {
-            int status = response.getStatusLine().getStatusCode();
-            if (status != HttpStatus.SC_NO_CONTENT 
-                    && status != HttpStatus.SC_NOT_MODIFIED
-                    && status != HttpStatus.SC_RESET_CONTENT) {
-                response.addHeader(HTTP.CONTENT_LEN, "0");
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/ResponseDate.java b/src/org/apache/http/protocol/ResponseDate.java
deleted file mode 100644
index 431dc19..0000000
--- a/src/org/apache/http/protocol/ResponseDate.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ResponseDate.java $
- * $Revision: 555989 $
- * $Date: 2007-07-13 06:33:39 -0700 (Fri, 13 Jul 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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.HttpStatus;
-
-/**
- * A response interceptor that adds a Date header.
- * For use on the server side.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 555989 $
- * 
- * @since 4.0
- */
-public class ResponseDate implements HttpResponseInterceptor {
-
-    private static final HttpDateGenerator DATE_GENERATOR = new HttpDateGenerator(); 
-    
-    public ResponseDate() {
-        super();
-    }
-
-    public void process(final HttpResponse response, final HttpContext context) 
-            throws HttpException, IOException {
-        if (response == null) {
-            throw new IllegalArgumentException
-                ("HTTP response may not be null.");
-        }
-        int status = response.getStatusLine().getStatusCode();
-        if ((status >= HttpStatus.SC_OK) &&
-            !response.containsHeader(HTTP.DATE_HEADER)) {
-            String httpdate = DATE_GENERATOR.getCurrentDate();
-            response.setHeader(HTTP.DATE_HEADER, httpdate); 
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/ResponseServer.java b/src/org/apache/http/protocol/ResponseServer.java
deleted file mode 100644
index 44df593..0000000
--- a/src/org/apache/http/protocol/ResponseServer.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ResponseServer.java $
- * $Revision: 576073 $
- * $Date: 2007-09-16 03:53:13 -0700 (Sun, 16 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.protocol;
-
-import java.io.IOException;
-
-import org.apache.http.HttpException;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.params.CoreProtocolPNames;
-
-/**
- * A response interceptor that adds a Server header.
- * For use on the server side.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 576073 $
- * 
- * @since 4.0
- */
-public class ResponseServer implements HttpResponseInterceptor {
-
-    public ResponseServer() {
-        super();
-    }
-
-    public void process(final HttpResponse response, final HttpContext context) 
-            throws HttpException, IOException {
-        if (response == null) {
-            throw new IllegalArgumentException("HTTP request may not be null");
-        }
-        if (!response.containsHeader(HTTP.SERVER_HEADER)) {
-            String s = (String) response.getParams().getParameter(
-                    CoreProtocolPNames.ORIGIN_SERVER);
-            if (s != null) {
-                response.addHeader(HTTP.SERVER_HEADER, s);
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/protocol/SyncBasicHttpContext.java b/src/org/apache/http/protocol/SyncBasicHttpContext.java
deleted file mode 100644
index b1a408b..0000000
--- a/src/org/apache/http/protocol/SyncBasicHttpContext.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/SyncBasicHttpContext.java $
- * $Revision: 613298 $
- * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 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.protocol;
-
-/**
- * Thread-safe extension of the {@link BasicHttpContext}.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 613298 $
- * 
- * @since 4.0
- */
-public class SyncBasicHttpContext extends BasicHttpContext {
-    
-    public SyncBasicHttpContext(final HttpContext parentContext) {
-        super(parentContext);
-    }
-    
-    public synchronized Object getAttribute(final String id) {
-        return super.getAttribute(id);
-    }
-
-    public synchronized void setAttribute(final String id, final Object obj) {
-        super.setAttribute(id, obj);
-    }
-    
-    public synchronized Object removeAttribute(final String id) {
-        return super.removeAttribute(id);
-    }
-
-}
diff --git a/src/org/apache/http/protocol/UriPatternMatcher.java b/src/org/apache/http/protocol/UriPatternMatcher.java
deleted file mode 100644
index 2870d99..0000000
--- a/src/org/apache/http/protocol/UriPatternMatcher.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/UriPatternMatcher.java $
- * $Revision: 630662 $
- * $Date: 2008-02-24 11:40:51 -0800 (Sun, 24 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.protocol;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * Maintains a map of objects keyed by a request URI pattern.
- * Instances can be looked up by request URI.<br/>
- * Patterns may have three formats:
- * <ul>
- *   <li><code>*</code></li>
- *   <li><code>*&lt;uri&gt;</code></li>
- *   <li><code>&lt;uri&gt;*</code></li>
- * </ul>
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 630662 $
- */
-public class UriPatternMatcher {
-
-    private final Map handlerMap;
-
-    public UriPatternMatcher() {
-        super();
-        this.handlerMap = new HashMap();
-    }
-
-    public void register(final String pattern, final Object handler) {
-        if (pattern == null) {
-            throw new IllegalArgumentException("URI request pattern may not be null");
-        }
-        if (handler == null) {
-            throw new IllegalArgumentException("HTTP request handelr may not be null");
-        }
-        this.handlerMap.put(pattern, handler);
-    }
-
-    public void unregister(final String pattern) {
-        if (pattern == null) {
-            return;
-        }
-        this.handlerMap.remove(pattern);
-    }
-
-    public void setHandlers(final Map map) {
-        if (map == null) {
-            throw new IllegalArgumentException("Map of handlers may not be null");
-        }
-        this.handlerMap.clear();
-        this.handlerMap.putAll(map);
-    }
-
-    public Object lookup(String requestURI) {
-        if (requestURI == null) {
-            throw new IllegalArgumentException("Request URI may not be null");
-        }
-        //Strip away the query part part if found
-        int index = requestURI.indexOf("?");
-        if (index != -1) {
-            requestURI = requestURI.substring(0, index);
-        }
-
-        // direct match?
-        Object handler = this.handlerMap.get(requestURI);
-        if (handler == null) {
-            // pattern match?
-            String bestMatch = null;
-            for (Iterator it = this.handlerMap.keySet().iterator(); it.hasNext();) {
-                String pattern = (String) it.next();
-                if (matchUriRequestPattern(pattern, requestURI)) {
-                    // we have a match. is it any better?
-                    if (bestMatch == null
-                            || (bestMatch.length() < pattern.length())
-                            || (bestMatch.length() == pattern.length() && pattern.endsWith("*"))) {
-                        handler = this.handlerMap.get(pattern);
-                        bestMatch = pattern;
-                    }
-                }
-            }
-        }
-        return handler;
-    }
-
-    protected boolean matchUriRequestPattern(final String pattern, final String requestUri) {
-        if (pattern.equals("*")) {
-            return true;
-        } else {
-            return
-            (pattern.endsWith("*") && requestUri.startsWith(pattern.substring(0, pattern.length() - 1))) ||
-            (pattern.startsWith("*") && requestUri.endsWith(pattern.substring(1, pattern.length())));
-        }
-    }
-
-}
diff --git a/src/org/apache/http/protocol/package.html b/src/org/apache/http/protocol/package.html
deleted file mode 100644
index 5056bcc..0000000
--- a/src/org/apache/http/protocol/package.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/package.html $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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>
-HTTP protocol execution framework.
-
-Apart from simply sending and receiving messages, there are a lot
-of things to consider when communicating with HTTP. Many details
-such as transport encodings or connection management are handled
-by setting up or interpreting
-{@link org.apache.http.Header headers} in the messages.
-In order to relieve applications from the responsibility of
-implementing these nitty-gritty details of the protocol,
-HTTP components provides an execution framework that sets up
-some of the headers before sending a message, and interprets
-headers when a message has been received.
-<br/>
-An HTTP {@link org.apache.http.protocol.HttpProcessor processor}
-typically keeps lists of so-called interceptors that will be executed
-before a message is sent and after it has been received.
-An application should initialize a processor, set up the lists
-with the required and desired processors, and then communicate
-through that processor. There are four kinds of interceptors,
-depending on whether they act on
-{@link org.apache.http.HttpRequestInterceptor requests} or
-{@link org.apache.http.HttpResponseInterceptor responses},
-on the client or server side:
-
-<table border="1" cellpadding="5">
-<tr><th></th>
-    <th>Client</th>
-    <th>Server</th>
-</tr>
-<tr><th>Request</th>
-    <td>prepares headers before a request is sent</td>
-    <td>interprets headers when a request is received</td>
-</tr>
-<tr><th>Response</th>
-    <td>interprets headers when a response is received</td>
-    <td>prepares headers before a response is sent</td>
-</tr>
-</table>
-
-<p>
-{@link org.apache.http.protocol.HttpRequestExecutor HttpRequestExecutor}
-is a processor for the client side,
-{@link org.apache.http.protocol.HttpService HttpService}
-for the server side.
-On the client side, a {@link org.apache.http.protocol.HttpContext context}
-is used to tie together a request, the response to it, and other data
-that might be associated with the request execution. It is passed to
-the request executor whenever needed.
-</p>
-
-<p>
-<font size="+1">
-<i>
-Information about required and recommended interceptors for the
-client side will be provided elsewhere. For the time being, please
-refer to the comments in the example applications or ask on
-one of the mailing lists.
-</i>
-</font>
-</p>
-
-<p>
-<b>Note:</b>
-If you want to develop a server-side application, we recommend that
-you implement your application as a servlet running in a servlet engine
-like <a href="http://tomcat.apache.org/">Tomcat</a> or full-blown
-JSEE container like <a href="http://geronimo.apache.org/">Geronimo</a>.
-If you prefer to implement a server-side application based on our
-{@link org.apache.http.protocol.HttpService HttpService}, we'll
-assume that you know what you're doing and that you don't need
-help in figuring out which interceptors need to be configured.
-</p>
-
-
-</body>
-</html>
diff --git a/src/org/apache/http/svn.info b/src/org/apache/http/svn.info
deleted file mode 100644
index 100deb5..0000000
--- a/src/org/apache/http/svn.info
+++ /dev/null
@@ -1,8 +0,0 @@
-Repository Root: http://svn.apache.org/repos/asf
-Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
-Revision: 677354
-Node Kind: directory
-Schedule: normal
-Last Changed Author: olegk
-Last Changed Rev: 677250
-Last Changed Date: 2008-07-16 04:45:47 -0700 (Wed, 16 Jul 2008)
diff --git a/src/org/apache/http/util/ByteArrayBuffer.java b/src/org/apache/http/util/ByteArrayBuffer.java
deleted file mode 100644
index 01d6577..0000000
--- a/src/org/apache/http/util/ByteArrayBuffer.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/util/ByteArrayBuffer.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.util;
-
-/**
- * A resizable byte array.
- *
- * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public final class ByteArrayBuffer  {
-    
-    private byte[] buffer;
-    private int len;
-
-    public ByteArrayBuffer(int capacity) {
-        super();
-        if (capacity < 0) {
-            throw new IllegalArgumentException("Buffer capacity may not be negative");
-        }
-        this.buffer = new byte[capacity]; 
-    }
-
-    private void expand(int newlen) {
-        byte newbuffer[] = new byte[Math.max(this.buffer.length << 1, newlen)];
-        System.arraycopy(this.buffer, 0, newbuffer, 0, this.len);
-        this.buffer = newbuffer;
-    }
-    
-    public void append(final byte[] b, int off, int len) {
-        if (b == null) {
-            return;
-        }
-        if ((off < 0) || (off > b.length) || (len < 0) ||
-                ((off + len) < 0) || ((off + len) > b.length)) {
-            throw new IndexOutOfBoundsException();
-        }
-        if (len == 0) {
-            return;
-        }
-        int newlen = this.len + len;
-        if (newlen > this.buffer.length) {
-            expand(newlen);
-        }
-        System.arraycopy(b, off, this.buffer, this.len, len);
-        this.len = newlen;
-    }
-
-    public void append(int b) {
-        int newlen = this.len + 1;
-        if (newlen > this.buffer.length) {
-            expand(newlen);
-        }
-        this.buffer[this.len] = (byte)b;
-        this.len = newlen;
-    }
-
-    public void append(final char[] b, int off, int len) {
-        if (b == null) {
-            return;
-        }
-        if ((off < 0) || (off > b.length) || (len < 0) ||
-                ((off + len) < 0) || ((off + len) > b.length)) {
-            throw new IndexOutOfBoundsException();
-        }
-        if (len == 0) {
-            return;
-        }
-        int oldlen = this.len;
-        int newlen = oldlen + len;
-        if (newlen > this.buffer.length) {
-            expand(newlen);
-        }
-        for (int i1 = off, i2 = oldlen; i2 < newlen; i1++, i2++) {
-            this.buffer[i2] = (byte) b[i1];
-        }
-        this.len = newlen;
-    }
-
-    public void append(final CharArrayBuffer b, int off, int len) {
-        if (b == null) {
-            return;
-        }
-        append(b.buffer(), off, len);
-    }
-    
-    public void clear() {
-        this.len = 0;
-    }
-    
-    public byte[] toByteArray() {
-        byte[] b = new byte[this.len]; 
-        if (this.len > 0) {
-            System.arraycopy(this.buffer, 0, b, 0, this.len);
-        }
-        return b;
-    }
-    
-    public int byteAt(int i) {
-        return this.buffer[i];
-    }
-    
-    public int capacity() {
-        return this.buffer.length;
-    }
-    
-    public int length() {
-        return this.len;
-    }
-
-    public byte[] buffer() {
-        return this.buffer;
-    }
-        
-    public void setLength(int len) {
-        if (len < 0 || len > this.buffer.length) {
-            throw new IndexOutOfBoundsException();
-        }
-        this.len = len;
-    }
-    
-    public boolean isEmpty() {
-        return this.len == 0; 
-    }
-    
-    public boolean isFull() {
-        return this.len == this.buffer.length; 
-    }
-    
-}
diff --git a/src/org/apache/http/util/CharArrayBuffer.java b/src/org/apache/http/util/CharArrayBuffer.java
deleted file mode 100644
index b89f5d1..0000000
--- a/src/org/apache/http/util/CharArrayBuffer.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/util/CharArrayBuffer.java $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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.util;
-
-import org.apache.http.protocol.HTTP;
-
-/**
- * A resizable char array.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @version $Revision: 496070 $
- * 
- * @since 4.0
- */
-public final class CharArrayBuffer  {
-    
-    private char[] buffer;
-    private int len;
-
-    public CharArrayBuffer(int capacity) {
-        super();
-        if (capacity < 0) {
-            throw new IllegalArgumentException("Buffer capacity may not be negative");
-        }
-        this.buffer = new char[capacity]; 
-    }
-
-    private void expand(int newlen) {
-        char newbuffer[] = new char[Math.max(this.buffer.length << 1, newlen)];
-        System.arraycopy(this.buffer, 0, newbuffer, 0, this.len);
-        this.buffer = newbuffer;
-    }
-    
-    public void append(final char[] b, int off, int len) {
-        if (b == null) {
-            return;
-        }
-        if ((off < 0) || (off > b.length) || (len < 0) ||
-                ((off + len) < 0) || ((off + len) > b.length)) {
-            throw new IndexOutOfBoundsException();
-        }
-        if (len == 0) {
-            return;
-        }
-        int newlen = this.len + len;
-        if (newlen > this.buffer.length) {
-            expand(newlen);
-        }
-        System.arraycopy(b, off, this.buffer, this.len, len);
-        this.len = newlen;
-    }
-    
-    public void append(String str) {
-        if (str == null) {
-            str = "null";
-        }
-        int strlen = str.length();
-        int newlen = this.len + strlen;
-        if (newlen > this.buffer.length) {
-            expand(newlen);
-        }
-        str.getChars(0, strlen, this.buffer, this.len);
-        this.len = newlen;
-    }
-
-    public void append(final CharArrayBuffer b, int off, int len) {
-        if (b == null) {
-            return;
-        }
-        append(b.buffer, off, len);
-    }
-        
-    public void append(final CharArrayBuffer b) {
-        if (b == null) {
-            return;
-        }
-        append(b.buffer,0, b.len);
-    }
-        
-    public void append(char ch) {
-        int newlen = this.len + 1;
-        if (newlen > this.buffer.length) {
-            expand(newlen);
-        }
-        this.buffer[this.len] = ch;
-        this.len = newlen;
-    }
-
-    public void append(final byte[] b, int off, int len) {
-        if (b == null) {
-            return;
-        }
-        if ((off < 0) || (off > b.length) || (len < 0) ||
-                ((off + len) < 0) || ((off + len) > b.length)) {
-            throw new IndexOutOfBoundsException();
-        }
-        if (len == 0) {
-            return;
-        }
-        int oldlen = this.len;
-        int newlen = oldlen + len;
-        if (newlen > this.buffer.length) {
-            expand(newlen);
-        }
-        for (int i1 = off, i2 = oldlen; i2 < newlen; i1++, i2++) {
-            int ch = b[i1]; 
-            if (ch < 0) {
-                ch = 256 + ch;
-            }
-            this.buffer[i2] = (char) ch;
-        }
-        this.len = newlen;
-    }
-    
-    public void append(final ByteArrayBuffer b, int off, int len) {
-        if (b == null) {
-            return;
-        }
-        append(b.buffer(), off, len);
-    }
-    
-    public void append(final Object obj) {
-        append(String.valueOf(obj));
-    }
-    
-    public void clear() {
-        this.len = 0;
-    }
-    
-    public char[] toCharArray() {
-        char[] b = new char[this.len]; 
-        if (this.len > 0) {
-            System.arraycopy(this.buffer, 0, b, 0, this.len);
-        }
-        return b;
-    }
-    
-    public char charAt(int i) {
-        return this.buffer[i];
-    }
-    
-    public char[] buffer() {
-        return this.buffer;
-    }
-    
-    public int capacity() {
-        return this.buffer.length;
-    }
-    
-    public int length() {
-        return this.len;
-    }
-
-    public void ensureCapacity(int required) {
-        int available = this.buffer.length - this.len;
-        if (required > available) {
-            expand(this.len + required);
-        }
-    }
-    
-    public void setLength(int len) {
-        if (len < 0 || len > this.buffer.length) {
-            throw new IndexOutOfBoundsException();
-        }
-        this.len = len;
-    }
-    
-    public boolean isEmpty() {
-        return this.len == 0; 
-    }
-    
-    public boolean isFull() {
-        return this.len == this.buffer.length; 
-    }
-    
-    public int indexOf(int ch, int beginIndex, int endIndex) {
-        if (beginIndex < 0) {
-            beginIndex = 0;
-        }
-        if (endIndex > this.len) {
-            endIndex = this.len;
-        }
-        if (beginIndex > endIndex) {
-            return -1;
-        }
-        for (int i = beginIndex; i < endIndex; i++) {
-            if (this.buffer[i] == ch) {
-                return i;
-            }
-        }
-        return -1;
-    }
-    
-    public int indexOf(int ch) {
-        return indexOf(ch, 0, this.len);
-    }
-
-    public String substring(int beginIndex, int endIndex) {
-        if (beginIndex < 0) {
-            throw new IndexOutOfBoundsException();
-        }
-        if (endIndex > this.len) {
-            throw new IndexOutOfBoundsException();
-        }
-        if (beginIndex > endIndex) {
-            throw new IndexOutOfBoundsException();
-        }
-        return new String(this.buffer, beginIndex, endIndex - beginIndex);
-    }
-    
-    public String substringTrimmed(int beginIndex, int endIndex) {
-        if (beginIndex < 0) {
-            throw new IndexOutOfBoundsException();
-        }
-        if (endIndex > this.len) {
-            throw new IndexOutOfBoundsException();
-        }
-        if (beginIndex > endIndex) {
-            throw new IndexOutOfBoundsException();
-        }
-        while (beginIndex < endIndex && HTTP.isWhitespace(this.buffer[beginIndex])) {
-            beginIndex++;
-        }
-        while (endIndex > beginIndex && HTTP.isWhitespace(this.buffer[endIndex - 1])) {
-            endIndex--;
-        }
-        return new String(this.buffer, beginIndex, endIndex - beginIndex);
-    }
-    
-    public String toString() {
-        return new String(this.buffer, 0, this.len);
-    }
-    
-}
diff --git a/src/org/apache/http/util/EncodingUtils.java b/src/org/apache/http/util/EncodingUtils.java
deleted file mode 100644
index a1b3f44..0000000
--- a/src/org/apache/http/util/EncodingUtils.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/util/EncodingUtils.java $
- * $Revision: 503413 $
- * $Date: 2007-02-04 06:22:14 -0800 (Sun, 04 Feb 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.util;
-
-import java.io.UnsupportedEncodingException;
-
-import org.apache.http.protocol.HTTP;
-
-/**
- * The home for utility methods that handle various encoding tasks.
- * 
- * @author Michael Becke
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public final class EncodingUtils {
-
-    /**
-     * Converts the byte array of HTTP content characters to a string. If
-     * the specified charset is not supported, default system encoding
-     * is used.
-     *
-     * @param data the byte array to be encoded
-     * @param offset the index of the first byte to encode
-     * @param length the number of bytes to encode 
-     * @param charset the desired character encoding
-     * @return The result of the conversion.
-     */
-    public static String getString(
-        final byte[] data, 
-        int offset, 
-        int length, 
-        String charset
-    ) {
-
-        if (data == null) {
-            throw new IllegalArgumentException("Parameter may not be null");
-        }
-
-        if (charset == null || charset.length() == 0) {
-            throw new IllegalArgumentException("charset may not be null or empty");
-        }
-
-        try {
-            return new String(data, offset, length, charset);
-        } catch (UnsupportedEncodingException e) {
-            return new String(data, offset, length);
-        }
-    }
-
-
-    /**
-     * Converts the byte array of HTTP content characters to a string. If
-     * the specified charset is not supported, default system encoding
-     * is used.
-     *
-     * @param data the byte array to be encoded
-     * @param charset the desired character encoding
-     * @return The result of the conversion.
-     */
-    public static String getString(final byte[] data, final String charset) {
-        if (data == null) {
-            throw new IllegalArgumentException("Parameter may not be null");
-        }
-        return getString(data, 0, data.length, charset);
-    }
-
-    /**
-     * Converts the specified string to a byte array.  If the charset is not supported the
-     * default system charset is used.
-     *
-     * @param data the string to be encoded
-     * @param charset the desired character encoding
-     * @return The resulting byte array.
-     */
-    public static byte[] getBytes(final String data, final String charset) {
-
-        if (data == null) {
-            throw new IllegalArgumentException("data may not be null");
-        }
-
-        if (charset == null || charset.length() == 0) {
-            throw new IllegalArgumentException("charset may not be null or empty");
-        }
-
-        try {
-            return data.getBytes(charset);
-        } catch (UnsupportedEncodingException e) {
-            return data.getBytes();
-        }
-    }    
-    
-    /**
-     * Converts the specified string to byte array of ASCII characters.
-     *
-     * @param data the string to be encoded
-     * @return The string as a byte array.
-     */
-    public static byte[] getAsciiBytes(final String data) {
-
-        if (data == null) {
-            throw new IllegalArgumentException("Parameter may not be null");
-        }
-
-        try {
-            return data.getBytes(HTTP.US_ASCII);
-        } catch (UnsupportedEncodingException e) {
-            throw new Error("HttpClient requires ASCII support");
-        }
-    }
-
-    /**
-     * Converts the byte array of ASCII characters to a string. This method is
-     * to be used when decoding content of HTTP elements (such as response
-     * headers)
-     *
-     * @param data the byte array to be encoded
-     * @param offset the index of the first byte to encode
-     * @param length the number of bytes to encode 
-     * @return The string representation of the byte array
-     */
-    public static String getAsciiString(final byte[] data, int offset, int length) {
-
-        if (data == null) {
-            throw new IllegalArgumentException("Parameter may not be null");
-        }
-
-        try {
-            return new String(data, offset, length, HTTP.US_ASCII);
-        } catch (UnsupportedEncodingException e) {
-            throw new Error("HttpClient requires ASCII support");
-        }
-    }
-
-    /**
-     * Converts the byte array of ASCII characters to a string. This method is
-     * to be used when decoding content of HTTP elements (such as response
-     * headers)
-     *
-     * @param data the byte array to be encoded
-     * @return The string representation of the byte array
-     */
-    public static String getAsciiString(final byte[] data) {
-        if (data == null) {
-            throw new IllegalArgumentException("Parameter may not be null");
-        }
-        return getAsciiString(data, 0, data.length);
-    }
-
-    /**
-     * This class should not be instantiated.
-     */
-    private EncodingUtils() {
-    }
-
-}
diff --git a/src/org/apache/http/util/EntityUtils.java b/src/org/apache/http/util/EntityUtils.java
deleted file mode 100644
index f9a7cf3..0000000
--- a/src/org/apache/http/util/EntityUtils.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/util/EntityUtils.java $
- * $Revision: 569637 $
- * $Date: 2007-08-25 00:36:59 -0700 (Sat, 25 Aug 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.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.HttpEntity;
-import org.apache.http.NameValuePair;
-import org.apache.http.ParseException;
-import org.apache.http.protocol.HTTP;
-
-/**
- * Static helpers for dealing with {@link HttpEntity entities}.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 569637 $
- * 
- * @since 4.0
- */
-public final class EntityUtils {
-
-    /** Disabled default constructor. */
-    private EntityUtils() {
-    }
-    
-    public static byte[] toByteArray(final HttpEntity entity) throws IOException {
-        if (entity == null) {
-            throw new IllegalArgumentException("HTTP entity may not be null");
-        }
-        InputStream instream = entity.getContent();
-        if (instream == null) {
-            return new byte[] {};
-        }
-        if (entity.getContentLength() > Integer.MAX_VALUE) {
-            throw new IllegalArgumentException("HTTP entity too large to be buffered in memory");
-        }
-        int i = (int)entity.getContentLength();
-        if (i < 0) {
-            i = 4096;
-        }
-        ByteArrayBuffer buffer = new ByteArrayBuffer(i);
-        try {
-            byte[] tmp = new byte[4096];
-            int l;
-            while((l = instream.read(tmp)) != -1) {
-                buffer.append(tmp, 0, l);
-            }
-        } finally {
-            instream.close();
-        }
-        return buffer.toByteArray();
-    }
-        
-    public static String getContentCharSet(final HttpEntity entity)
-        throws ParseException {
-
-        if (entity == null) {
-            throw new IllegalArgumentException("HTTP entity may not be null");
-        }
-        String charset = null;
-        if (entity.getContentType() != null) { 
-            HeaderElement values[] = entity.getContentType().getElements();
-            if (values.length > 0) {
-                NameValuePair param = values[0].getParameterByName("charset");
-                if (param != null) {
-                    charset = param.getValue();
-                }
-            }
-        }
-        return charset;
-    }
-
-    public static String toString(
-            final HttpEntity entity, final String defaultCharset) throws IOException, ParseException {
-        if (entity == null) {
-            throw new IllegalArgumentException("HTTP entity may not be null");
-        }
-        InputStream instream = entity.getContent();
-        if (instream == null) {
-            return "";
-        }
-        if (entity.getContentLength() > Integer.MAX_VALUE) {
-            throw new IllegalArgumentException("HTTP entity too large to be buffered in memory");
-        }
-        int i = (int)entity.getContentLength();
-        if (i < 0) {
-            i = 4096;
-        }
-        String charset = getContentCharSet(entity);
-        if (charset == null) {
-            charset = defaultCharset;
-        }
-        if (charset == null) {
-            charset = HTTP.DEFAULT_CONTENT_CHARSET;
-        }
-        Reader reader = new InputStreamReader(instream, charset);
-        CharArrayBuffer buffer = new CharArrayBuffer(i); 
-        try {
-            char[] tmp = new char[1024];
-            int l;
-            while((l = reader.read(tmp)) != -1) {
-                buffer.append(tmp, 0, l);
-            }
-        } finally {
-            reader.close();
-        }
-        return buffer.toString();
-    }
-
-    public static String toString(final HttpEntity entity)
-        throws IOException, ParseException {
-        return toString(entity, null);
-    }
-    
-}
diff --git a/src/org/apache/http/util/ExceptionUtils.java b/src/org/apache/http/util/ExceptionUtils.java
deleted file mode 100644
index c7fdccd..0000000
--- a/src/org/apache/http/util/ExceptionUtils.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/util/ExceptionUtils.java $
- * $Revision: 613003 $
- * $Date: 2008-01-17 15:00:42 -0800 (Thu, 17 Jan 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.util;
-
-import java.lang.reflect.Method;
-
-/**
- * The home for utility methods that handle various exception-related tasks.
- * 
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author <a href="mailto:laura@lwerner.org">Laura Werner</a>
- * 
- * @since 4.0
- */
-public final class ExceptionUtils {
-
-    /** A reference to Throwable's initCause method, or null if it's not there in this JVM */
-    static private final Method INIT_CAUSE_METHOD = getInitCauseMethod();
-
-    /**
-     * Returns a <code>Method<code> allowing access to
-     * {@link Throwable#initCause(Throwable) initCause} method of {@link Throwable},
-     * or <code>null</code> if the method
-     * does not exist.
-     * 
-     * @return A <code>Method<code> for <code>Throwable.initCause</code>, or
-     * <code>null</code> if unavailable.
-     */ 
-    static private Method getInitCauseMethod() {
-        try {
-            Class[] paramsClasses = new Class[] { Throwable.class };
-            return Throwable.class.getMethod("initCause", paramsClasses);
-        } catch (NoSuchMethodException e) {
-            return null;
-        }
-    }
-    
-    /** 
-     * If we're running on JDK 1.4 or later, initialize the cause for the given throwable.
-     * 
-     * @param  throwable The throwable.
-     * @param  cause     The cause of the throwable.
-     */
-    public static void initCause(Throwable throwable, Throwable cause) {
-        if (INIT_CAUSE_METHOD != null) {
-            try {
-                INIT_CAUSE_METHOD.invoke(throwable, new Object[] { cause });
-            } catch (Exception e) {
-                // Well, with no logging, the only option is to munch the exception
-            }
-        }
-    }
-
-    private ExceptionUtils() {
-    }
-    
-}
diff --git a/src/org/apache/http/util/LangUtils.java b/src/org/apache/http/util/LangUtils.java
deleted file mode 100644
index a1dee8f..0000000
--- a/src/org/apache/http/util/LangUtils.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/util/LangUtils.java $
- * $Revision: 503413 $
- * $Date: 2007-02-04 06:22:14 -0800 (Sun, 04 Feb 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.util;
-
-/**
- * A set of utility methods to help produce consistent
- * {@link Object#equals equals} and {@link Object#hashCode hashCode} methods.
- *  
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * 
- * @since 4.0
- */
-public final class LangUtils {
-    
-    public static final int HASH_SEED = 17;
-    public static final int HASH_OFFSET = 37;
-
-    /** Disabled default constructor. */
-    private LangUtils() {
-    }
-
-    public static int hashCode(final int seed, final int hashcode) {
-        return seed * HASH_OFFSET + hashcode;
-    }
-
-    public static int hashCode(final int seed, final boolean b) {
-        return hashCode(seed, b ? 1 : 0);
-    }
-    
-    public static int hashCode(final int seed, final Object obj) {
-        return hashCode(seed, obj != null ? obj.hashCode() : 0);
-    }
-    
-    public static boolean equals(final Object obj1, final Object obj2) {
-        return obj1 == null ? obj2 == null : obj1.equals(obj2);
-    }
-
-    public static boolean equals(final Object[] a1, final Object[] a2) {
-        if (a1 == null) {
-            if (a2 == null) {
-                return true;
-            } else {
-                return false;
-            }
-        } else {
-            if (a2 != null && a1.length == a2.length) {
-                for (int i = 0; i < a1.length; i++) {
-                    if (!equals(a1[i], a2[i])) {
-                        return false;
-                    }
-                }
-                return true;
-            } else {
-                return false;
-            }
-        }
-    }
-    
-}
diff --git a/src/org/apache/http/util/VersionInfo.java b/src/org/apache/http/util/VersionInfo.java
deleted file mode 100644
index 0c95594..0000000
--- a/src/org/apache/http/util/VersionInfo.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/util/VersionInfo.java $
- * $Revision: 554888 $
- * $Date: 2007-07-10 02:46:36 -0700 (Tue, 10 Jul 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.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
-import java.util.Properties;
-import java.util.ArrayList;
-
-
-/**
- * Provides access to version information for HTTP components.
- * Instances of this class provide version information for a single module
- * or informal unit, as explained
- * <a href="http://wiki.apache.org/jakarta-httpclient/HttpComponents">here</a>.
- * Static methods are used to extract version information from property
- * files that are automatically packaged with HTTP component release JARs.
- * <br/>
- * All available version information is provided in strings, where
- * the string format is informal and subject to change without notice.
- * Version information is provided for debugging output and interpretation
- * by humans, not for automated processing in applications.
- *
- * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
- * @author and others
- */
-public class VersionInfo {
-
-    /** A string constant for unavailable information. */
-    public final static String UNAVAILABLE = "UNAVAILABLE";
-
-    /** The filename of the version information files. */
-    public final static String VERSION_PROPERTY_FILE = "version.properties";
-
-    // the property names
-    public final static String PROPERTY_MODULE    = "info.module";
-    public final static String PROPERTY_RELEASE   = "info.release";
-    public final static String PROPERTY_TIMESTAMP = "info.timestamp";
-
-
-    /** The package that contains the version information. */
-    private final String infoPackage;
-
-    /** The module from the version info. */
-    private final String infoModule;
-
-    /** The release from the version info. */
-    private final String infoRelease;
-
-    /** The timestamp from the version info. */
-    private final String infoTimestamp;
-
-    /** The classloader from which the version info was obtained. */
-    private final String infoClassloader;
-
-
-    /**
-     * Instantiates version information.
-     *
-     * @param pckg      the package
-     * @param module    the module, or <code>null</code>
-     * @param release   the release, or <code>null</code>
-     * @param time      the build time, or <code>null</code>
-     * @param clsldr    the class loader, or <code>null</code>
-     */
-    protected VersionInfo(String pckg, String module,
-                          String release, String time, String clsldr) {
-        if (pckg == null) {
-            throw new IllegalArgumentException
-                ("Package identifier must not be null.");
-        }
-
-        infoPackage     = pckg;
-        infoModule      = (module  != null) ? module  : UNAVAILABLE;
-        infoRelease     = (release != null) ? release : UNAVAILABLE;
-        infoTimestamp   = (time    != null) ? time    : UNAVAILABLE;
-        infoClassloader = (clsldr  != null) ? clsldr  : UNAVAILABLE;
-    }
-
-
-    /**
-     * Obtains the package name.
-     * The package name identifies the module or informal unit.
-     *
-     * @return  the package name, never <code>null</code>
-     */
-    public final String getPackage() {
-        return infoPackage;
-    }
-
-    /**
-     * Obtains the name of the versioned module or informal unit.
-     * This data is read from the version information for the package.
-     *
-     * @return  the module name, never <code>null</code>
-     */
-    public final String getModule() {
-        return infoModule;
-    }
-
-    /**
-     * Obtains the release of the versioned module or informal unit.
-     * This data is read from the version information for the package.
-     *
-     * @return  the release version, never <code>null</code>
-     */
-    public final String getRelease() {
-        return infoRelease;
-    }
-
-    /**
-     * Obtains the timestamp of the versioned module or informal unit.
-     * This data is read from the version information for the package.
-     *
-     * @return  the timestamp, never <code>null</code>
-     */
-    public final String getTimestamp() {
-        return infoTimestamp;
-    }
-
-    /**
-     * Obtains the classloader used to read the version information.
-     * This is just the <code>toString</code> output of the classloader,
-     * since the version information should not keep a reference to
-     * the classloader itself. That could prevent garbage collection.
-     *
-     * @return  the classloader description, never <code>null</code>
-     */
-    public final String getClassloader() {
-        return infoClassloader;
-    }
-
-
-    /**
-     * Provides the version information in human-readable format.
-     *
-     * @return  a string holding this version information
-     */
-    public String toString() {
-        StringBuffer sb = new StringBuffer
-            (20 + infoPackage.length() + infoModule.length() +
-             infoRelease.length() + infoTimestamp.length() +
-             infoClassloader.length());
-
-        sb.append("VersionInfo(")
-            .append(infoPackage).append(':').append(infoModule);
-
-        // If version info is missing, a single "UNAVAILABLE" for the module
-        // is sufficient. Everything else just clutters the output.
-        if (!UNAVAILABLE.equals(infoRelease))
-            sb.append(':').append(infoRelease);
-        if (!UNAVAILABLE.equals(infoTimestamp))
-            sb.append(':').append(infoTimestamp);
-
-        sb.append(')');
-
-        if (!UNAVAILABLE.equals(infoClassloader))
-            sb.append('@').append(infoClassloader);
-
-        return sb.toString();
-    }
-
-
-    /**
-     * Loads version information for a list of packages.
-     *
-     * @param pckgs     the packages for which to load version info
-     * @param clsldr    the classloader to load from, or
-     *                  <code>null</code> for the thread context classloader
-     *
-     * @return  the version information for all packages found,
-     *          never <code>null</code>
-     */
-    public final static VersionInfo[] loadVersionInfo(String[] pckgs,
-                                                      ClassLoader clsldr) {
-        if (pckgs == null) {
-            throw new IllegalArgumentException
-                ("Package identifier list must not be null.");
-        }
-
-        ArrayList vil = new ArrayList(pckgs.length);
-        for (int i=0; i<pckgs.length; i++) {
-            VersionInfo vi = loadVersionInfo(pckgs[i], clsldr);
-            if (vi != null)
-                vil.add(vi);
-        }
-
-        return (VersionInfo[]) vil.toArray(new VersionInfo[vil.size()]);
-    }
-
-
-    /**
-     * Loads version information for a package.
-     *
-     * @param pckg      the package for which to load version information,
-     *                  for example "org.apache.http".
-     *                  The package name should NOT end with a dot.
-     * @param clsldr    the classloader to load from, or
-     *                  <code>null</code> for the thread context classloader
-     *
-     * @return  the version information for the argument package, or
-     *          <code>null</code> if not available
-     */
-    public final static VersionInfo loadVersionInfo(final String pckg,
-                                                    ClassLoader clsldr) {
-        if (pckg == null) {
-            throw new IllegalArgumentException
-                ("Package identifier must not be null.");
-        }
-
-        if (clsldr == null)
-            clsldr = Thread.currentThread().getContextClassLoader();
-
-        Properties vip = null; // version info properties, if available
-        try {
-            // org.apache.http      becomes
-            // org/apache/http/version.properties
-            InputStream is = clsldr.getResourceAsStream
-                (pckg.replace('.', '/') + "/" + VERSION_PROPERTY_FILE);
-            if (is != null) {
-                try {
-                    Properties props = new Properties();
-                    props.load(is);
-                    vip = props;
-                } finally {
-                    is.close();
-                }
-            }
-        } catch (IOException ex) {
-            // shamelessly munch this exception
-        }
-
-        VersionInfo result = null;
-        if (vip != null)
-            result = fromMap(pckg, vip, clsldr);
-
-        return result;
-    }
-
-
-    /**
-     * Instantiates version information from properties.
-     *
-     * @param pckg      the package for the version information
-     * @param info      the map from string keys to string values,
-     *                  for example {@link java.util.Properties}
-     * @param clsldr    the classloader, or <code>null</code>
-     *
-     * @return  the version information
-     */
-    protected final static VersionInfo fromMap(String pckg, Map info,
-                                               ClassLoader clsldr) {
-        if (pckg == null) {
-            throw new IllegalArgumentException
-                ("Package identifier must not be null.");
-        }
-
-        String module = null;
-        String release = null;
-        String timestamp = null;
-
-        if (info != null) {
-            module = (String) info.get(PROPERTY_MODULE);
-            if ((module != null) && (module.length() < 1))
-                module = null;
-
-            release = (String) info.get(PROPERTY_RELEASE);
-            if ((release != null) && ((release.length() < 1) ||
-                                      (release.equals("${pom.version}"))))
-                release = null;
-
-            timestamp = (String) info.get(PROPERTY_TIMESTAMP);
-            if ((timestamp != null) &&
-                ((timestamp.length() < 1) ||
-                 (timestamp.equals("${mvn.timestamp}")))
-                )
-                timestamp = null;
-        } // if info
-
-        String clsldrstr = null;
-        if (clsldr != null)
-            clsldrstr = clsldr.toString();
-
-        return new VersionInfo(pckg, module, release, timestamp, clsldrstr);
-    }
-
-} // class VersionInfo
diff --git a/src/org/apache/http/util/package.html b/src/org/apache/http/util/package.html
deleted file mode 100644
index 19d97b3..0000000
--- a/src/org/apache/http/util/package.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/util/package.html $
- * $Revision: 496070 $
- * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 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>
-Mostly utility classes with static helper methods for various purposes.
-
-The helper classes for resizable
-{@link org.apache.http.util.ByteArrayBuffer byte} and
-{@link org.apache.http.util.CharArrayBuffer char} arrays
-do not fall into this category.
-
-</body>
-</html>