JBoss Community

Passing a Regex to RestEasy via the URL ?

created by Craig Horrell in JBoss Web Services - View the full discussion

Hi,

 

I am trying to pass a Regex via the URL to a reasteasy Web Service. In the JS I use encodeURL() to encode it. On the server side, it gets decoded before being parsed and then gets a parse error.

 

Encoded URL:

http://localhost:8180/rest/resource/v2/weightTol/insertNew&clientRef=test3&client=99999&forcePrint=false&trackFmt=%5E420%5B0-9%5D%7B5%7D91%5B0-9%5D%7B20%7D$

 

Decoded URL (from stack trace):

http://localhost:8180/rest/resource/v2/weightTol/insertNew?clientRef=test3&client=99999&forcePrint=false&trackFmt=^420[0-9]{5}91[0-9]{20}$

 

Stack Trace:

 

2011-04-27 11:14:49,043 WARN  [org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher] Failed to parse request.

java.lang.IllegalArgumentException

    at java.net.URI.create(URI.java:842)

    at org.jboss.resteasy.specimpl.UriInfoImpl.<init>(UriInfoImpl.java:70)

    at org.jboss.resteasy.plugins.server.servlet.ServletUtil.extractUriInfo(ServletUtil.java:72)

    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:180)

    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:48)

    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:43)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)

    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)

    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)

    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)

    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)

    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)

    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)

    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)

    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)

    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)

    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

    at java.lang.Thread.run(Thread.java:619)

Caused by: java.net.URISyntaxException: Illegal character in query at index 115: http://localhost:8180/rest/resource/v2/weightTol/insertNew?clientRef=test3&client=300470&forcePrint=false&trackFmt=^420[0-9]{5}91[0-9]{20}$

    at java.net.URI$Parser.fail(URI.java:2809)

    at java.net.URI$Parser.checkChars(URI.java:2982)

    at java.net.URI$Parser.parseHierarchical(URI.java:3072)

    at java.net.URI$Parser.parse(URI.java:3014)

    at java.net.URI.<init>(URI.java:578)

    at java.net.URI.create(URI.java:840)

    ... 27 more

2011-04-27 11:14:49,043 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/rest].[Resteasy]] Servlet.service() for servlet Resteasy threw exception

java.lang.NullPointerException

    at org.jboss.resteasy.plugins.server.servlet.HttpServletInputMessage.<init>(HttpServletInputMessage.java:60)

    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.createHttpRequest(HttpServletDispatcher.java:64)

    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.createResteasyHttpRequest(HttpServletDispatcher.java:53)

    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:190)

    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:48)

    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:43)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)

    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)

    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)

    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)

    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)

    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)

    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)

    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)

    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)

    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)

    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

    at java.lang.Thread.run(Thread.java:619)

 

My question is: How can I pass the Regex to the WS ?

 

Thanks,

Craig.

Reply to this message by going to Community

Start a new discussion in JBoss Web Services at Community