[ http://mc4j.org/jira/browse/STS-235?page=comments#action_10405 ]
Andreas Schulz commented on STS-235:
------------------------------------
I implemented a custom requestWrapper but that did not work. If I extend the
StripesRequestWrapper, I can't (in case of a failure ) call the super(request)
method to get a default request from the HttpServletRequestWrapper because the
StripesRequestWrapper (which is my parent class) did not come with such a
constructor. So if I call the wrapRequest method of my custom wrapper and an
IOException is thrown, all I can do is call the super(request, pathToTempDir,
maxTotalPostSize); which will also result in an IOException.
After hours of trail and error I decided to rebuild Stripes using a modified
StripesRequestWrapper with a changed wrapRequest() method:
public StripesRequestWrapper(HttpServletRequest request,
String pathToTempDir,
int maxTotalPostSize) throws
StripesServletException {
super(request);
try {
String contentType = request.getContentType();
if (contentType != null &&
contentType.startsWith("multipart/form-data")) {
this.multipart = new MultipartRequest(request,
pathToTempDir,
maxTotalPostSize,
request.getCharacterEncoding());
}
}
catch (IOException e) {
Matcher matcher = exceptionPattern.matcher(e.getMessage());
if (matcher.matches()) {
throw new
FileUploadLimitExceededException(Integer.parseInt(matcher.group(2)),
Integer.parseInt(matcher.group(1)));
}
else {
if(e.getMessage().equals("Corrupt form data: premature
ending")){
// do further testings whether or not this is a "real"
exception
// ...
}
else{
throw new StripesServletException("Could not construct
request wrapper.", e);
}
}
}
}
And that one works fine with Magnolia. Maybe you could provide the
StripesRequestWrapper with a default constructor like this:
public StripesRequestWrapper(HttpServletRequest servletRequest){
super(servletRequest);
}
Then I could subclass the StripesRequestWrapper and in case of a failure call
super(request) which would lead the request through the StripesRequestWrapper
directly into the HttpServletRequestWrapper. In that case I'm not forced to
change the original stripes source.
> multipart/form-data without file upload
> ---------------------------------------
>
> Key: STS-235
> URL: http://mc4j.org/jira/browse/STS-235
> Project: Stripes
> Issue Type: Bug
> Affects Versions: Release 1.3.2
> Reporter: Andreas Schulz
> Assigned To: Tim Fennell
>
> If the StripesFilter receives a multipart/form-data request with no file
> attached to it an IOException is thrown. But some applications like Magnolia
> CMS use this enctype by default. So it crashes when using Stripes.
> Stacktrace:
> java.io.IOException: Corrupt form data: premature ending
> at
> com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:205)
> at
> com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)
> at
> com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:173)
> at
> net.sourceforge.stripes.controller.StripesRequestWrapper.<init>(StripesRequestWrapper.java:109)
> at
> net.sourceforge.stripes.controller.StripesFilter.wrapRequest(StripesFilter.java:239)
> at
> net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:209)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> at
> info.magnolia.cms.filters.MagnoliaManagedFilter$CustomFilterChain.doFilter(MagnoliaManagedFilter.java:80)
> at
> info.magnolia.cms.filters.UnsetContextFilter.doFilter(UnsetContextFilter.java:44)
> at
> info.magnolia.cms.filters.MagnoliaManagedFilter$CustomFilterChain.doFilter(MagnoliaManagedFilter.java:84)
> at
> info.magnolia.cms.security.SecurityFilter.doFilter(SecurityFilter.java:96)
> at
> info.magnolia.cms.filters.MagnoliaManagedFilter$CustomFilterChain.doFilter(MagnoliaManagedFilter.java:84)
> at
> info.magnolia.cms.filters.MultipartRequestFilter.doFilter(MultipartRequestFilter.java:80)
> at
> info.magnolia.cms.filters.MagnoliaManagedFilter$CustomFilterChain.doFilter(MagnoliaManagedFilter.java:84)
> at
> info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:66)
> at
> info.magnolia.cms.filters.MagnoliaManagedFilter$CustomFilterChain.doFilter(MagnoliaManagedFilter.java:84)
> at
> info.magnolia.cms.filters.MagnoliaManagedFilter.doFilter(MagnoliaManagedFilter.java:53)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
> at
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
> at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
> at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
> at java.lang.Thread.run(Unknown Source)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://mc4j.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development