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]