If an Item had more then one DOI delete(Context, DSpaceObject) didn't
delete all of them.
If supports(null) or supports("") was called a IllegalArgumentException
was thrown. No it returns false as expected.
We introduced the cache to get better performance while reserving and
registering DOIs. To be able to process new submissions independently
from the status of the registration agency API we introduced a cron job
that registers and reserves doi. It is not important if the cronjob is
some seconds faster or not. The cache brought some new problems and
makes the code more complicated. As it is not needed any more I removed
it.
Booleans returned on reserving, registering, updating metadata and
deleting of a doi where used to signal a problem with metadata
convertion. This should be done with the enhanced Exception handling.
DOIIdentifierProvider and DataCiteConnector will throw more
IdentifierExceptions and less other Exceptions, like RuntimeException,
IllegalArgumentException or IllegalStateExceptions.
IdentifierServiceImpl catches IdentifierException but not the other
ones. If IdentifierServicesImpl catches an IdentiferException it may go
on with the next IdentifierProvider and not the complete user action
will stop.
The cache don't need to be purged manually. It will be purged
automatically after some time. The cache holding time can be configured
the default is set to 120 sec.
Cleanedup code to eleminate code duplication: Added a method to send
HTTP requests and to parse the response into a DataCiteResponse object.
The request speficie methods creates the request and uses the new
message to send them to Datacite.
Refactored the method to send get requests to DataCite so it can be used
for the metadata and the doi api.
Implemented a method to send a post request to the doi api.
Renamed DOIDataCiteIdentifierProvider into DOIIdentifierProvider.
Added interface org.dspace.identifier.doi.DOIConnector to be able to
support different registration agencies.
Moved spring configuration into
dspace/config/spring/api/identifier-service.xml.
Began development of org.dspace.identifier.doi.DataCiteConnector.