Search in sources :

Example 6 with LockedRecordException

use of org.orcid.listener.exception.LockedRecordException in project ORCID-Source by ORCID.

the class LastModifiedMessageProcessorTest method recordLocked20LockedExceptionTest.

@Test
public void recordLocked20LockedExceptionTest() throws LockedRecordException, JsonProcessingException, AmazonClientException, JAXBException, DeprecatedRecordException {
    when(mock_orcid12ApiClient.fetchPublicProfile(Matchers.anyString())).thenReturn(null);
    when(mock_orcid20ApiClient.fetchPublicProfile(Matchers.anyString())).thenThrow(new LockedRecordException(new OrcidError()));
    String orcid = "0000-0000-0000-0000";
    execute(orcid);
    verify(mock_exceptionHandler, times(1)).handle20Exception(Matchers.any(), Matchers.any());
}
Also used : LockedRecordException(org.orcid.listener.exception.LockedRecordException) OrcidError(org.orcid.jaxb.model.error_v2.OrcidError) Test(org.junit.Test)

Example 7 with LockedRecordException

use of org.orcid.listener.exception.LockedRecordException in project ORCID-Source by ORCID.

the class LastModifiedMessageProcessorTest method recrodStatusMarkAsSentForLockedRecordException12Test.

@Test
public void recrodStatusMarkAsSentForLockedRecordException12Test() throws LockedRecordException, DeprecatedRecordException {
    when(mock_orcid12ApiClient.fetchPublicProfile(Matchers.anyString())).thenThrow(new LockedRecordException(new OrcidMessage()));
    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);
}
Also used : LockedRecordException(org.orcid.listener.exception.LockedRecordException) OrcidMessage(org.orcid.jaxb.model.message.OrcidMessage) Test(org.junit.Test)

Example 8 with LockedRecordException

use of org.orcid.listener.exception.LockedRecordException in project ORCID-Source by ORCID.

the class LastModifiedMessageProcessorTest method recordLockedExceptionTest.

@Test
public void recordLockedExceptionTest() throws LockedRecordException, JsonProcessingException, AmazonClientException, JAXBException, DeprecatedRecordException {
    when(mock_orcid12ApiClient.fetchPublicProfile(Matchers.anyString())).thenThrow(new LockedRecordException(new OrcidMessage()));
    when(mock_orcid20ApiClient.fetchPublicProfile(Matchers.anyString())).thenReturn(null);
    String orcid = "0000-0000-0000-0000";
    execute(orcid);
    verify(mock_exceptionHandler, times(1)).handle12LockedRecordException(Matchers.any(), Matchers.any());
}
Also used : LockedRecordException(org.orcid.listener.exception.LockedRecordException) OrcidMessage(org.orcid.jaxb.model.message.OrcidMessage) Test(org.junit.Test)

Example 9 with LockedRecordException

use of org.orcid.listener.exception.LockedRecordException in project ORCID-Source by ORCID.

the class Orcid12APIClient method fetchPublicProfile.

/**
     * Fetches the profile from the ORCID public API v1.2
     * 
     * @param orcid
     * @return
     * @throws LockedRecordException
     */
public OrcidMessage fetchPublicProfile(String orcid) throws LockedRecordException, DeprecatedRecordException {
    WebResource webResource = jerseyClient.resource(baseUri).path(orcid + "/orcid-profile");
    webResource.getProperties().put(ClientConfig.PROPERTY_FOLLOW_REDIRECTS, false);
    Builder builder = webResource.accept(MediaType.APPLICATION_XML).header("Authorization", "Bearer " + accessToken);
    ClientResponse response = builder.get(ClientResponse.class);
    if (response.getStatus() != 200) {
        switch(response.getStatus()) {
            case 301:
                OrcidDeprecated orcidDeprecated = response.getEntity(OrcidDeprecated.class);
                throw new DeprecatedRecordException(orcidDeprecated);
            case 409:
                OrcidMessage orcidMessage = response.getEntity(OrcidMessage.class);
                throw new LockedRecordException(orcidMessage);
            default:
                LOG.error("Unable to fetch public record " + orcid + " on API 1.2 HTTP error code: " + response.getStatus());
                throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
        }
    }
    return response.getEntity(OrcidMessage.class);
}
Also used : ClientResponse(com.sun.jersey.api.client.ClientResponse) LockedRecordException(org.orcid.listener.exception.LockedRecordException) OrcidDeprecated(org.orcid.jaxb.model.message.OrcidDeprecated) DeprecatedRecordException(org.orcid.listener.exception.DeprecatedRecordException) Builder(com.sun.jersey.api.client.WebResource.Builder) OrcidMessage(org.orcid.jaxb.model.message.OrcidMessage) WebResource(com.sun.jersey.api.client.WebResource)

Aggregations

LockedRecordException (org.orcid.listener.exception.LockedRecordException)9 OrcidMessage (org.orcid.jaxb.model.message.OrcidMessage)5 DeprecatedRecordException (org.orcid.listener.exception.DeprecatedRecordException)5 Test (org.junit.Test)4 JAXBException (javax.xml.bind.JAXBException)3 OrcidError (org.orcid.jaxb.model.error_v2.OrcidError)3 AmazonClientException (com.amazonaws.AmazonClientException)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)2 ClientResponse (com.sun.jersey.api.client.ClientResponse)2 WebResource (com.sun.jersey.api.client.WebResource)2 Builder (com.sun.jersey.api.client.WebResource.Builder)2 ArrayList (java.util.ArrayList)1 OrcidDeprecated (org.orcid.jaxb.model.message.OrcidDeprecated)1 FundingGroup (org.orcid.jaxb.model.record.summary_v2.FundingGroup)1 FundingSummary (org.orcid.jaxb.model.record.summary_v2.FundingSummary)1 Funding (org.orcid.jaxb.model.record_v2.Funding)1 Record (org.orcid.jaxb.model.record_v2.Record)1