Add support for PUT /api/projects/<project>

This request replaces the attributes and extensions of 
the target project with those provided in the request.
Note that the implementation of this request does not
strictly conform to the usual semantics of a PUT request,
which is to replace the target resource completely, but
performs a selective update with respect to some attributes
(symbolic name, UUID) and the extensions of the target
project:

* The symbolic name of the target project will only be
  overwritten, if it is not blank in the request entity.
  (projects always must have a non-blank symbolic name!)
* The UUID of the target project is never changed even if
  present in the request entity.
* All other properties of the target project will be
  overwritten with the value provided in the request entity,
  or reset to the initial value, if no value is provided in
  the request entity.
* extensions of the target project will only be overwritten
  selectively, i.e. if the request entity provides a certain
  extension then the corresponding extensions of the target
  project will be replaced. If the target project does not
  have the extension yet, it will be added. Extensions that
  are present in the target project but not in the request
  entity will remain with the target project.

For updating individual extensions PUT requests to the
path /api/projects/<project>/extensions/<ext> should
be used. In order to remove obsolete extensions, explicit
DELETE requests for these extensions must be raised.

Change-Id: I30012f493724c4f877121b1d6488f89a23142229
Signed-off-by: Michael Ochmann <michael.ochmann@sap.com>
1 file changed