Here's the code:
================

package at.vtg.httpclient;
// or whatever you want ;-)

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpMethodBase;
import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.URIException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * In this class are only methods to copy a HttpMethod: PUT, GET, POST,
DELETE, TRACE, ...
 *
 * @author Thomas Mathis
 * @version $Revision: 1.4 $
 */
public class HttpMethodUtil {

    private static Log log = LogFactory.getLog(HttpMethodUtil.class);

    private static void copyEntityEnclosingMethod( EntityEnclosingMethod m,
EntityEnclosingMethod copy )
            throws java.io.IOException
    {
        log.debug( "copy EntityEnclosingMethod" );

        copy.setRequestBody( m.getRequestBodyAsString() );
        copy.setUseExpectHeader(m.getUseExpectHeader());
    }

    private static void copyHttpMethodBase(HttpMethodBase m, HttpMethodBase
copy) {
        log.debug( "copy HttpMethodBase" );

        if ( m.getHostConfiguration() != null ) {
            copy.setHostConfiguration( new HostConfiguration(
m.getHostConfiguration() ) );
        }
        copy.setHttp11(m.isHttp11());
        copy.setStrictMode(m.isStrictMode());
    }

    /**
     * Clones a HttpMethod. <br>
     * <b>Attention:</b> You have to clone a method before it has been
executed, because the URI
     * can change if followRedirects is set to true.
     *
     * @param m the HttpMethod to clone
     *
     * @return the cloned HttpMethod, null if the HttpMethod could not be
instantiated
     *
     * @throws java.io.IOException if the request body couldn't be read
     */
    public static HttpMethod clone(HttpMethod m) throws java.io.IOException
{
        log.debug( "clone HttpMethod" );
        HttpMethod copy = null;

        // copy the HttpMethod
        try {
            copy = (HttpMethod) m.getClass().newInstance();
        } catch (InstantiationException iEx) {
        } catch (IllegalAccessException iaEx) {
        }
        if ( copy == null ) {
            return null;
        }
        copy.setDoAuthentication(m.getDoAuthentication());
        copy.setFollowRedirects(m.getFollowRedirects());
        copy.setPath( m.getPath() );
        copy.setQueryString(m.getQueryString());

        // clone the headers
        Header[] h = m.getRequestHeaders();
        int size = (h == null) ? 0 : h.length;

        for (int i = 0; i < size; i++) {
            copy.setRequestHeader(new Header(h[i].getName(),
h[i].getValue()));
        }

        copy.setStrictMode(m.isStrictMode());

        if ( m instanceof HttpMethodBase ) {
            copyHttpMethodBase( (HttpMethodBase) m, (HttpMethodBase) copy );
        }
        if ( m instanceof EntityEnclosingMethod ) {
            copyEntityEnclosingMethod( (EntityEnclosingMethod) m,
(EntityEnclosingMethod) copy );
        }

        return copy;
    }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to