Folks
How about making this utility class the first contribution to our yet
non-existent org.apache.commons.httpclient.contrib package?
Ideas, suggestions, objections?
Cheers
Oleg

On Thu, 2003-03-13 at 14:47, [EMAIL PROTECTED] wrote:
> 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]
> 


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

Reply via email to