You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by di...@apache.org on 2021/06/07 13:32:47 UTC
[sling-whiteboard] 01/05: Added flag to sitemap finished event
This is an automated email from the ASF dual-hosted git repository.
diru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit 17e264b66ea919e26cd416f78b1691fa44772ad6
Author: Dirk Rudolph <di...@apache.org>
AuthorDate: Mon Jun 7 10:27:40 2021 +0200
Added flag to sitemap finished event
Added a boolean flag to the event fired when a sitemap finished generation in the
background to indicate if it exceeds the configured limits
---
sitemap/README.md | 1 +
.../java/org/apache/sling/sitemap/generator/SitemapGenerator.java | 4 ++++
.../org/apache/sling/sitemap/impl/SitemapGeneratorExecutor.java | 5 +++++
.../java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java | 8 +++++++-
.../apache/sling/sitemap/impl/SitemapGeneratorExecutorTest.java | 6 ++++++
5 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/sitemap/README.md b/sitemap/README.md
index 1bb35cd..2b48881 100644
--- a/sitemap/README.md
+++ b/sitemap/README.md
@@ -16,6 +16,7 @@ background to even sites that collect 3rd party data to include dynamically rend
* Housekeeping of SitemapStorage (used for background generation), esp. when sitemap roots change
* More general approach for creating absolute urls.
+* Implement Google specific sitemap extensions (image/video/news)
## Getting Started
diff --git a/sitemap/src/main/java/org/apache/sling/sitemap/generator/SitemapGenerator.java b/sitemap/src/main/java/org/apache/sling/sitemap/generator/SitemapGenerator.java
index 062cd6e..f6e099c 100644
--- a/sitemap/src/main/java/org/apache/sling/sitemap/generator/SitemapGenerator.java
+++ b/sitemap/src/main/java/org/apache/sling/sitemap/generator/SitemapGenerator.java
@@ -62,6 +62,10 @@ public interface SitemapGenerator {
*/
String EVENT_PROPERTY_SITEMAP_URLS = "sitemap.urls";
/**
+ * The event property storing a flag whether the generated sitemap exceeds the configured limits.
+ */
+ String EVENT_PROPERTY_SITEMAP_EXCEEDS_LIMITS = "sitemap.exceedsLimits";
+ /**
* The event property storing the generated sitemap's storage path.
*/
String EVENT_PROPERTY_SITEMAP_STORAGE_PATH = "sitemap.storagePath";
diff --git a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutor.java b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutor.java
index b108e2c..2c31f74 100644
--- a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutor.java
+++ b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutor.java
@@ -93,6 +93,8 @@ public class SitemapGeneratorExecutor implements JobExecutor {
private ServiceUserMapped serviceUserMapped;
@Reference
private EventAdmin eventAdmin;
+ @Reference
+ private SitemapServiceImpl sitemapService;
private int chunkSize = 10;
@@ -173,6 +175,9 @@ public class SitemapGeneratorExecutor implements JobExecutor {
eventProperties.put(SitemapGenerator.EVENT_PROPERTY_SITEMAP_URLS, sitemap.getUrlCount());
eventProperties.put(SitemapGenerator.EVENT_PROPERTY_SITEMAP_STORAGE_PATH, storagePath);
eventProperties.put(SitemapGenerator.EVENT_PROPERTY_SITEMAP_STORAGE_SIZE, buffer.size());
+ eventProperties.put(SitemapGenerator.EVENT_PROPERTY_SITEMAP_EXCEEDS_LIMITS,
+ !sitemapService.isWithinLimits(buffer.size(), sitemap.getUrlCount()));
+
eventAdmin.sendEvent(new Event(SitemapGenerator.EVENT_TOPIC_SITEMAP_UPDATED, new EventProperties(eventProperties)));
} catch (JobStoppedException ex) {
LOG.debug("Job stopped, removing state", ex);
diff --git a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java
index f77a56b..6cbee90 100644
--- a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java
+++ b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java
@@ -81,6 +81,10 @@ public class SitemapServiceImpl implements SitemapService {
return Collections.unmodifiableSet(onDemandNames);
}
+ public boolean isWithinLimits(int size, int entries) {
+ return size <= maxSize && entries <= maxEntries;
+ }
+
@NotNull
@Override
public Collection<SitemapInfo> getSitemapInfo(@NotNull Resource resource) {
@@ -201,12 +205,14 @@ public class SitemapServiceImpl implements SitemapService {
return infos;
}
+
+
private SitemapInfo newSitemapIndexInfo(@NotNull String url) {
return new SitemapInfoImpl(url, -1, -1, true, true);
}
private SitemapInfo newSitemapInfo(@NotNull String url, int size, int entries) {
- return new SitemapInfoImpl(url, size, entries, false, size <= maxSize && entries <= maxEntries);
+ return new SitemapInfoImpl(url, size, entries, false, isWithinLimits(size, entries));
}
private static class SitemapInfoImpl implements SitemapInfo {
diff --git a/sitemap/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutorTest.java b/sitemap/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutorTest.java
index 4db5c41..226fb3d 100644
--- a/sitemap/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutorTest.java
+++ b/sitemap/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutorTest.java
@@ -20,6 +20,7 @@ package org.apache.sling.sitemap.impl;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.event.jobs.Job;
+import org.apache.sling.event.jobs.JobManager;
import org.apache.sling.event.jobs.consumer.JobExecutionContext;
import org.apache.sling.serviceusermapping.ServiceUserMapped;
import org.apache.sling.sitemap.SitemapException;
@@ -60,8 +61,11 @@ public class SitemapGeneratorExecutorTest {
private final SitemapGeneratorManager generatorManager = new SitemapGeneratorManager();
private final ExtensionProviderManager extensionProviderManager = new ExtensionProviderManager();
private final SitemapStorage storage = spy(new SitemapStorage());
+ private final SitemapServiceImpl sitemapService = new SitemapServiceImpl();
@Mock
+ private JobManager jobManager;
+ @Mock
private ServiceUserMapped serviceUser;
@Mock
private Job job;
@@ -83,9 +87,11 @@ public class SitemapGeneratorExecutorTest {
context.registerService(ServiceUserMapped.class, serviceUser, "subServiceName", "sitemap-reader");
context.registerService(ServiceUserMapped.class, serviceUser, "subServiceName", "sitemap-writer");
context.registerService(SitemapGenerator.class, generator);
+ context.registerService(JobManager.class, jobManager);
context.registerInjectActivateService(storage);
context.registerInjectActivateService(generatorManager);
context.registerInjectActivateService(extensionProviderManager);
+ context.registerInjectActivateService(sitemapService);
when(job.getProperty(SitemapGeneratorExecutor.JOB_PROPERTY_SITEMAP_NAME, SitemapGenerator.DEFAULT_SITEMAP))
.thenReturn(SitemapGenerator.DEFAULT_SITEMAP);