Created
July 4, 2019 12:19
-
-
Save aanchalsikka/a41dfbb9c7ff72a665ed0fdf33ae580d to your computer and use it in GitHub Desktop.
Logs message when a techrevel page is requested
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package blog.techrevel.service.impl; | |
import org.apache.sling.api.SlingHttpServletRequest; | |
import org.apache.sling.api.SlingHttpServletResponse; | |
import static org.apache.sling.engine.EngineConstants.*; | |
import org.apache.sling.api.resource.Resource; | |
import org.osgi.service.component.annotations.Component; | |
import org.osgi.framework.Constants; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import com.day.cq.wcm.api.Page; | |
import com.day.cq.wcm.api.PageManager; | |
import javax.servlet.Filter; | |
import javax.servlet.FilterChain; | |
import javax.servlet.FilterConfig; | |
import javax.servlet.ServletException; | |
import javax.servlet.ServletRequest; | |
import javax.servlet.ServletResponse; | |
import java.io.IOException; | |
@Component(service = Filter.class, name = "Custom Logging Filter", property = { | |
SLING_FILTER_SCOPE + "=" + FILTER_SCOPE_REQUEST, Constants.SERVICE_RANKING + ":Integer=1", | |
SLING_FILTER_PATTERN + "=/content/techrevelblog/.*" }) | |
public class RequestLoggingFilter implements Filter { | |
private static final Logger log = LoggerFactory.getLogger(RequestLoggingFilter.class.getName()); | |
// Called by the web container to indicate to a filter that it is being placed | |
// into service. | |
@Override | |
public void init(FilterConfig filterConfig) throws ServletException { | |
} | |
// Called by the web container to indicate to a filter that it is being taken | |
// out of service. | |
@Override | |
public void destroy() { | |
} | |
@Override | |
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) | |
throws IOException, ServletException { | |
if (request instanceof SlingHttpServletRequest && response instanceof SlingHttpServletResponse) { | |
// Do work before sending the request down the Filter AND Sling processing chain | |
final SlingHttpServletRequest slingRequest = (SlingHttpServletRequest) request; | |
final Resource resource = slingRequest.getResource(); | |
if (resource.getResourceType().equals("cq:Page")) { | |
PageManager pageManager = resource.getResourceResolver().adaptTo(PageManager.class); | |
Page page = pageManager.getPage(resource.getPath()); | |
String templatePath = page.getContentResource().getResourceType(); | |
if (templatePath.equals("techrevelblog/components/structure/page")) { | |
log.info("Pages from techrevel accessed !!!!"); | |
} | |
} | |
chain.doFilter(request, response); | |
// The Request/Response have now been fully processed by Sling/AEM | |
} else { | |
// Else process the chain as usual. | |
chain.doFilter(request, response); | |
return; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment