Sling Alias Script for AEM Fiddle

Diana Henrickson
Activate AEM
Published in
2 min readJun 27, 2023

This script will give you a csv delimited list of all of the sling aliases currently used.

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

  • rootPagePath — Location to search for sling aliases
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.commons.lang3.StringUtils;

public class fiddle extends SlingAllMethodsServlet {
Logger log = LoggerFactory.getLogger(fiddle.class);
int nodeCount=0;
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {

String rootPagePath = "/content/wknd";

try{
log.debug("started href updates script");
ResourceResolver resolver = request.getResource().getResourceResolver();
Session session = resolver.adaptTo(Session.class);
ValueFactory factory = session.getValueFactory();
Iterator<Resource> pages = resolver.findResources("SELECT * FROM [cq:Page] as p WHERE ISDESCENDANTNODE (["+rootPagePath+"])","JCR-SQL2");

response.getWriter().println("Page Name,Node Path, Alias Path<br>");

while(pages.hasNext()){
List<Page> items = new ArrayList<Page>();
Resource pageRes = pages.next();
Page page = pageRes.adaptTo(Page.class);
String path = page.getPath();
ValueMap valueMap = pageRes.getValueMap();
String slingAlias = valueMap.get("jcr:content/sling:alias", "");

if(!slingAlias.equals("")){
String newPath=GenerateAliasPath(page,resolver,factory);
response.getWriter().println(page.getName()+","+path+","+newPath+"<br>");
}


}
}catch(Exception e){
response.getWriter().println("bad happens a duck...<br/>");
throw new IOException(e);
}

}
public String GenerateAliasPath(Page currentPage,ResourceResolver resolver,ValueFactory factory){
String newPath="";
try{
String path=currentPage.getPath();
String[] pathNodes = path.split("/");
String newAliasNodePath="";
String newNodePath="";
for(int i=1;i<pathNodes.length;i++){
String nodeName=pathNodes[i];
newNodePath=newNodePath+"/"+nodeName;
Resource aliasNodeRes=resolver.getResource(newNodePath);
ValueMap valueMap = aliasNodeRes.getValueMap();
String nodeSlingAlias = valueMap.get("jcr:content/sling:alias", "");
if(!nodeSlingAlias.equals("")){
newAliasNodePath=newAliasNodePath+"/"+nodeSlingAlias;
}else{
newAliasNodePath=newAliasNodePath+"/"+nodeName;
}
newPath=newAliasNodePath;
}
}catch(Exception e){
log.error(e.getMessage());
}

return newPath;
}
}

--

--