diff --git a/solidify-oai-model/src/main/java/ch/unige/solidify/OAIProperties.java b/solidify-oai-model/src/main/java/ch/unige/solidify/OAIProperties.java index c0d20292495a24345d7606dcf521c05636e6ac4e..38cc63c1816c14c7706a1290afcfc7816e3910c8 100644 --- a/solidify-oai-model/src/main/java/ch/unige/solidify/OAIProperties.java +++ b/solidify-oai-model/src/main/java/ch/unige/solidify/OAIProperties.java @@ -30,6 +30,7 @@ import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "solidify.oai-pmh") public class OAIProperties { private int pageSize = 100; + private int tokenLifeTimeMinutes = 5; public int getPageSize() { return this.pageSize; @@ -39,4 +40,12 @@ public class OAIProperties { this.pageSize = pageSize; } + public int getTokenLifeTimeMinutes() { + return this.tokenLifeTimeMinutes; + } + + public void setTokenLifeTimeMinutes(int tokenLifeTimeMinutes) { + this.tokenLifeTimeMinutes = tokenLifeTimeMinutes; + } + } diff --git a/solidify-oai-model/src/main/java/ch/unige/solidify/model/oai/OAIToken.java b/solidify-oai-model/src/main/java/ch/unige/solidify/model/oai/OAIToken.java index 97965dda204ff4e479a7df4694fa9c7271962ecb..0791e946cace9ba9327fb6168668575f834ae42c 100644 --- a/solidify-oai-model/src/main/java/ch/unige/solidify/model/oai/OAIToken.java +++ b/solidify-oai-model/src/main/java/ch/unige/solidify/model/oai/OAIToken.java @@ -50,17 +50,17 @@ public class OAIToken { public OAIToken() { this.pageable = PageRequest.of(0, RestCollectionPage.DEFAULT_SIZE_PAGE); - this.setExpirationDate(); + this.setExpirationDate(5); } - public OAIToken(int oaiPmhPageSize) { + public OAIToken(int oaiPmhPageSize, int oaiPmhTokenLifeTime) { this.pageable = PageRequest.of(0, oaiPmhPageSize); - this.setExpirationDate(); + this.setExpirationDate(oaiPmhTokenLifeTime); } - public OAIToken(int oaiPmhPageSize, Sort sort) { + public OAIToken(int oaiPmhPageSize, int oaiPmhTokenLifeTime, Sort sort) { this.pageable = PageRequest.of(0, oaiPmhPageSize, sort); - this.setExpirationDate(); + this.setExpirationDate(oaiPmhTokenLifeTime); } public BigInteger getCurrentItems() { @@ -79,9 +79,9 @@ public class OAIToken { return this.pageable; } - public ResumptionTokenType getToken(long totalItems, long previousItems) { + public ResumptionTokenType getToken(long totalItems, long previousItems, int oaiPmhTokenLifeTime) { final ResumptionTokenType resumptionToken = new ResumptionTokenType(); - this.setExpirationDate(); + this.setExpirationDate(oaiPmhTokenLifeTime); this.setTotalItems(BigInteger.valueOf(totalItems)); this.setCurrentItems(BigInteger.valueOf(previousItems)); resumptionToken.setCompleteListSize(this.getTotalItems()); @@ -155,8 +155,8 @@ public class OAIToken { return params; } - private void setExpirationDate() { - this.expirationDate = OffsetDateTime.now(ZoneOffset.UTC).plusMinutes(5); + private void setExpirationDate(int lifeTimeMinutes) { + this.expirationDate = OffsetDateTime.now(ZoneOffset.UTC).plusMinutes(lifeTimeMinutes); } private void setParameters(String parameters) { diff --git a/solidify-oai-pmh/src/main/java/ch/unige/solidify/service/OAIService.java b/solidify-oai-pmh/src/main/java/ch/unige/solidify/service/OAIService.java index 6dc2644982a0545231511afe714c271324429cff..a998c620e2c46e2ae24d1baf047bbe4f87cce593 100644 --- a/solidify-oai-pmh/src/main/java/ch/unige/solidify/service/OAIService.java +++ b/solidify-oai-pmh/src/main/java/ch/unige/solidify/service/OAIService.java @@ -96,6 +96,7 @@ public class OAIService { private List<Class<?>> xmlClasses = new ArrayList<>(Arrays.asList(OAIPMHtype.class, OaiDcType.class, OaiIdentifierType.class, Html.class)); private final int oaiPmhPageSize; + private final int oaiPmhTokenLifeTime; private final ObjectFactory oaiDcFactory = new ObjectFactory(); // OAI Objects @@ -118,6 +119,7 @@ public class OAIService { OAIMetadataService metadataService) { this.oaiRepositoryInfo = oaiRepositoryInfo; this.oaiPmhPageSize = oaiProperties.getPageSize(); + this.oaiPmhTokenLifeTime = oaiProperties.getTokenLifeTimeMinutes(); this.oaiMetadataPrefixService = oaiMetadataPrefixService; this.oaiSetService = oaiSetService; this.searchService = searchService; @@ -249,7 +251,8 @@ public class OAIService { idList.getHeader().add(this.getIdentifier(oaiRecord)); } if (collection.getPage().hasNext()) { - idList.setResumptionToken(oaiToken.getToken(collection.getPage().getTotalItems(), collection.getPage().getPreviousItems())); + idList.setResumptionToken( + oaiToken.getToken(collection.getPage().getTotalItems(), collection.getPage().getPreviousItems(), this.oaiPmhTokenLifeTime)); } return idList; } @@ -299,7 +302,8 @@ public class OAIService { } if (collection.getPage().hasNext()) { - recList.setResumptionToken(oaiToken.getToken(collection.getPage().getTotalItems(), collection.getPage().getPreviousItems())); + recList.setResumptionToken( + oaiToken.getToken(collection.getPage().getTotalItems(), collection.getPage().getPreviousItems(), this.oaiPmhTokenLifeTime)); } return recList; } @@ -309,7 +313,7 @@ public class OAIService { /* * Pagination may be given by an URL token */ - final OAIToken oaiToken = new OAIToken(this.oaiPmhPageSize, Sort.by("name")); + final OAIToken oaiToken = new OAIToken(this.oaiPmhPageSize, this.oaiPmhTokenLifeTime, Sort.by("name")); if (!StringTool.isNullOrEmpty(token)) { oaiToken.setToken(token); } @@ -383,7 +387,7 @@ public class OAIService { } private OAIToken checkParameters(String metadataPrefix, String from, String until, String set, String token) { - final OAIToken oaiToken = new OAIToken(this.oaiPmhPageSize); + final OAIToken oaiToken = new OAIToken(this.oaiPmhPageSize, this.oaiPmhTokenLifeTime); // Token parameter if (!StringTool.isNullOrEmpty(token)) {