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.
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.