package com.wooki.services.security.spring; import java.util.ArrayList; import java.util.List; import org.apache.tapestry5.services.ComponentEventRequestParameters; import org.apache.tapestry5.services.PageRenderRequestParameters; /** * This matcher matched all the public Tapestry URL resources. * * @author ccordenier */ public class TapestryPublicUrlPathMatcher extends AbstractTapestryUrlPathMatcher { /** * List of public pages. */ private List<String> publicPages = new ArrayList<String>(); /** * All the public pages are * * @param publicPages */ public TapestryPublicUrlPathMatcher(List<String> publicPages) { if (publicPages != null) { for (String pageName : publicPages) { this.publicPages.add(pageName.toLowerCase()); } } } /** * This method tries to find a declared public in tapestry. */ public boolean matches(String url) { // Secure actions request ComponentEventRequestParameters actionParams = this.decodeComponentEventRequest(url); if (actionParams != null) { String logicalPageName = actionParams.getActivePageName(); if (this.publicPages.contains(logicalPageName.toLowerCase()) || (!this.isProductionMode() && logicalPageName.toLowerCase().startsWith("dev"))) { return true; } else { return false; } } // Secure Render request PageRenderRequestParameters params = this.decodePageRenderRequest(url); if (params != null) { String logicalPageName = params.getLogicalPageName(); if (this.publicPages.contains(logicalPageName.toLowerCase()) || (!this.isProductionMode() && logicalPageName.toLowerCase().startsWith("dev"))) { return true; } } return false; } }