cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marat (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CXF-6302) JAXRS issue with encoding in URL
Date Wed, 18 Mar 2015 11:50:40 GMT

     [ https://issues.apache.org/jira/browse/CXF-6302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Marat updated CXF-6302:
-----------------------
    Description: 
I use url "/Test%20Test/Test%20Test/Hello" that define while create server via JAXRSServerFactoryBean.
And I have error "No service was found." for my URL.

I found that class org.apache.cxf.transport.http.DestinationRegistryImpl has decoding logic
for SOAP requests, but Restful requests skip this logic. Please, chec checkRestfulRequest
method in this class. Thsi method doesn't use decodedDestinations map for search.

      for (String path : getDestinationsPaths()) {
            String thePath = path.length() > 1 && path.endsWith(SLASH) 
                ? path.substring(0, path.length() - 1) : path;
            if ((address.equals(thePath) 
                || SLASH.equals(thePath)
                || (address.length() &gr; thePath.length() 
                    && address.startsWith(thePath) && address.charAt(thePath.length())
== ''))
                && thePath.length() &gr; len) {
                ret = getDestinationForPath(path);
                len = path.length();
            }
        }

The thePath variable contains "/Test Test/Test Test/Hello", but i registered my service with
URL "/Test%20Test/Test%20Test", so equals is false.

Please, could you fix this issue. It is critical for us, because our URL can contains whitespaces.


Thank you.

  was:
I use url "/Test%20Test/Test%20Test/Hello" that define while create server via JAXRSServerFactoryBean.
And I have error "No service was found." for my URL.

I found that class org.apache.cxf.transport.http.DestinationRegistryImpl has decoding logic
for SOAP requests, but Restful requests skip this logic. Please, chec checkRestfulRequest
method in this class. Thsi method doesn't use decodedDestinations map for search.

      for (String path : getDestinationsPaths()) {
            String thePath = path.length() > 1 && path.endsWith(SLASH) 
                ? path.substring(0, path.length() - 1) : path;
            if ((address.equals(thePath) 
                || SLASH.equals(thePath)
                || (address.length() > thePath.length() 
                    && address.startsWith(thePath) && address.charAt(thePath.length())
== ''))
                && thePath.length() > len) {
                ret = getDestinationForPath(path);
                len = path.length();
            }
        }

The thePath variable contains "/Test Test/Test Test/Hello", but i registered my service with
URL "/Test%20Test/Test%20Test", so equals is false.

Please, could you fix this issue. It is critical for us, because our URL can contains whitespaces.


Thank you.


> JAXRS issue with encoding in URL
> --------------------------------
>
>                 Key: CXF-6302
>                 URL: https://issues.apache.org/jira/browse/CXF-6302
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.0.3
>            Reporter: Marat
>            Priority: Minor
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> I use url "/Test%20Test/Test%20Test/Hello" that define while create server via JAXRSServerFactoryBean.
And I have error "No service was found." for my URL.
> I found that class org.apache.cxf.transport.http.DestinationRegistryImpl has decoding
logic for SOAP requests, but Restful requests skip this logic. Please, chec checkRestfulRequest
method in this class. Thsi method doesn't use decodedDestinations map for search.
>       for (String path : getDestinationsPaths()) {
>             String thePath = path.length() > 1 && path.endsWith(SLASH) 
>                 ? path.substring(0, path.length() - 1) : path;
>             if ((address.equals(thePath) 
>                 || SLASH.equals(thePath)
>                 || (address.length() &gr; thePath.length() 
>                     && address.startsWith(thePath) && address.charAt(thePath.length())
== ''))
>                 && thePath.length() &gr; len) {
>                 ret = getDestinationForPath(path);
>                 len = path.length();
>             }
>         }
> The thePath variable contains "/Test Test/Test Test/Hello", but i registered my service
with URL "/Test%20Test/Test%20Test", so equals is false.
> Please, could you fix this issue. It is critical for us, because our URL can contains
whitespaces. 
> Thank you.



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

Mime
View raw message