We have a requirement to generate DOIs for new submissions to our ETD collections, but not to other collections in the same repository. To do this, I propose a mechanism to tag a given Collection with a list of desired IdentifierProvider classes. IdentifierService clients would provide the service a callback object which would return true/false for a given provider, and if false, the provider would be skipped. To address situations like ours, a "default" provider list can also be defined, so that the exceptional Collections can have augmented as well as diminished sets of providers applied – the default list can be less than the full set of providers, and a Collection can then permit providers not in the default set (but known to the IdentifierService).
This will require changing several method signatures in IdentifierService. The cascading changes are not extensive.