Michael Bolz created OLINGO-774:
-----------------------------------

             Summary: Handling of special characters in FunctionImportParameter
                 Key: OLINGO-774
                 URL: https://issues.apache.org/jira/browse/OLINGO-774
             Project: Olingo
          Issue Type: Bug
          Components: odata2-core
    Affects Versions: V2 2.0.4
            Reporter: Michael Bolz
            Priority: Minor


As specified in OData V2 {{Edm.String}} {{FunctionImportParameter}} can contain 
UTF-8 characters (see 
[spec|http://www.odata.org/documentation/odata-version-2-0/overview/#AbstractTypeSystem]).

In Olingo V2 for a request with a Function Parameter e.g. {{q='Wa|lter'}} the 
use of (some) special characters (here: {{|}}) leads to an exception.
As workaround the parameter can be send as URL encoded value.

For the {{ODataServlet}} an {{IllegalArgumentException}} is thrown (stack trace 
below):

{code}
ERROR ScenarioErrorCallback - Internal Server Error
java.lang.IllegalArgumentException
at java.net.URI.create(URI.java:841)
at 
org.apache.olingo.odata2.core.servlet.RestUtil.buildRequestUri(RestUtil.java:266)
at 
org.apache.olingo.odata2.core.servlet.RestUtil.buildODataPathInfo(RestUtil.java:222)
at 
org.apache.olingo.odata2.core.servlet.ODataServlet.handleRequest(ODataServlet.java:184)
at 
org.apache.olingo.odata2.core.servlet.ODataServlet.handle(ODataServlet.java:115)
at 
org.apache.olingo.odata2.core.servlet.ODataServlet.service(ODataServlet.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:695)
Caused by: java.net.URISyntaxException: Illegal character in query at index 74: 
http://localhost:8080/ReferenceScenarioNonJaxrs.svc/EmployeeSearch?q=%27Wa|lter%27
at java.net.URI$Parser.fail(URI.java:2810)
at java.net.URI$Parser.checkChars(URI.java:2983)
at java.net.URI$Parser.parseHierarchical(URI.java:3073)
at java.net.URI$Parser.parse(URI.java:3015)
at java.net.URI.<init>(URI.java:577)
at java.net.URI.create(URI.java:839)
... 23 more
java.lang.IllegalArgumentException
at java.net.URI.create(URI.java:841)
at 
org.apache.olingo.odata2.core.servlet.RestUtil.buildRequestUri(RestUtil.java:266)
at 
org.apache.olingo.odata2.core.servlet.RestUtil.buildODataPathInfo(RestUtil.java:222)
at 
org.apache.olingo.odata2.core.servlet.ODataServlet.handleRequest(ODataServlet.java:184)
at 
org.apache.olingo.odata2.core.servlet.ODataServlet.handle(ODataServlet.java:115)
at 
org.apache.olingo.odata2.core.servlet.ODataServlet.service(ODataServlet.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:695)
Caused by: java.net.URISyntaxException: Illegal character in query at index 74: 
http://localhost:8080/ReferenceScenarioNonJaxrs.svc/EmployeeSearch?q=%27Wa|lter%27
at java.net.URI$Parser.fail(URI.java:2810)
at java.net.URI$Parser.checkChars(URI.java:2983)
at java.net.URI$Parser.parseHierarchical(URI.java:3073)
at java.net.URI$Parser.parse(URI.java:3015)
at java.net.URI.<init>(URI.java:577)
at java.net.URI.create(URI.java:839)
... 23 more

{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to