On Jan 11, 2011, at 12:28 AM, Konstantin Kolinko wrote:
> 2011/1/10 <[email protected]>:
>> Author: markt
>> Date: Mon Jan 10 16:48:25 2011
>> New Revision: 1057275
>>
>> URL: http://svn.apache.org/viewvc?rev=1057275&view=rev
>> Log:
>> Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50205
>> Add deployIgnore to Host
>> Based on a patch by Jim Riggs
>>
>> Modified:
>> tomcat/trunk/java/org/apache/catalina/Host.java
>> tomcat/trunk/java/org/apache/catalina/core/StandardHost.java
>> tomcat/trunk/java/org/apache/catalina/core/mbeans-descriptors.xml
>> tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java
>> tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties
>> tomcat/trunk/webapps/docs/config/host.xml
>>
>
> (..skipped)
> Looking at HostConfig#filterAppPaths()
>
>> /**
>> + * Filter the list of application file paths to remove those that match
>> + * the regular expression defined by {...@link Host#getDeployIgnore()}.
>> + *
>> + * @param unfilteredAppPaths The list of application paths to filtert
>> + *
>> + * @return The filtered list of application paths
>> + */
>> + protected String[] filterAppPaths(String[] unfilteredAppPaths) {
>> + if (host.getDeployIgnore() == null) {
>> + return unfilteredAppPaths;
>> + }
>> +
>> + Pattern filter = Pattern.compile(host.getDeployIgnore());
>
> 1) It would be better to store the value as Pattern inside the Host
> and implement Host.getDeployIgnorePattern() method that will return
> Pattern. This way a syntax error can be detected at assignment time.
> 2) null string and "" string should be treated equally
My original patch did both of these things, but the patch was written for the
old world of comma-separated list of REs. It looks like Mark's changes to use
just a single RE changed this behavior. I agree -- especially now that it is
just a single RE -- compiling it and storing just the compiled pattern is a
good idea. (My original patch stored both the comma-separated string and a
list of compiled patterns.)
>> +
>> + List<String> filteredList = new ArrayList<String>();
>> + for (String appPath : unfilteredAppPaths) {
>> + if (filter.matcher(appPath).matches()) {
>> + log.debug(sm.getString("hostConfig.ignorePath", appPath));
>
> Wrap with log.isDebugEnabled()
Again, this was in my patch. Just an oversight when applied, I guess.
Thanks for catching these, Konstantin.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]