As per request by pnbecker and tdonahue, reworking supports() method to
be more restrictive in its handle validation while also still allowing
support for multi-instance environments with derived handles. Now, if a
handle does not match one of the currently known DSpace handle provider
formats, it will be rejected.
Updates the supports() method across the three relevant handle provider
classes to check if the identifier a) matches a valid handle starting
pattern or b) does not match a DOI starting pattern and does contain a
slash but is not an arbitrary URL.
Add an additional supported handle format to the supports() method of
VersionedHandleIdentifierProvider to make behavior more in-line with the
DS 5.4 code.
The previous VersionedHandleIdentifierProvider introduced "canonical
handles". The idea was to keep the current handle always linked to the
newest version of an item. The downside is that this limits the
versioning to version changes that do not derogate the citation of the
items (e.g. no changes in pagination of any bitstreams). This can be
used as a special feature to manually track metadata changes. In this
case administrators might want to show only the newest version publicly
and hide older versions.
Another way to use a versioning feature is to create new versions of an
item which may even change existing citations. The old versions should
be kept with there former handles so that citing a handle with a page
number still results in the same citation. A newer version should get a
new handle.
This commit introduces a VersionedHandleIdentifierProvider that does not
change the link between a handle and an item. A new version of an item
gets a new handle. This behaviour ensures that every version is always
citable even if a newer version will be release at any time.
The current VersionedHandleIdentifierProvider introduced "canonical
handles". The idea is to keep the current handle always linked to the
newest version of an item. The downside is that this limits the
versioning to version changes that do not derogate the citation of an
item (e.g. no changes in pagination of any bitstreams). This can be
used as a special feature to manually track metadata changes. In this
case administrators might want to show only the newest version publicly
and hide older versions.
Another way to use a versioning feature is to create new versions of an
item which may even change existing citations. The older versions should
be kept with there former handles so that citing a handle with a page
number still results in the same citation. A newer version should get a
new handle.
This commit just moves the old VersionedHandleIdentifierProvider to a
new class so it still can be used if necessary. A new
VersionedHandleIdentifierProvider will be provided within the next
commit.