Author: craigmcc Date: Mon Jan 3 20:02:09 2005 New Revision: 124065 URL: http://svn.apache.org/viewcvs?view=rev&rev=124065 Log: Correct matching order for filter tests to be more generally useful.
Modified: struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/application/AbstractRegExpFilter.java Modified: struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/application/AbstractRegExpFilter.java Url: http://svn.apache.org/viewcvs/struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/application/AbstractRegExpFilter.java?view=diff&rev=124065&p1=struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/application/AbstractRegExpFilter.java&r1=124064&p2=struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/application/AbstractRegExpFilter.java&r2=124065 ============================================================================== --- struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/application/AbstractRegExpFilter.java (original) +++ struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/application/AbstractRegExpFilter.java Mon Jan 3 20:02:09 2005 @@ -25,6 +25,8 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.chain.Command; import org.apache.commons.chain.Context; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.shale.faces.ShaleWebContext; /** @@ -37,12 +39,12 @@ * <li>If the specified value is <code>null</code>, call <code>reject()</code> * and return <code>true</code> to indicate that request procesing is * complete.</li> - * <li>If there are any exclude patterns, and the value matches one of - * these patterns, call <code>reject()</code> and return - * <code>true</code> to indicate that request processing is complete.</li> * <li>If there are any include patterns, and the value matches one of * these patterns, call <code>accept()</code> and return * <code>false</code> to indicate request processing should continue.</li> + * <li>If there are any exclude patterns, and the value matches one of + * these patterns, call <code>reject()</code> and return + * <code>true</code> to indicate that request processing is complete.</li> * <li>If there are any include patterns, and the value does not match one of * these patterns, call <code>reject()</code> and return * <code>true</code> to indicate that request processing is complete.</li> @@ -66,6 +68,15 @@ + // -------------------------------------------------------- Static Variables + + + /** + * <p>Log instance for this class.</p> + */ + private static final Log log = LogFactory.getLog(AbstractRegExpFilter.class); + + // ------------------------------------------------------ Instance Variables @@ -154,24 +165,49 @@ // Acquire the value to be tested ShaleWebContext webContext = (ShaleWebContext) context; String value = value(webContext); + if (log.isDebugEnabled()) { + log.debug("execute(" + value + ")"); + } if (value == null) { + if (log.isTraceEnabled()) { + log.trace(" reject(null)"); + } reject(webContext); return true; } + // Check for a match on the included list + if (matches(value, includesPatterns, true)) { + if (log.isTraceEnabled()) { + log.trace(" accept(include)"); + } + accept(webContext); + return false; + } + // Check for a match on the excluded list if (matches(value, excludesPatterns, false)) { + if (log.isTraceEnabled()) { + log.trace(" reject(exclude)"); + } reject(webContext); return true; } - // Check for a match on the included list - if (matches(value, includesPatterns, true)) { - accept(webContext); - return false; + // If there was at least one include pattern, + // unconditionally reject this request + if ((includesPatterns != null) && (includesPatterns.length > 0)) { + if (log.isTraceEnabled()) { + log.trace(" reject(not include)"); + } + reject(webContext); + return true; } // Unconditionally accept this request + if (log.isTraceEnabled()) { + log.trace(" accept(default)"); + } accept(webContext); return false; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
