Sorry for cross posting, I initially targeted the wrong group.
I tried to analyse the code base related to handles and DOI's. This could serve as some concrete input to discus during the community call planned for May 10.
I examined the DatasetCommand classes and service beans that seemed relevant to me leving resolving out of scope. As the DOI beans looked quite similar I tried to create and apply an interface for these two classes, this research exercise resulted in my
observations in the following overview.
Command classes:
CreateDatasetCommand
UpdateDatasetCommand
PublishDatasetCommand
DeleteDatasetCommand
DestroyDatasetCommand
UpdateTargetDatasetTargetUrlCommand
Beans:
DOIEZIdServiceBean
DOIDataCiteServiceBean
HandlenetServiceBean
None of the three beans are called by DeleteDatasetCommand nor DestroyDatasetCommand
I would expect the DOI and HandleNet beans being used by the dataset commands in a similar way, yet:
* DOIEZIdServiceBean lacks the method alreadyExists, HandlenetServiceBean has a completely different API
* DOIEZIdServiceBean is not called for by UpdateDatasetCommand nor UpdateTargetDatasetTargetUrlCommand
* HandlenetServiceBean is only called by UpdateTargetDatasetTargetUrlCommand
I suppose other subtle changes (especially error handling) are different evolutions after copy-pasting.
It looks like handles are only supported for changes to the target URL. I did not research whether the DOIEZIdServiceBean could implement the alreadyExists method somehow.
As handles should be persistent we (DANS) require to let the handle point to something after (deletion? and) destruction of a dataset. That something should at least produce the original citation, the reason for deletion, who requested it, gave permission
and when it was destroyed.