It looks like a fine submission to me. I think your package name suggestion is a good one. Perhaps a different class name, though. I'm thinking HttpMethodCloner.
-Elric.
Oleg Kalnichevski wrote:
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]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]