-
Notifications
You must be signed in to change notification settings - Fork 501
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DANS/Local PermaLink PID Provider #8674
DANS/Local PermaLink PID Provider #8674
Conversation
GDCC/8605-add-archival-status
Note the difference is that the dataset version was not doing a check for the id at the remote service, just a local check. It now does both as was the case for files.
As before the methods for DataFiles/Datasets differed in whether there's a remote service check done which should always be included. Also removed unused datasetIdentifier variable/setter.
left most new GlobalId(String) calls, just put in mechanism to call PidProviders in turn and updated just one Pids API call to test it.
Issues found:
|
3 should be fixed - there were a couple places where the change from getGlobalIdAsString() -> getGlobalId().asString() wasn't checking for a possible null for files. The stacktrace above should have caused the ORE export to fail. |
needed to generate the dataset PID now.
What this PR does / why we need it: Refactors PID classes and adds a new PermaLink Provider for catalog/replica use
Which issue(s) this PR closes:
This is related to #4106 and related issues, but does not close them.
Closes #
Special notes for your reviewer:
The main purpose of the PR is to add a new 'PermaLink' provider that can provide a URI for resolution (via the Citation servlet) and that looks significantly different from a DOI (no required internal slashes, no required 10.xxxx in initial authority). The class could at some point be extended to use an external resolver (nominally the Citation servlet is separate from the app already, but it does not deal with minting PIDs or keeping any metadata.)
This PR takes significant steps toward making PID Providers plugable and allowing multiple DOI accounts to manage different authority/shoulder combinations. Key changes include:
Other changes include:
Things not done that would be needed to handle different or authority/shoulder-specific Providers:
Optional things that could be done:
Suggestions on how to test this:
New functionality: Configure the (misnamed) DOIProvider setting to "PERMA", change authority/shoulder to random values, e.g. "dansx","abc", and verify that datasets/files can be created, published, and that the citation URL shown resolves to the dataset/file specified.
Regression: Since the changes are to the overall PID mechanism, broad testing with DataCite/Handles/EZID, with various PID options (random, by stored procedure, dependent/independent) and other processes (harvesting, import/migrate APIs) could all be tested. Given that most of the changes are refactoring, I think if things still work with DataCite, they should still work with the others, so more thorough checking with DataCite and simple tests that EZID/Handles still work for basic create/publish could be sufficient.
Does this PR introduce a user interface change? If mockups are available, please link/include them here:
Is there a release notes update needed for this change?:
Could announce the Perma provider. The other refactoring probably isn't very visible.
Additional documentation:
Will add info on configuring Perma as an alternative to DataCite/EZID DOIs, Handles and Fake.