You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-user@jakarta.apache.org by Warwick Burrows <wa...@e2open.com> on 2004/08/16 22:34:29 UTC
RE: clientlib: LockMethod doesn't retrieve the locktoken, if stat
us is SC_CREATED (patch)
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:masonjm@apache.org]
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; XythosSessionID1=[B@13868be--1727435885; $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 (michael@GanttProject)</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
(michael@GanttProject)</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; XythosSessionID1=[B@13868be--1727435885; $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: slide-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-user-help@jakarta.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org
Re: clientlib: LockMethod doesn't retrieve the locktoken, if stat
us is SC_CREATED (patch)
Posted by James Mason <ma...@apache.org>.
Umm, I think so. You've confused me :).
I've updated the code in CVS to remove the second status check. This
should resolve the problem Michael was having.
-James
Warwick Burrows wrote:
> 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:masonjm@apache.org]
> 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; XythosSessionID1=[B@13868be--1727435885; $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 (michael@GanttProject)</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
>
> (michael@GanttProject)</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; XythosSessionID1=[B@13868be--1727435885; $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: slide-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: slide-user-help@jakarta.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-user-help@jakarta.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-user-help@jakarta.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org