[jira] [Comment Edited] (WICKET-4803) Unwrapped IllegalArgumentException in WicketURLDecoder

2013-02-19 Thread Martin Grigorov (JIRA)

[ 
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

2013-02-11 Thread Jan Riehn (JIRA)

[ 
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