POST to a URL which does not exist

POST-ing to a URL which does not exist will now create the destination as a ghost node, and create a child node inside of it. In Fedora 5, doing so would result in a 404 response.

Fedora 6 behavior

curl -XPOST http://localhost:8080/rest/doesnotexist/

HTTP/1.1 201 Created
Location: http://localhost:8080/rest/doesnotexist/f6149604-7bdd-41a1-8a06-7a8bd4b071c6

Fedora 5 behavior

curl -XPOST http://localhost:8080/rest/doesnotexist/

HTTP/1.1 404 Not Found

Memento Changes

  1. Mementos can no longer be created by specifying a timestamp, and are always created on the current resource state at the current time.
  2. Mementos cannot be deleted.

Conditional PUT using If-Match Changes

  1. Etags are calculated differently, and can no longer be relied upon for use with the If-Match header for PUT requests.
  2. To perform a conditional PUT that works for both Fedora 5 and 6, use X-State-Token with X-If-State-Token instead.

Modifications to the same Resource in Separate Transactions

  1. If the same resource is modified in two different concurrent transactions, the first modification will succeed, but the second modification will fail with a 409 conflict with the following message: "Cannot update info:fedora/<id> because it is being updated by another transaction." This holds true for containers and binaries.
    1. In Fedora 5, both modifications would succeed, and whichever transaction committed last would be the final state of the object

GET Prefer return=minimal removed

It was determined that this option was not listed in either the Fedora or the LDP specification, so it was removed. To reproduce the previous behavior, you can use the following header:

Prefer: return=representation; include=""; omit=""