[ 
https://issues.jboss.org/browse/RF-13444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12938595#comment-12938595
 ] 

Lukáš Fryč commented on RF-13444:
---------------------------------

I have one concern with the suggested approach: if we will leverage Servlets 
3.0 API, specifically {{HttpServletRequest#getParts()}} method, we won't be 
able to listen on file upload progress. (Correct me if I'm wrong here).

I reviewed the use of MultipartRequest25 and it seems we could avoid 
preliminary form data parsing by avoiding {{super.getParameter()}} call. This 
is what we can do on our side. We need to ensure then that we are able to parse 
parameters ourselves (without the need of a underlying HttpRequest impl).

However: I have checked and this simple change won't work alone since another 
components might be able to interfere and require parsing of formData before 
such as ServletFilters or Factories, etc.

And that's also what is happening in case of CDI/Weld - it requires to read 
parameter (and parse form data) here:
https://gist.github.com/lfryc/17c80f2329521fbee00d

----

One of the ways around could be wrapping our request far before any other 
component might be able to read it.

Second option is finding a way how to listen on progress of a request.



                
> r:fileUpload throws IOException "Request prolog cannot be read"
> ---------------------------------------------------------------
>
>                 Key: RF-13444
>                 URL: https://issues.jboss.org/browse/RF-13444
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-input
>    Affects Versions: 5.0.0.Alpha2
>         Environment: WildFly CR1
> JSF 2.2
>            Reporter: Juergen Zimmermann
>            Assignee: Lukáš Fryč
>              Labels: jsf22
>             Fix For: 5.0.0.Alpha3
>
>
> I tried f:fileUpload with the latest WildFly snapshot. When uploading a jpeg 
> file I get this stacktrace. Maybe, RF-13061 is back in town...
> {code}
> SEVERE [org.richfaces.log.Application] (default task-6) Exception parsing 
> multipart request: Request prolog cannot be read: 
> org.richfaces.exception.FileUploadException: Exception parsing multipart 
> request: Request prolog cannot be read
>       at 
> org.richfaces.request.MultipartRequestParser.parse(MultipartRequestParser.java:156)
>  [richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
>       at 
> org.richfaces.request.MultipartRequest25.parseIfNecessary(MultipartRequest25.java:77)
>  [richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
>       at 
> org.richfaces.request.MultipartRequest25.getParameter(MultipartRequest25.java:114)
>  [richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
>       at 
> com.sun.faces.context.RequestParameterMap.get(RequestParameterMap.java:75) 
> [jsf-impl-2.2.4-jbossorg-1.jar:]
>       at 
> com.sun.faces.context.RequestParameterMap.get(RequestParameterMap.java:56) 
> [jsf-impl-2.2.4-jbossorg-1.jar:]
>       at java.util.Collections$UnmodifiableMap.get(Collections.java:1339) 
> [rt.jar:1.7.0_45]
>       at 
> com.sun.faces.application.view.MultiViewHandler.calculateRenderKitId(MultiViewHandler.java:220)
>  [jsf-impl-2.2.4-jbossorg-1.jar:]
>       at 
> javax.faces.application.ViewHandlerWrapper.calculateRenderKitId(ViewHandlerWrapper.java:157)
>  [jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
>       at 
> javax.faces.application.ViewHandlerWrapper.calculateRenderKitId(ViewHandlerWrapper.java:157)
>  [jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
>       at 
> javax.faces.application.ViewHandlerWrapper.calculateRenderKitId(ViewHandlerWrapper.java:157)
>  [jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
>       at 
> com.sun.faces.context.FacesContextImpl.isPostback(FacesContextImpl.java:212) 
> [jsf-impl-2.2.4-jbossorg-1.jar:]
>       at 
> javax.faces.context.FacesContextWrapper.isPostback(FacesContextWrapper.java:461)
>  [jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
>       at 
> com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:193) 
> [jsf-impl-2.2.4-jbossorg-1.jar:]
>       at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
> [jsf-impl-2.2.4-jbossorg-1.jar:]
>       at 
> com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121) 
> [jsf-impl-2.2.4-jbossorg-1.jar:]
>       at 
> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
> [jsf-impl-2.2.4-jbossorg-1.jar:]
>       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 
> [jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
>       at 
> io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:87)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:70)
>       at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
>  [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52)
>  [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51)
>  [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
>  [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
>  [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:67)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:70)
>  [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
>  [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
>       at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
>  [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
>  [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:239)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:226)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:72)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:145)
>  [undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.server.Connectors.executeRootHandler(Connectors.java:164) 
> [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:654) 
> [undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>  [rt.jar:1.7.0_45]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>  [rt.jar:1.7.0_45]
>       at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
> Caused by: java.io.IOException: Request prolog cannot be read
>       at 
> org.richfaces.request.MultipartRequestParser.readProlog(MultipartRequestParser.java:270)
>  [richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
>       at 
> org.richfaces.request.MultipartRequestParser.initialize(MultipartRequestParser.java:172)
>  [richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
>       at 
> org.richfaces.request.MultipartRequestParser.parse(MultipartRequestParser.java:148)
>  [richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
>       ... 43 more
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to