Dominik Smogór created SLING-12760:
--------------------------------------

             Summary: Sling engine parameter filter is disrupted by osgi 
filters using parameters.
                 Key: SLING-12760
                 URL: https://issues.apache.org/jira/browse/SLING-12760
             Project: Sling
          Issue Type: Bug
          Components: Engine
    Affects Versions: Engine 2.7.10
            Reporter: Dominik Smogór


An OSGI early servlet filter (org.osgi.service.http.whiteboard.Preprocessor 
service) can't use getParameter* family of request methods in POST requests. 
Otherwise the sling's own x-www-form-urlencoded parser fails and sling request 
methods report 0 parameters regardless of contents of the request.

The most likely cause is the fact that request input stream is consumed by 
parameter parser of underlying servlet engine when called from the filter.

 

here's a piece of code to demonstrate the problem:

{code:java}
{code:java}
@Component(service = Preprocessor.class,
    immediate = true,
    property = {
        HttpWhiteboardConstants.HTTP_WHITEBOARD_FILTER_PATTERN + "=/",
        HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT + 
"=(osgi.http.whiteboard.context.name=*)"
    })
public class FaultyFilter implements Preprocessor {   
 @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse 
servletResponse, FilterChain filterChain)
        throws IOException, ServletException {
        //calling this method in processor triggers the problem.
        String resource = request.getParameter("someParameter");
        filterChain.doFilter(servletRequest, servletResponse);
    }
}
 {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to