James,

Are you saying that you modified the fix that Michael applied below and
applied the new changes to CVS?

Warwick


-----Original Message-----
From: James Mason [mailto:[EMAIL PROTECTED] 
Sent: Monday, August 16, 2004 1:15 PM
To: Slide Users Mailing List
Subject: Re: clientlib: LockMethod doesn't retrieve the locktoken, if status
is SC_CREATED (patch)


I've removed the extra check of the status. It seemed redundant since 
all of those response (with the possible exception of 201) should be 
valid. I couldn't tell from the spec what a server is supposed to return 
when locking a null resource, but 201 seems reasonable. In either case 
the second check didn't seem to be doing any good.

Thanks for tracking this down.

-James

Michael H�usler wrote:
> Hello,
> 
> Problem:
> My code always tries to acquire a lock before invoking the PUT method.
> This works well, when overwriting existing resources. It does not work, 
> when creating new resources on Xythos WFS and (according to user 
> reports) on Microsoft IIS. With these servers the PUT method fails and a 
> locked empty file (0 bytes) remains on the server. For details see the 
> attached conversation.
> 
> Cause:
> Xythos WFS returns a "201 Created" when requesting a LOCK on a
> non-existing resource, but in org.apache.webdav.lib.methods.LockMethod 
> the method parseResponse ignores the response, if the status is not SC_OK.
> 
> Solution:
> The following change seems to do the trick:
> 
> Index: 
> clientlib/src/java/org/apache/webdav/lib/methods/LockMethod.java
> ===================================================================
> RCS file: 
>
/home/cvspublic/jakarta-slide/webdavclient/clientlib/src/java/org/apache/web
dav/lib/methods/LockMethod.java,v 
> 
> retrieving revision 1.6
> diff -u -r1.6 LockMethod.java
> --- clientlib/src/java/org/apache/webdav/lib/methods/LockMethod.java    
> 2 Aug 2004 15:45:48 -0000    1.6
> +++ clientlib/src/java/org/apache/webdav/lib/methods/LockMethod.java    
> 16 Aug 2004 14:40:56 -0000
> @@ -523,7 +523,8 @@
> 
>              parseXMLResponse(input);
> 
> -            if (status == HttpStatus.SC_OK) {
> +            if (status == HttpStatus.SC_OK ||
> +                status == HttpStatus.SC_CREATED) {
>                  NodeList list =
getResponseDocument().getDocumentElement()
>                        .getElementsByTagNameNS("DAV:", "locktoken");
> 
> 
> Disclaimer:
> I do not have the slightest idea, why this second check on the status 
> is
> in the code anyway.
> 
> 
> Best regards,
> Michael
> 
> 
> ----------------------------------------------------------------------
> --
> 
> ### Locking the resource...
> 
> LOCK /akatose/test.xml HTTP/1.1
> Authorization: Basic YWthdG9zZTpka3cxcHZrcw==
> Content-Type: text/xml; charset=utf-8
> User-Agent: Jakarta Commons-HttpClient/2.0final
> Host: www.sharemation.com
> Cookie: $Version=0; [EMAIL PROTECTED]; $Path=/
> Content-Length: 253
> Depth: infinity
> Timeout: Second-14400
> 
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <DAV:lockinfo 
> xmlns:DAV="DAV:"><DAV:lockscope><DAV:exclusive></DAV:exclusive></DAV:l
> ockscope><DAV:locktype><DAV:write></DAV:write></DAV:locktype><DAV:owne
> r>akatose ([EMAIL PROTECTED])</DAV:owner></DAV:lockinfo>
> 
> HTTP/1.1 201 Created
> Lock-Token: 
> <opaquelocktoken:www.sharemation.com-LockTokenfiles:170777>
> Date: Sun, 15 Aug 2004 13:55:05 GMT
> Content-Type: text/xml;charset=UTF-8
> Content-Length: 422
> Server: Apache-Coyote/1.1
> 
> <?xml version="1.0" encoding="utf-8" ?>
> <D:prop xmlns:D="DAV:">
> <D:lockdiscovery> 
> <D:activelock><D:locktype><D:write/></D:locktype><D:lockscope><D:exclu
> sive/></D:lockscope><D:depth>0</D:depth><D:owner>akatose
([EMAIL PROTECTED])</D:owner><D:timeout>Second-14400</D:timeout><D:lockto
ken><D:href>opaquelocktoken:www.sharemation.com-LockTokenfiles:170777</D:hre
f></D:locktoken></D:activelock>
> </D:lockdiscovery>
> </D:prop>
> 
> ### PUT fails ...
> 
> PUT /akatose/test.xml HTTP/1.1
> Content-Length: 5041
> Authorization: Basic YWthdG9zZTpka3cxcHZrcw==
> User-Agent: Jakarta Commons-HttpClient/2.0final
> Host: www.sharemation.com
> Cookie: $Version=0; [EMAIL PROTECTED]; $Path=/
> 
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <project>
> ...
> </project>
> 
> 
> HTTP/1.1 423 Locked
> Cache-Control: no-cache
> Pragma: no-cache
> Date: Sun, 15 Aug 2004 13:55:06 GMT
> Content-Type: text/html;charset=UTF-8
> Content-Length: 170
> Server: Apache-Coyote/1.1
> 
> <html><title>Error 423</title><body>
> Error: 423
> <p><p>Resource locked. If header expected with lock token.  Resource 
> name = /akatose/test.xml</p></p> </body></html>
> 
> 
> ----------------------------------------------------------------------
> --
> 
> ---------------------------------------------------------------------
> 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]

Reply via email to