[jira] [Comment Edited] (WICKET-4803) Unwrapped IllegalArgumentException in WicketURLDecoder
[ https://issues.apache.org/jira/browse/WICKET-4803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13581356#comment-13581356 ] Martin Grigorov edited comment on WICKET-4803 at 2/19/13 3:22 PM: -- I'm not sure Wicket can do something about this. Issuing http://localhost:8080/ (note the missing '?') leads to : java.lang.NumberFormatException: %% at org.eclipse.jetty.util.TypeUtil.parseInt(TypeUtil.java:320) at org.eclipse.jetty.http.HttpURI.getDecodedPath(HttpURI.java:560) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:440) at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:884) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:938) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66) at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) at java.lang.Thread.run(Thread.java:662) i.e. again error 500. The only way to show a Wicket page as a handler is to add: error-page error-code500/error-code location/error/location /error-page to web.xml and #mountPage(error, getApplicationSettings().getInternalErrorPage()); was (Author: mgrigorov): I'm not sure Wicket can do something about this. Issuing http://localhost:8080/ (not the missing '?') leads to : java.lang.NumberFormatException: %% at org.eclipse.jetty.util.TypeUtil.parseInt(TypeUtil.java:320) at org.eclipse.jetty.http.HttpURI.getDecodedPath(HttpURI.java:560) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:440) at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:884) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:938) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66) at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) at java.lang.Thread.run(Thread.java:662) i.e. again error 500. The only way to show a Wicket page as a handler is to add: error-page error-code500/error-code location/error/location /error-page to web.xml and #mountPage(error, getApplicationSettings().getInternalErrorPage()); Unwrapped IllegalArgumentException in WicketURLDecoder -- Key: WICKET-4803 URL: https://issues.apache.org/jira/browse/WICKET-4803 Project: Wicket Issue Type: Bug Components: wicket Affects Versions: 1.5.8, 6.5.0 Reporter: Johan Heylen Assignee: Martin Grigorov Priority: Minor Fix For: 1.5.10 Attachments: WICKET-4803-quickstart-testcase-and-example.zip In the class: org.apache.wicket.protocol.http.WicketURLDecoder there are two IllegalArgumentException which should be wrapped in WicketRuntimeException, otherwise they are caught by the exception handler form the servlet container (jetty, tomcat, ...) which then uses their http 500 error code configuration instead of the exception handling of wicket. Wrapping them would be good for consistency and help manage runtime exceptions. These are the two exceptions: throw new IllegalArgumentException(URLDecoder: Incomplete trailing escape (%) pattern); throw new IllegalArgumentException(URLDecoder: Illegal hex characters in escape (%) pattern - + e.getMessage()); -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more
[jira] [Comment Edited] (WICKET-4803) Unwrapped IllegalArgumentException in WicketURLDecoder
[ https://issues.apache.org/jira/browse/WICKET-4803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13575858#comment-13575858 ] Jan Riehn edited comment on WICKET-4803 at 2/11/13 4:02 PM: Hej Martin, maybe the problem is not well demonstrated. this issue can be reconstructed using the wicket 1.5.9 quickstart [http://wicket.apache.org/start/quickstart.html]. An invalid request like http://localhost:8080/?%%%; throws the following exception: java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: %% at org.apache.wicket.request.UrlDecoder.decode(UrlDecoder.java:162) at org.apache.wicket.request.UrlDecoder.decode(UrlDecoder.java:76) at org.apache.wicket.request.Url.decodeParameter(Url.java:601) at org.apache.wicket.request.Url.parseQueryParameter(Url.java:104) at org.apache.wicket.request.Url.parse(Url.java:243) at org.apache.wicket.protocol.http.servlet.ServletWebRequest.getContextRelativeUrl(ServletWebRequest.java:222) at org.apache.wicket.protocol.http.servlet.ServletWebRequest.init(ServletWebRequest.java:126) at org.apache.wicket.protocol.http.servlet.ServletWebRequest.init(ServletWebRequest.java:83) at org.apache.wicket.protocol.http.WebApplication.newWebRequest(WebApplication.java:413) at org.apache.wicket.protocol.http.WebApplication.createWebRequest(WebApplication.java:458) at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:183) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:244) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1326) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:940) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:874) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110) at org.eclipse.jetty.server.Server.handle(Server.java:349) at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441) at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:904) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217) at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:50) at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:245) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533) at java.lang.Thread.run(Unknown Source) Is there any advice on how to handle such invalid requests? was (Author: jriehn): Hej Martin, maybe the problem is not well demonstrated. this issue can be reconstructed using the wicket 1.5.9 quickstart [http://wicket.apache.org/start/quickstart.html]. An invalid request like http://localhost:8080/?%%%; throws the following exception: java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: %% at org.apache.wicket.request.UrlDecoder.decode(UrlDecoder.java:162) at org.apache.wicket.request.UrlDecoder.decode(UrlDecoder.java:76) at org.apache.wicket.request.Url.decodeParameter(Url.java:601) at org.apache.wicket.request.Url.parseQueryParameter(Url.java:104) at org.apache.wicket.request.Url.parse(Url.java:243) at org.apache.wicket.protocol.http.servlet.ServletWebRequest.getContextRelativeUrl(ServletWebRequest.java:222) at org.apache.wicket.protocol.http.servlet.ServletWebRequest.init(ServletWebRequest.java:126) at org.apache.wicket.protocol.http.servlet.ServletWebRequest.init(ServletWebRequest.java:83) at org.apache.wicket.protocol.http.WebApplication.newWebRequest(WebApplication.java:413) at org.apache.wicket.protocol.http.WebApplication.createWebRequest(WebApplication.java:458) at