add TooManyRequests exception, update gradle
This commit is contained in:
parent
9aeb4e17e5
commit
a7c7573592
7 changed files with 32 additions and 8 deletions
|
@ -1,6 +1,6 @@
|
||||||
group = org.xbib
|
group = org.xbib
|
||||||
name = oai
|
name = oai
|
||||||
version = 1.2.0
|
version = 1.2.1
|
||||||
|
|
||||||
xbib-content.version = 1.3.0
|
xbib-content.version = 1.3.0
|
||||||
xbib-marc.version = 1.1.0
|
xbib-marc.version = 1.1.0
|
||||||
|
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,6 +1,5 @@
|
||||||
#Wed Feb 07 09:29:06 CET 2018
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-all.zip
|
|
||||||
|
|
|
@ -135,6 +135,15 @@ public abstract class AbstractOAIRequest implements OAIRequest {
|
||||||
return retry;
|
return retry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "[request:metadataPrefix=" + getMetadataPrefix()
|
||||||
|
+ ",set=" + getSet()
|
||||||
|
+ ",from=" + getFrom()
|
||||||
|
+ ",until=" + getUntil()
|
||||||
|
+ "]";
|
||||||
|
}
|
||||||
|
|
||||||
class GetRecord extends AbstractOAIRequest {
|
class GetRecord extends AbstractOAIRequest {
|
||||||
|
|
||||||
public GetRecord() {
|
public GetRecord() {
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package org.xbib.oai.client;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class TooManyRequestsException extends IOException {
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ import org.xbib.content.xml.transform.TransformerURIResolver;
|
||||||
import org.xbib.content.xml.util.XMLUtil;
|
import org.xbib.content.xml.util.XMLUtil;
|
||||||
import org.xbib.helianthus.common.http.AggregatedHttpMessage;
|
import org.xbib.helianthus.common.http.AggregatedHttpMessage;
|
||||||
import org.xbib.oai.client.AbstractOAIResponse;
|
import org.xbib.oai.client.AbstractOAIResponse;
|
||||||
|
import org.xbib.oai.client.TooManyRequestsException;
|
||||||
import org.xbib.oai.exceptions.BadArgumentException;
|
import org.xbib.oai.exceptions.BadArgumentException;
|
||||||
import org.xbib.oai.exceptions.BadResumptionTokenException;
|
import org.xbib.oai.exceptions.BadResumptionTokenException;
|
||||||
import org.xbib.oai.exceptions.NoRecordsMatchException;
|
import org.xbib.oai.exceptions.NoRecordsMatchException;
|
||||||
|
@ -109,6 +110,9 @@ public class ListRecordsResponse extends AbstractOAIResponse {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (status == 429) {
|
||||||
|
throw new TooManyRequestsException();
|
||||||
|
}
|
||||||
if (status != 200) {
|
if (status != 200) {
|
||||||
throw new IOException("status = " + status + " response = " + content);
|
throw new IOException("status = " + status + " response = " + content);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,6 @@ import java.util.concurrent.atomic.AtomicLong;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Ignore
|
|
||||||
public class DOAJClientTest {
|
public class DOAJClientTest {
|
||||||
|
|
||||||
private static final Logger logger = LogManager.getLogger(DOAJClientTest.class.getName());
|
private static final Logger logger = LogManager.getLogger(DOAJClientTest.class.getName());
|
||||||
|
@ -64,21 +63,23 @@ public class DOAJClientTest {
|
||||||
DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.of("GMT")) : null;
|
DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.of("GMT")) : null;
|
||||||
ListRecordsRequest listRecordsRequest = oaiClient.newListRecordsRequest();
|
ListRecordsRequest listRecordsRequest = oaiClient.newListRecordsRequest();
|
||||||
listRecordsRequest.setDateTimeFormatter(dateTimeFormatter);
|
listRecordsRequest.setDateTimeFormatter(dateTimeFormatter);
|
||||||
listRecordsRequest.setFrom(Instant.parse("2017-01-01T00:00:00Z"));
|
listRecordsRequest.setFrom(Instant.parse("2008-01-01T00:00:00Z"));
|
||||||
listRecordsRequest.setUntil(Instant.parse("2018-01-01T00:00:00Z"));
|
listRecordsRequest.setUntil(Instant.parse("2018-01-01T00:00:00Z"));
|
||||||
listRecordsRequest.setMetadataPrefix("oai_dc");
|
listRecordsRequest.setMetadataPrefix("oai_dc");
|
||||||
Handler handler = new Handler();
|
Handler handler = new Handler();
|
||||||
File file = File.createTempFile("doaj.", ".xml");
|
File file = File.createTempFile("doaj.", ".xml");
|
||||||
file.deleteOnExit();
|
file.deleteOnExit();
|
||||||
FileWriter fileWriter = new FileWriter(file);
|
FileWriter fileWriter = new FileWriter(file);
|
||||||
|
ListRecordsResponse listRecordsResponse = null;
|
||||||
while (listRecordsRequest != null) {
|
while (listRecordsRequest != null) {
|
||||||
try {
|
try {
|
||||||
ListRecordsResponse listRecordsResponse = new ListRecordsResponse(listRecordsRequest);
|
logger.debug("request = {}", listRecordsRequest);
|
||||||
|
listRecordsResponse = new ListRecordsResponse(listRecordsRequest);
|
||||||
logger.debug("response = {}", response.headers());
|
logger.debug("response = {}", response.headers());
|
||||||
listRecordsRequest.addHandler(handler);
|
listRecordsRequest.addHandler(handler);
|
||||||
client = oaiClient.getHttpClient();
|
client = oaiClient.getHttpClient();
|
||||||
response = client.execute(HttpHeaders.of(HttpMethod.GET, listRecordsRequest.getPath())
|
response = client.execute(HttpHeaders.of(HttpMethod.GET, listRecordsRequest.getPath())
|
||||||
.set(HttpHeaderNames.ACCEPT, "utf-8")).aggregate().get();
|
.set(HttpHeaderNames.ACCEPT, "utf-8")).aggregate().get();
|
||||||
// follow a maximum of 10 HTTP redirects
|
// follow a maximum of 10 HTTP redirects
|
||||||
max = 10;
|
max = 10;
|
||||||
while (response.followUrl() != null && max-- > 0) {
|
while (response.followUrl() != null && max-- > 0) {
|
||||||
|
@ -89,6 +90,10 @@ public class DOAJClientTest {
|
||||||
}
|
}
|
||||||
listRecordsResponse.receivedResponse(response, fileWriter);
|
listRecordsResponse.receivedResponse(response, fileWriter);
|
||||||
listRecordsRequest = oaiClient.resume(listRecordsRequest, listRecordsResponse.getResumptionToken());
|
listRecordsRequest = oaiClient.resume(listRecordsRequest, listRecordsResponse.getResumptionToken());
|
||||||
|
} catch (TooManyRequestsException e) {
|
||||||
|
logger.error(e.getMessage(), e);
|
||||||
|
Thread.sleep(10000L);
|
||||||
|
listRecordsRequest = oaiClient.resume(listRecordsRequest, listRecordsResponse.getResumptionToken());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
listRecordsRequest = null;
|
listRecordsRequest = null;
|
||||||
|
|
Loading…
Reference in a new issue