diff --git a/src/main/java/jasper/component/WebScraper.java b/src/main/java/jasper/component/WebScraper.java index 57d31b55..6ee89f87 100644 --- a/src/main/java/jasper/component/WebScraper.java +++ b/src/main/java/jasper/component/WebScraper.java @@ -21,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; @@ -323,6 +324,11 @@ private void parseText(Ref result, Document doc, Scrape config) { result.setComment(doc.body().wholeText().trim()); } + @CacheEvict(value = "scrape-config", allEntries = true) + public void clearCache() { + logger.info("Cleared scrape config cache."); + } + @Cacheable("scrape-config") @Transactional(readOnly = true) @Timed(value = "jasper.service", extraTags = {"service", "scrape"}, histogram = true) diff --git a/src/main/java/jasper/service/OembedService.java b/src/main/java/jasper/service/OembedService.java index 88c5fdc1..d7bbe101 100644 --- a/src/main/java/jasper/service/OembedService.java +++ b/src/main/java/jasper/service/OembedService.java @@ -13,6 +13,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Service; @@ -60,6 +61,7 @@ public JsonNode get(Map params) { } } + @CacheEvict(value = {"oembed-provider", "oembed"}, allEntries = true) @PreAuthorize("hasRole('MOD')") @Timed(value = "jasper.service", extraTags = {"service", "oembed"}, histogram = true) public void restoreDefaults() throws IOException { diff --git a/src/main/java/jasper/service/ScrapeService.java b/src/main/java/jasper/service/ScrapeService.java index 815c87a3..558beb83 100644 --- a/src/main/java/jasper/service/ScrapeService.java +++ b/src/main/java/jasper/service/ScrapeService.java @@ -84,4 +84,9 @@ public String rss(String url) { public String cache(byte[] data, String mime) { return webScraper.cache(from(data, mime)).getUrl(); } + + @PreAuthorize("@auth.canAddTag('+plugin/scrape')") + public void clearCache() { + webScraper.clearCache(); + } } diff --git a/src/main/java/jasper/web/rest/ScrapeController.java b/src/main/java/jasper/web/rest/ScrapeController.java index 4c6392cf..69309716 100644 --- a/src/main/java/jasper/web/rest/ScrapeController.java +++ b/src/main/java/jasper/web/rest/ScrapeController.java @@ -120,4 +120,12 @@ String cache( ) { return scrapeService.cache(data, mime); } + + @ApiResponses({ + @ApiResponse(responseCode = "204"), + }) + @PostMapping("clear-config-cache") + void clearConfigCache() { + scrapeService.clearCache(); + } }