Unreferenced Assets Script for AEM Fiddle

Diana Henrickson
Activate AEM
Published in
1 min readJun 13, 2023

At times it’s useful to know which assets aren’t being referenced. This gives you the opportunity to perform cleanups without worrying about deleting assets that are in use.

Grab the code below, copy and paste it into a AEM Fiddle (java) file and set the following information based on your needs:

  • assetNodes — Location to search for unreferenced assets
package apps.acs_002dtools.components.aemfiddle.fiddle;

import com.day.cq.search.*;
import com.day.cq.wcm.api.*;
import com.day.cq.dam.api.*;
import org.apache.sling.api.*;
import org.apache.sling.api.resource.*;
import org.apache.sling.api.servlets.*;
import java.io.IOException;
import javax.jcr.*;
import java.util.*;
import com.day.cq.wcm.commons.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class fiddle extends SlingAllMethodsServlet {

private static final Logger log = LoggerFactory.getLogger(fiddle.class);

@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {

String assetNodes = "/content/dam/wknd/en/site";

ResourceResolver resolver = request.getResource().getResourceResolver();
PageManager pageManager = resolver.adaptTo(PageManager.class);
ReferenceSearch referenceSearch = new ReferenceSearch();
Session session = resolver.adaptTo(Session.class);
Resource rootAssetNode = resolver.getResource(assetNodes);

log.debug("starting asset reference search script");
Iterator<Resource> assetsResources = resolver.findResources("SELECT * FROM [dam:Asset] WHERE ISDESCENDANTNODE(["+assetNodes+"])","JCR-SQL2");
//Iterator<Resource> assetsResources = rootAssetNode.listChildren();
try{
while(assetsResources.hasNext()){

Resource assetResource = assetsResources.next();

String path = assetResource.getPath();

Set<String> refExclusions = new HashSet<String>();
Collection<ReferenceSearch.Info> references = referenceSearch.search(resolver, path).values();
if(references.isEmpty()){
response.getWriter().println(path+"<BR>");
}
}
log.debug("ended asset reference search script");

}catch(Exception e){
log.error(e.getMessage());
}
log.debug("ended asset reference search script");
}
}

--

--