Author: markt Date: Wed Jun 15 22:44:00 2011 New Revision: 1136231 URL: http://svn.apache.org/viewvc?rev=1136231&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48956 Implement regular expression support for SSI
Modified: tomcat/trunk/java/org/apache/catalina/ssi/ExpressionParseTree.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/ssi/ExpressionParseTree.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ssi/ExpressionParseTree.java?rev=1136231&r1=1136230&r2=1136231&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/ssi/ExpressionParseTree.java (original) +++ tomcat/trunk/java/org/apache/catalina/ssi/ExpressionParseTree.java Wed Jun 15 22:44:00 2011 @@ -20,6 +20,7 @@ package org.apache.catalina.ssi; import java.text.ParseException; import java.util.LinkedList; import java.util.List; +import java.util.regex.Pattern; /** * Represents a parsed expression. * @@ -350,6 +351,21 @@ public class ExpressionParseTree { protected int compareBranches() { String val1 = ((StringNode)left).getValue(); String val2 = ((StringNode)right).getValue(); + + int val2Len = val2.length(); + if (val2Len > 1 && val2.charAt(0) == '/' && + val2.charAt(val2Len - 1) == '/') { + // Treat as a regular expression + String expr = val2.substring(1, val2Len - 1); + Pattern pattern = Pattern.compile(expr); + // Regular expressions will only ever be used with EqualNode + // so return zero for equal and non-zero for not equal + if (pattern.matcher(val1).find()) { + return 0; + } else { + return -1; + } + } return val1.compareTo(val2); } } Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1136231&r1=1136230&r2=1136231&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Jun 15 22:44:00 2011 @@ -46,6 +46,9 @@ <subsection name="Catalina"> <changelog> <add> + <bug>48956</bug>: Add regular expression support for SSI. (markt) + </add> + <add> <bug>50677</bug>: Allow system property variables to be used in the values of "common.loader" and other "*.loader" properties in the <code>catalina.properties</code> file. (kkolinko) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org