@SuppressWarnings({"JavaDoc"})
    private boolean isFilterChainContinued(ServletRequest request, ServletResponse response,
                                           String path, Object pathConfig) throws Exception {

        //isEnabled check added in 1.2
        if (isEnabled(request, response, path, pathConfig)) {
            if (LOGGER.isTraceEnabled()) {
                LOGGER.trace("Filter '{}' is enabled for the current request under path '{}' with config [{}].  "
                                + "Delegating to subclass implementation for 'onPreHandle' check.",
                        getName(), path, pathConfig);
            }
            //The filter is enabled for this specific request, so delegate to subclass implementations
            //so they can decide if the request should continue through the chain or not:
            return onPreHandle(request, response, pathConfig);
        }

        if (LOGGER.isTraceEnabled()) {
            LOGGER.trace("Filter '{}' is disabled for the current request under path '{}' with config [{}].  "
                            + "The next element in the FilterChain will be called immediately.",
                    getName(), path, pathConfig);
        }
        //This filter is disabled for this specific request,
        //return 'true' immediately to indicate that the filter will not process the request
        //and let the request/response to continue through the filter chain:
        return true;
    }
Simple method to abstract out logic from the preHandle implementation - it was getting a bit unruly.

@since 1.2
web/src/main/java/org/apache/shiro/web/filter/PathMatchingFilter.java