[1] [DFN[[RUBYB[ロックされた空の資源]@en[locked empty resource]]]]は、
[[資源]]が存在しない [[URL]] を[[ロック]]した時に作成される空の[[資源]]です。

* 仕様書

[REFS[
- [6] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-6>
- [7] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-7.3>
- [40] '''[CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-9.10>'''
- [3] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#appendix-D>
]REFS]

* 鯖の動作

[14] [[写像]]がない [[URL]] を[[ロック]]した場合、空の[[資源]]を新たに作らなければ[['''なりません''']] [SRC[>>40, >>6, >>7]]。

[16] この資源は空の[[資源]] (「locked empty resource」 [SRC[>>7]]) で、次の条件を満たすものです。
[FIG(list)[
- [17] [[コレクション]]でない[[資源]]でなければなりません [SRC[>>7]]。
- [18] [CODE(HTTP)@en[[[Content-Type:]]]] や [CODE(HTTP)@en[[[Content-Language:]]]]
は既定値を使うか、空の値とします [SRC[>>7]]。
- [20] 読み取り、削除、移動、複製その他通常の[[コレクション]]でない[[資源]]のように扱えます [SRC[>>7]]。
- [65] [CODE(HTTP)@en[[[GET]]]] すると [CODE(HTTP)[[[204]]]] または長さ0の
[CODE(HTTP)[[[200]]]] の応答を返します [SRC[>>40]]。
- [26] [CODE(HTTP)@en[[[PUT]]]] により更新できます [SRC[>>7]]。
- [21] 親[[コレクション]]の[[メンバー]]となります [SRC[>>7, >>40]]。
- [22] [[ロック]]が破棄された時に消滅する[['''べきではありません''']] [SRC[>>7]]。
- [25] [CODE(URI)[[[DAV:getcontentlanguage]]]] その他指定されていない[[特性]]の値を持ちません
[SRC[>>7]]。
- [27] [[コレクション]]に変換しては[['''なりません''']] [SRC[>>7]]。
- [28] [CODE(URI)[[[DAV:lockdiscovery]]]] や [CODE(URI)[[[DAV:supportedlock]]]]
の[[特性]]の値を持たなければ[['''なりません''']] [SRC[>>7]]。
]FIG]

;; [15] [[コレクション]]を作る [CODE(HTTP)@en[[[MKCOL]]]] [[メソッド]]は既存の[[資源]]を上書きしないので、
[[lost update問題]]は置きません [SRC[>>7]]。 

[31] [[鯖]]は、 [[RFC 2518]] との互換性のため、空の[[資源]]でなく
[[LNR]] (Lock-Null Resource) を実装しても構いません [SRC[>>7]]。

;; [[LNR]] 参照。

[29] 空の[[資源]]を作成した場合の[[応答]]は、 [CODE(HTTP)[[[201]]]] でなければ[['''なりません''']] [SRC[>>7]]。
[[応答]]には [CODE(URI)[[[DAV:lockdiscovery]]]] [[特性]]を含める必要があります [SRC[>>7]]。

* クライアント

[12] [[資源]]への[[写像]]が無い [[URL]] に [CODE(HTTP)@en[[[LOCK]]]]
[[要求]]を送信することにより、名前 ([[URL]]) を予約できます。
これにより[[資源]]の作成時の [[lost update問題]]を回避できます。 [SRC[>>7]]

;; [13] なお、これ以外に [CODE(HTTP)@en[[[If-None-Match:]]]] [[ヘッダー]]を使っても回避できます [SRC[>>7]]。

[30] [[クライアント]]は[[応答]]の後すぐに [CODE(HTTP)@en[[[PUT]]]] や
[CODE(HTTP)@en[[[PROPPATCH]]]] で[[ロック]]した[[資源]]を更新することが期待されています [SRC[>>7]]。

[2] [[鯖]]は[[ロックされた空の資源]]ではなく [[LNR]] を作成するかもしれません。
[[クライアント]]は[[ロックされた空の資源]]も [[LNR]] も扱えなければ[['''なりません''']]
[SRC[>>3]]。

;; [[LNR]] を参照。