Hi,

I have changed a bit how static resources are loaded, now Struts will
try to check if request matches possible static resources and tries to
load them. In other case it will assume an action was requested and
will try to figure out mapping. This can potentially break something,
please careful check your apps.


Regards
-- 
Ɓukasz
+ 48 606 323 122 http://www.lenart.org.pl/

2016-03-27 13:50 GMT+02:00  <lukaszlen...@apache.org>:
> Repository: struts
> Updated Branches:
>   refs/heads/master 6770b35ce -> 5e31097d8
>
>
> WW-4621 Tries to load static resources first
>
>
> Project: http://git-wip-us.apache.org/repos/asf/struts/repo
> Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/5e31097d
> Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/5e31097d
> Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/5e31097d
>
> Branch: refs/heads/master
> Commit: 5e31097d8fa88fc9b12c5ae2f5f05e6d9c83b084
> Parents: 6770b35
> Author: Lukasz Lenart <lukaszlen...@apache.org>
> Authored: Sun Mar 27 13:50:04 2016 +0200
> Committer: Lukasz Lenart <lukaszlen...@apache.org>
> Committed: Sun Mar 27 13:50:04 2016 +0200
>
> ----------------------------------------------------------------------
>  .../filter/StrutsPrepareAndExecuteFilter.java   | 32 ++++++++++++++------
>  1 file changed, 22 insertions(+), 10 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/struts/blob/5e31097d/core/src/main/java/org/apache/struts2/dispatcher/filter/StrutsPrepareAndExecuteFilter.java
> ----------------------------------------------------------------------
> diff --git 
> a/core/src/main/java/org/apache/struts2/dispatcher/filter/StrutsPrepareAndExecuteFilter.java
>  
> b/core/src/main/java/org/apache/struts2/dispatcher/filter/StrutsPrepareAndExecuteFilter.java
> index 8842f12..429e47f 100644
> --- 
> a/core/src/main/java/org/apache/struts2/dispatcher/filter/StrutsPrepareAndExecuteFilter.java
> +++ 
> b/core/src/main/java/org/apache/struts2/dispatcher/filter/StrutsPrepareAndExecuteFilter.java
> @@ -20,6 +20,9 @@
>   */
>  package org.apache.struts2.dispatcher.filter;
>
> +import org.apache.logging.log4j.LogManager;
> +import org.apache.logging.log4j.Logger;
> +import org.apache.struts2.RequestUtils;
>  import org.apache.struts2.StrutsStatics;
>  import org.apache.struts2.dispatcher.Dispatcher;
>  import org.apache.struts2.dispatcher.mapper.ActionMapping;
> @@ -44,6 +47,9 @@ import java.util.regex.Pattern;
>   * when you don't have another filter that needs access to action context 
> information, such as Sitemesh.
>   */
>  public class StrutsPrepareAndExecuteFilter implements StrutsStatics, Filter {
> +
> +    private static final Logger LOG = 
> LogManager.getLogger(StrutsPrepareAndExecuteFilter.class);
> +
>      protected PrepareOperations prepare;
>      protected ExecuteOperations execute;
>      protected List<Pattern> excludedPatterns = null;
> @@ -85,21 +91,27 @@ public class StrutsPrepareAndExecuteFilter implements 
> StrutsStatics, Filter {
>          HttpServletResponse response = (HttpServletResponse) res;
>
>          try {
> +            String uri = RequestUtils.getUri(request);
>              if (excludedPatterns != null && prepare.isUrlExcluded(request, 
> excludedPatterns)) {
> +                LOG.trace("Request {} is excluded from handling by Struts, 
> passing request to other filters", uri);
>                  chain.doFilter(request, response);
>              } else {
> -                prepare.setEncodingAndLocale(request, response);
> -                prepare.createActionContext(request, response);
> -                prepare.assignDispatcherToThread();
> -                request = prepare.wrapRequest(request);
> -                ActionMapping mapping = prepare.findActionMapping(request, 
> response, true);
> -                if (mapping == null) {
> -                    boolean handled = 
> execute.executeStaticResourceRequest(request, response);
> -                    if (!handled) {
> +                LOG.trace("Checking if {} is a static resource", uri);
> +                boolean handled = 
> execute.executeStaticResourceRequest(request, response);
> +                if (!handled) {
> +                    LOG.trace("Assuming uri {} as a normal action", uri);
> +                    prepare.setEncodingAndLocale(request, response);
> +                    prepare.createActionContext(request, response);
> +                    prepare.assignDispatcherToThread();
> +                    request = prepare.wrapRequest(request);
> +                    ActionMapping mapping = 
> prepare.findActionMapping(request, response, true);
> +                    if (mapping == null) {
> +                        LOG.trace("Cannot find mapping for {}, passing to 
> other filters", uri);
>                          chain.doFilter(request, response);
> +                    } else {
> +                        LOG.trace("Found mapping {} for {}", mapping, uri);
> +                        execute.executeAction(request, response, mapping);
>                      }
> -                } else {
> -                    execute.executeAction(request, response, mapping);
>                  }
>              }
>          } finally {
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
For additional commands, e-mail: dev-h...@struts.apache.org

Reply via email to