[
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)