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);