mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
Update CreateMissingIdentifiers to better identify when CanonicalHandles provider is enabled. Update CreateMissingIdentifiersIT to verify that we are accurately resetting to our default IdentifierProvider
(cherry picked from commit 2385c13f2d
)
This commit is contained in:

committed by
github-actions[bot]
![github-actions[bot]](/assets/img/avatar_default.png)
parent
22511a17b6
commit
41207d5dee
@@ -10,6 +10,7 @@ package org.dspace.ctask.general;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -25,7 +26,6 @@ import org.dspace.identifier.IdentifierProvider;
|
||||
import org.dspace.identifier.VersionedHandleIdentifierProviderWithCanonicalHandles;
|
||||
import org.dspace.identifier.factory.IdentifierServiceFactory;
|
||||
import org.dspace.identifier.service.IdentifierService;
|
||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||
|
||||
/**
|
||||
* Ensure that an object has all of the identifiers that it should, minting them
|
||||
@@ -45,20 +45,6 @@ public class CreateMissingIdentifiers
|
||||
return Curator.CURATE_SKIP;
|
||||
}
|
||||
|
||||
// XXX Temporary escape when an incompatible provider is configured.
|
||||
// XXX Remove this when the provider is fixed.
|
||||
boolean compatible = DSpaceServicesFactory
|
||||
.getInstance()
|
||||
.getServiceManager()
|
||||
.getServiceByName(
|
||||
VersionedHandleIdentifierProviderWithCanonicalHandles.class.getCanonicalName(),
|
||||
IdentifierProvider.class) == null;
|
||||
if (!compatible) {
|
||||
setResult("This task is not compatible with VersionedHandleIdentifierProviderWithCanonicalHandles");
|
||||
return Curator.CURATE_ERROR;
|
||||
}
|
||||
// XXX End of escape
|
||||
|
||||
String typeText = Constants.typeText[dso.getType()];
|
||||
|
||||
// Get a Context
|
||||
@@ -75,6 +61,18 @@ public class CreateMissingIdentifiers
|
||||
.getInstance()
|
||||
.getIdentifierService();
|
||||
|
||||
// XXX Temporary escape when an incompatible provider is configured.
|
||||
// XXX Remove this when the provider is fixed.
|
||||
List<IdentifierProvider> providerList = identifierService.getProviders();
|
||||
boolean compatible =
|
||||
providerList.stream().noneMatch(p -> p instanceof VersionedHandleIdentifierProviderWithCanonicalHandles);
|
||||
|
||||
if (!compatible) {
|
||||
setResult("This task is not compatible with VersionedHandleIdentifierProviderWithCanonicalHandles");
|
||||
return Curator.CURATE_ERROR;
|
||||
}
|
||||
// XXX End of escape
|
||||
|
||||
// Register any missing identifiers.
|
||||
try {
|
||||
identifierService.register(context, dso);
|
||||
|
@@ -57,6 +57,11 @@ public class IdentifierServiceImpl implements IdentifierService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IdentifierProvider> getProviders() {
|
||||
return this.providers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reserves identifiers for the item
|
||||
*
|
||||
|
@@ -19,6 +19,7 @@ import org.dspace.identifier.Identifier;
|
||||
import org.dspace.identifier.IdentifierException;
|
||||
import org.dspace.identifier.IdentifierNotFoundException;
|
||||
import org.dspace.identifier.IdentifierNotResolvableException;
|
||||
import org.dspace.identifier.IdentifierProvider;
|
||||
|
||||
/**
|
||||
* @author Fabio Bolognesi (fabio at atmire dot com)
|
||||
@@ -194,4 +195,9 @@ public interface IdentifierService {
|
||||
void delete(Context context, DSpaceObject dso, String identifier)
|
||||
throws AuthorizeException, SQLException, IdentifierException;
|
||||
|
||||
/**
|
||||
* Get List of currently enabled IdentifierProviders
|
||||
* @return List of enabled IdentifierProvider objects.
|
||||
*/
|
||||
List<IdentifierProvider> getProviders();
|
||||
}
|
||||
|
@@ -60,14 +60,7 @@ public class CreateMissingIdentifiersIT
|
||||
.build();
|
||||
|
||||
/*
|
||||
* Curate with default Handle Provider
|
||||
*/
|
||||
curator.curate(context, item);
|
||||
int status = curator.getStatus(TASK_NAME);
|
||||
assertEquals("Curation should succeed", Curator.CURATE_SUCCESS, status);
|
||||
|
||||
/*
|
||||
* Now install an incompatible provider to make the task fail.
|
||||
* First, install an incompatible provider to make the task fail.
|
||||
*/
|
||||
registerProvider(VersionedHandleIdentifierProviderWithCanonicalHandles.class);
|
||||
|
||||
@@ -81,5 +74,13 @@ public class CreateMissingIdentifiersIT
|
||||
unregisterProvider(VersionedHandleIdentifierProviderWithCanonicalHandles.class);
|
||||
// Re-register the default provider (for later tests which may depend on it)
|
||||
registerProvider(VersionedHandleIdentifierProvider.class);
|
||||
|
||||
/*
|
||||
* Now, verify curate with default Handle Provider works
|
||||
* (and that our re-registration of the default provider above was successful)
|
||||
*/
|
||||
curator.curate(context, item);
|
||||
int status = curator.getStatus(TASK_NAME);
|
||||
assertEquals("Curation should succeed", Curator.CURATE_SUCCESS, status);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user