struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Josef Vermach (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4437) Bug in CookieInterceptor
Date Tue, 12 May 2015 15:35:00 GMT

    [ https://issues.apache.org/jira/browse/WW-4437?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14540047#comment-14540047
] 

Josef Vermach commented on WW-4437:
-----------------------------------

Ok, thanks!

We tried to do ugrade but we are not able to start application. Caused by:
{noformat}
 Exception starting filter struts2
java.lang.NoSuchFieldError: VERSION_2_3_0
        at org.apache.struts2.views.freemarker.FreemarkerManager.createConfiguration(FreemarkerManager.java:331)
        at org.apache.struts2.views.freemarker.FreemarkerManager.init(FreemarkerManager.java:282)
        at org.apache.struts2.views.freemarker.FreemarkerManager.getConfiguration(FreemarkerManager.java:269)
        at org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler.init(DefaultDispatcherErrorHandler.java:47)
        at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:488)
...
{noformat}

> Bug in CookieInterceptor
> ------------------------
>
>                 Key: WW-4437
>                 URL: https://issues.apache.org/jira/browse/WW-4437
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Interceptors
>    Affects Versions: 2.3.20
>            Reporter: Chris Pratt
>            Assignee: Lukasz Lenart
>             Fix For: 2.3.24
>
>
> Sorry, I don't have an environment set up to create a patch, but I found an error in
the {{CookieInterceptor.isAccepted()}} method.  It currently looks like:
> {code:java}
> /**
>  * Checks if name of Cookie match {@link #acceptedPattern}
>  *
>  * @param name of Cookie
>  * @return true|false
>  */
> protected boolean isAccepted(String name) {
>     boolean matches = acceptedPattern.matcher(name).matches();
>     if (matches) {
>         if (LOG.isTraceEnabled()) {
>             LOG.trace("Cookie [#0] matches acceptedPattern [#1]", name, ACCEPTED_PATTERN);
>         }
>     } else {
>         if (LOG.isTraceEnabled()) {
>             LOG.trace("Cookie [#0] doesn't match acceptedPattern [#1]", name, ACCEPTED_PATTERN);
>         }
>     }
>     return matches;
> }
> {code}
> But it would be more useful if it actually reported the RegEx being used instead of the
default.  And, it would be more performant if the comparisons were reversed.  So something
more like:
> {code:java}
> /**
>  * Checks if name of Cookie match {@link #acceptedPattern}
>  *
>  * @param name of Cookie
>  * @return true|false
>  */
> protected boolean isAccepted (String name) {
>   boolean matches = acceptedPattern.matcher(name).matches();
>   if(LOG.isTraceEnabled()) {   
>     if(matches) {
>       LOG.trace("Cookie [#0] matches acceptedPattern [#1]",name,acceptedPattern.pattern());
>     } else {
>       LOG.trace("Cookie [#0] doesn't match acceptedPattern [#1]",name,acceptedPattern.pattern());
>     }
>   }
>   return matches;
> }
> {code}
> In addition, it looks like the default and the override are handled differently.  The
current code compiles the default case-insensitive, but not the override pattern.  Shouldn't
that be consistent?
> {code:java}
> private Pattern acceptedPattern = Pattern.compile(ACCEPTED_PATTERN,Pattern.CASE_INSENSITIVE);
> public void setAcceptCookieNames (String pattern) {
>   acceptedPattern = Pattern.compile(pattern);
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message