This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch dklco/preview-img
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git

commit 524db15a6bac323c641a58054ed468ac49d7279c
Author: Dan Klco <[email protected]>
AuthorDate: Thu Mar 11 21:58:55 2021 -0500

    Working on having a specific preview servlet to have authenticated previews 
of images rather than using the mapped image URLs
---
 .../listeners/FileMetadataExtractorListener.java   | 31 +++++++---------------
 .../components/cms/contentgrid/contentgrid.jsp     | 12 ++++-----
 .../sling-cms/components/cms/tilecard/tilecard.jsp |  2 +-
 3 files changed, 17 insertions(+), 28 deletions(-)

diff --git 
a/core/src/main/java/org/apache/sling/cms/core/internal/listeners/FileMetadataExtractorListener.java
 
b/core/src/main/java/org/apache/sling/cms/core/internal/listeners/FileMetadataExtractorListener.java
index 7d78b3b..ee5e0d5 100644
--- 
a/core/src/main/java/org/apache/sling/cms/core/internal/listeners/FileMetadataExtractorListener.java
+++ 
b/core/src/main/java/org/apache/sling/cms/core/internal/listeners/FileMetadataExtractorListener.java
@@ -19,16 +19,16 @@ package org.apache.sling.cms.core.internal.listeners;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.sling.api.SlingConstants;
 import org.apache.sling.api.resource.LoginException;
-import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import 
org.apache.sling.api.resource.observation.ExternalResourceChangeListener;
 import org.apache.sling.api.resource.observation.ResourceChange;
 import org.apache.sling.api.resource.observation.ResourceChangeListener;
 import org.apache.sling.cms.CMSConstants;
-import org.apache.sling.cms.File;
-import org.apache.sling.cms.FileMetadataExtractor;
+import org.apache.sling.cms.core.internal.jobs.FileMetadataExtractorConsumer;
+import org.apache.sling.event.jobs.JobManager;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
@@ -47,32 +47,21 @@ public class FileMetadataExtractorListener implements 
ResourceChangeListener, Ex
     private static final Logger log = 
LoggerFactory.getLogger(FileMetadataExtractorListener.class);
 
     @Reference
-    private FileMetadataExtractor extractor;
+    private JobManager jobManager;
 
     @Reference
     private ResourceResolverFactory factory;
 
-    private void handleChange(Resource changed) {
-        if (CMSConstants.NT_FILE.equals(changed.getResourceType())) {
-            log.debug("Extracting metadata from changed resource: {}", 
changed);
-            try {
-                extractor.updateMetadata(changed.adaptTo(File.class), true);
-            } catch (Exception e) {
-                log.warn("Failed to extract metadata from change: {}", 
changed, e);
-            }
-        } else {
-            log.trace("Not extracting metadata from changed resource: {}", 
changed);
-        }
-    }
-
     @Override
     public void onChange(List<ResourceChange> changes) {
         try (ResourceResolver serviceResolver = 
factory.getServiceResourceResolver(
                 Collections.singletonMap(ResourceResolverFactory.SUBSERVICE, 
"sling-cms-metadata"))) {
-            for (ResourceChange rc : changes) {
-                Resource changed = serviceResolver.getResource(rc.getPath());
-                handleChange(changed);
-            }
+            changes.stream().map(rc -> 
serviceResolver.getResource(rc.getPath()))
+                    .filter(r -> 
CMSConstants.NT_FILE.equals(r.getResourceType())).forEach(r -> {
+                        log.debug("Queueing resource {}", r);
+                        jobManager.addJob(FileMetadataExtractorConsumer.TOPIC,
+                                
Collections.singletonMap(SlingConstants.PROPERTY_PATH, r.getPath()));
+                    });
         } catch (LoginException e) {
             log.error("Exception getting service user", e);
         }
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentgrid/contentgrid.jsp
 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentgrid/contentgrid.jsp
index 64f2c3a..376426d 100644
--- 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentgrid/contentgrid.jsp
+++ 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentgrid/contentgrid.jsp
@@ -45,27 +45,27 @@
                             <figure class="image is-5by4">
                                 <c:choose>
                                     <c:when test="${child.resourceType == 
'sling:File' || child.resourceType == 'nt:file'}">
-                                        <img 
src="${child.path}.transform/sling-cms-thumbnail.png" loading="lazy" 
alt="${child.name}">
+                                        <img 
src="/cms/file/preview.html${child.path}.transform/sling-cms-thumbnail.png" 
loading="lazy" alt="${child.name}">
                                     </c:when>
                                     <c:when test="${child.resourceType == 
'sling:Site'}">
-                                        <img 
src="${branding.gridIconsBase}/site.png" loading="lazy" 
alt="${sling:encode(child.name, 'HTML_ATTR')}">
+                                        <img 
src="/cms/file/preview.html${branding.gridIconsBase}/site.png" loading="lazy" 
alt="${sling:encode(child.name, 'HTML_ATTR')}">
                                     </c:when>
                                     <c:when test="${child.resourceType == 
'sling:OrderedFolder' || child.resourceType == 'sling:Folder' || 
child.resourceType == 'nt:folder'}">
-                                        <img 
src="${branding.gridIconsBase}/folder.png" loading="lazy" 
alt="${sling:encode(child.name, 'HTML_ATTR')}">
+                                        <img 
src="/cms/file/preview.html${branding.gridIconsBase}/folder.png" loading="lazy" 
alt="${sling:encode(child.name, 'HTML_ATTR')}">
                                     </c:when>
                                     <c:when test="${child.resourceType == 
'sling:Page'}">
                                         <c:set var="templateThumbnail" 
value="${child.valueMap['jcr:content/sling:template']}/thumbnail"/>
                                         <c:choose>
                                             <c:when 
test="${sling:getResource(resourceResolver, templateThumbnail) != null}">
-                                                <img 
src="${templateThumbnail}.transform/sling-cms-thumbnail.png" loading="lazy" 
alt="${sling:encode(child.name, 'HTML_ATTR')}">
+                                                <img 
src="/cms/file/preview.html${templateThumbnail}.transform/sling-cms-thumbnail.png"
 loading="lazy" alt="${sling:encode(child.name, 'HTML_ATTR')}">
                                             </c:when>
                                             <c:otherwise>
-                                                <img 
src="${branding.gridIconsBase}/page.png" loading="lazy" alt="${child.name}">
+                                                <img 
src="/cms/file/preview.html${branding.gridIconsBase}/page.png" loading="lazy" 
alt="${child.name}">
                                             </c:otherwise>
                                         </c:choose>
                                     </c:when>
                                     <c:otherwise>
-                                        <img 
src="${branding.gridIconsBase}/file.png" loading="lazy" alt="${child.name}">
+                                        <img 
src="/cms/file/preview.html${branding.gridIconsBase}/file.png" loading="lazy" 
alt="${child.name}">
                                     </c:otherwise>
                                 </c:choose>
                             </figure>
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/tilecard/tilecard.jsp
 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/tilecard/tilecard.jsp
index 10d95d5..7972b59 100644
--- 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/tilecard/tilecard.jsp
+++ 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/tilecard/tilecard.jsp
@@ -22,7 +22,7 @@
         <div class="card is-linked" 
title="${sling:encode(properties.title,'HTML_ATTR')}" 
data-value="${resource.path}">
             <div class="card-image">
                 <figure class="image is-5by4">
-                    <img 
src="${branding.gridIconsBase}${sling:encode(properties.icon,'HTML_ATTR')}" 
loading="lazy" alt="${sling:encode(properties.title,'HTML_ATTR')}">
+                    <img 
src="/cms/file/preview.html${branding.gridIconsBase}${sling:encode(properties.icon,'HTML_ATTR')}"
 loading="lazy" alt="${sling:encode(properties.title,'HTML_ATTR')}">
                 </figure>
             </div>
             <footer class="card-footer">

Reply via email to