use of org.orcid.listener.exception.DeprecatedRecordException in project ORCID-Source by ORCID.
the class SolrMessageProcessor method updateSolrIndex.
private void updateSolrIndex(String orcid) {
LOG.info("Updating using Record " + orcid + " in SOLR index");
if (!isSolrIndexingEnabled) {
LOG.info("Solr indexing is disabled");
return;
}
try {
org.orcid.jaxb.model.record_v2.Record record = orcid20ApiClient.fetchPublicProfile(orcid);
//get detailed funding so we can discover org name and id
List<Funding> fundings = new ArrayList<Funding>();
if (record.getActivitiesSummary() != null && record.getActivitiesSummary().getFundings() != null && record.getActivitiesSummary().getFundings().getFundingGroup() != null) {
for (FundingGroup group : record.getActivitiesSummary().getFundings().getFundingGroup()) {
if (group.getFundingSummary() != null) {
for (FundingSummary f : group.getFundingSummary()) {
fundings.add(orcid20ApiClient.fetchFunding(record.getOrcidIdentifier().getPath(), f.getPutCode()));
}
}
}
}
solrUpdater.persist(recordConv.convert(record, fundings));
recordStatusManager.markAsSent(orcid, AvailableBroker.SOLR);
} catch (LockedRecordException lre) {
LOG.error("Record " + orcid + " is locked");
solrUpdater.updateSolrIndexForLockedOrDeprecatedRecord(orcid, solrUpdater.retrieveLastModified(orcid));
recordStatusManager.markAsSent(orcid, AvailableBroker.SOLR);
} catch (DeprecatedRecordException dre) {
LOG.error("Record " + orcid + " is deprecated");
solrUpdater.updateSolrIndexForLockedOrDeprecatedRecord(orcid, solrUpdater.retrieveLastModified(orcid));
recordStatusManager.markAsSent(orcid, AvailableBroker.SOLR);
} catch (Exception e) {
LOG.error("Unable to fetch record " + orcid + " for SOLR");
LOG.error(e.getMessage(), e);
recordStatusManager.markAsFailed(orcid, AvailableBroker.SOLR);
}
}
use of org.orcid.listener.exception.DeprecatedRecordException in project ORCID-Source by ORCID.
the class LastModifiedMessageProcessorTest method recordLocked20DeprecatedExceptionTest.
@Test
public void recordLocked20DeprecatedExceptionTest() throws LockedRecordException, JsonProcessingException, AmazonClientException, JAXBException, DeprecatedRecordException {
when(mock_orcid12ApiClient.fetchPublicProfile(Matchers.anyString())).thenReturn(null);
when(mock_orcid20ApiClient.fetchPublicProfile(Matchers.anyString())).thenThrow(new DeprecatedRecordException(new OrcidDeprecated()));
String orcid = "0000-0000-0000-0000";
execute(orcid);
verify(mock_exceptionHandler, times(1)).handle20Exception(Matchers.any(), Matchers.any());
}
use of org.orcid.listener.exception.DeprecatedRecordException in project ORCID-Source by ORCID.
the class LastModifiedMessageProcessorTest method recrodStatusMarkAsSentForDeprecatedRecordException12Test.
@Test
public void recrodStatusMarkAsSentForDeprecatedRecordException12Test() throws LockedRecordException, DeprecatedRecordException {
when(mock_orcid12ApiClient.fetchPublicProfile(Matchers.anyString())).thenThrow(new DeprecatedRecordException(new OrcidDeprecated()));
when(mock_orcid20ApiClient.fetchPublicProfile(Matchers.anyString())).thenReturn(null);
String orcid = "0000-0000-0000-0000";
execute(orcid);
verify(mock_recordStatusManager, times(1)).markAsSent(orcid, AvailableBroker.DUMP_STATUS_1_2_API);
verify(mock_recordStatusManager, times(0)).markAsFailed(orcid, AvailableBroker.DUMP_STATUS_1_2_API);
verify(mock_recordStatusManager, times(0)).markAsSent(orcid, AvailableBroker.DUMP_STATUS_2_0_API);
verify(mock_recordStatusManager, times(0)).markAsFailed(orcid, AvailableBroker.DUMP_STATUS_2_0_API);
}
use of org.orcid.listener.exception.DeprecatedRecordException in project ORCID-Source by ORCID.
the class LastModifiedMessageProcessorTest method deprecatedRecordExceptionTest.
@Test
public void deprecatedRecordExceptionTest() throws LockedRecordException, JsonProcessingException, AmazonClientException, JAXBException, DeprecatedRecordException {
when(mock_orcid12ApiClient.fetchPublicProfile(Matchers.anyString())).thenThrow(new DeprecatedRecordException(new OrcidDeprecated()));
when(mock_orcid20ApiClient.fetchPublicProfile(Matchers.anyString())).thenReturn(null);
String orcid = "0000-0000-0000-0000";
execute(orcid);
verify(mock_exceptionHandler, times(1)).handle12DeprecatedRecordException(Matchers.any(), Matchers.any());
}
use of org.orcid.listener.exception.DeprecatedRecordException in project ORCID-Source by ORCID.
the class S3MessageProcessor method update_1_2_API.
private void update_1_2_API(String orcid) {
if (is12IndexingEnabled) {
try {
OrcidMessage profile = orcid12ApiClient.fetchPublicProfile(orcid);
// Update API 1.2
if (profile != null) {
s3Updater.updateS3(orcid, profile);
recordStatusManager.markAsSent(orcid, AvailableBroker.DUMP_STATUS_1_2_API);
}
} catch (LockedRecordException | DeprecatedRecordException e) {
try {
if (e instanceof LockedRecordException) {
LOG.error("Record " + orcid + " is locked");
exceptionHandler.handle12LockedRecordException(orcid, ((LockedRecordException) e).getOrcidMessage());
} else {
LOG.error("Record " + orcid + " is deprecated");
exceptionHandler.handle12DeprecatedRecordException(orcid, ((DeprecatedRecordException) e).getOrcidDeprecated());
}
recordStatusManager.markAsSent(orcid, AvailableBroker.DUMP_STATUS_1_2_API);
} catch (JsonProcessingException | AmazonClientException | JAXBException e1) {
LOG.error("Unable to handle LockedRecordException for record " + orcid, e1);
recordStatusManager.markAsFailed(orcid, AvailableBroker.DUMP_STATUS_1_2_API);
}
} catch (Exception e) {
// something else went wrong fetching record from ORCID and
// threw a
// runtime exception
LOG.error("Unable to fetch record " + orcid + " for 1.2 API");
LOG.error(e.getMessage(), e);
recordStatusManager.markAsFailed(orcid, AvailableBroker.DUMP_STATUS_1_2_API);
}
}
}
Aggregations