Author: antoine
Date: Fri Dec 1 00:56:45 2006
New Revision: 481189
URL: http://svn.apache.org/viewvc?view=rev&rev=481189
Log:
HttpClient 3.0 support, Bugzilla 35213, contributed by Eric Van
Added:
jakarta/slide/trunk/contributors.xml
Modified:
jakarta/slide/trunk/WHATSNEW
jakarta/slide/trunk/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/HttpRequestBodyMethodBase.java
Modified: jakarta/slide/trunk/WHATSNEW
URL:
http://svn.apache.org/viewvc/jakarta/slide/trunk/WHATSNEW?view=diff&rev=481189&r1=481188&r2=481189
==============================================================================
--- jakarta/slide/trunk/WHATSNEW (original)
+++ jakarta/slide/trunk/WHATSNEW Fri Dec 1 00:56:45 2006
@@ -15,5 +15,8 @@
Other changes:
--------------
+* Patch allowing Slide to work with httpclient version 3.0
+ Bugzilla 35213.
+
Added: jakarta/slide/trunk/contributors.xml
URL:
http://svn.apache.org/viewvc/jakarta/slide/trunk/contributors.xml?view=auto&rev=481189
==============================================================================
--- jakarta/slide/trunk/contributors.xml (added)
+++ jakarta/slide/trunk/contributors.xml Fri Dec 1 00:56:45 2006
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE contributors
+[
+<!ELEMENT name (first?, middle?, last)>
+<!ELEMENT contributors (introduction, name+)>
+<!ELEMENT first (#PCDATA)>
+<!ELEMENT introduction (#PCDATA)>
+<!ELEMENT middle (#PCDATA)>
+<!ELEMENT last (#PCDATA)>
+]
+>
+
+<contributors>
+ <introduction>
+ These are some of the many people who have helped Slide become so successful.
+ </introduction>
+ <name>
+ <first>Eric</first>
+ <last>Van</last>
+ </name>
+</contributors>
+
Modified:
jakarta/slide/trunk/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/HttpRequestBodyMethodBase.java
URL:
http://svn.apache.org/viewvc/jakarta/slide/trunk/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/HttpRequestBodyMethodBase.java?view=diff&rev=481189&r1=481188&r2=481189
==============================================================================
---
jakarta/slide/trunk/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/HttpRequestBodyMethodBase.java
(original)
+++
jakarta/slide/trunk/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/HttpRequestBodyMethodBase.java
Fri Dec 1 00:56:45 2006
@@ -29,6 +29,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.lang.reflect.Method;
import java.net.URL;
import org.apache.commons.httpclient.ChunkedOutputStream;
import org.apache.commons.httpclient.HttpConnection;
@@ -48,6 +49,8 @@
public abstract class HttpRequestBodyMethodBase extends HttpMethodBase {
+ private static Method chunkedOutputStreamFinish;
+
// ----------------------------------------------------------- Constructors
@@ -191,7 +194,7 @@
protected boolean writeRequestBody(HttpState state, HttpConnection conn)
throws IOException, HttpException {
OutputStream out = conn.getRequestOutputStream();
- if (isHttp11() && (null == getRequestHeader("Content-Length"))) {
+ if (isHttp11() && getRequestContentLength() == -1) {
out = new ChunkedOutputStream(out);
}
@@ -215,10 +218,41 @@
}
out.write(buffer, 0, nb);
}
+
+ // httpclient 3.0 support
+ if(out instanceof ChunkedOutputStream){
+ try{
+ if(chunkedOutputStreamFinish == null){
+ chunkedOutputStreamFinish = out.getClass().getMethod("finish",
null);
+ }
+ chunkedOutputStreamFinish.invoke(out, null);
+ }catch(NoSuchMethodException nsme){
+ // must be httpclient 2.0.x
+ }catch(Exception e){
+ throw new HttpException(e.getClass() + ": " + e.getMessage());
+ }
+ }
out.flush();
return true;
}
+ /**
+ * In httpclient 3.0, setting Content-Length was moved to
+ * EntityEnclosingMethod class.
+ */
+ protected void addRequestHeaders(HttpState state, HttpConnection conn)
+ throws IOException, HttpException {
+ super.addRequestHeaders(state, conn);
+ if ((getRequestHeader("content-length") == null)
+ && (getRequestHeader("Transfer-Encoding") == null)) {
+ long len = getRequestContentLength();
+ if (len >= 0) {
+ addRequestHeader("Content-Length", String.valueOf(len));
+ } else if ((len == -1) && isHttp11()) {
+ addRequestHeader("Transfer-Encoding", "chunked");
+ }
+ }
+ }
/**
* Override the method of [EMAIL PROTECTED] HttpMethodBase}
* to return the appropriate content length.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]