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

Mark Kahl updated CXF-8893:
---------------------------
    Description: 
There are some functions that explicitly append a slash to URL's (see below), 
which is not always helpful. I have a client, unfortunately not under my 
jurisdiction, that refuses to work with my SOAP-service, since the service 
exports a WSDL-file, generated by CXF, that has a slash appended.

I understand that just skipping the slash probably will affect a plethora of 
applications that rely on it, so maybe an option could be introduced modifying 
line 178 in the class: "PackageUtils" to:
 * return "http://"; + String.join(".", parts) + *((optionNoTrailingSlash) ? "" 
:* '/'{*}){*};

instead of the current:
 * return "http://"; + String.join(".", parts) + '/';

for example.
h1. Statements that immutably append slashes

The following list is the result of a regular expression search, probably not 
all of them are relevant.

core/src/main/java/org/apache/cxf/common/util/PackageUtils.java:178:        
return "http://"; + String.join(".", parts) + '/';
core/src/main/java/org/apache/cxf/helpers/ServiceUtils.java:211:        return 
protocol + "://" + String.join(".", words) + "/";
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java:43:
    private static final String TSPECIALS_ALL = TSPECIALS_PATH + "/";
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java:230: 
           address = address + "/";
rt/rs/description-swagger-ui/src/main/java/org/apache/cxf/jaxrs/swagger/ui/SwaggerUiResolver.java:69:
            return urlStr + UI_RESOURCES_ROOT_START + version + "/";
rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpUrlUtil.java:30:
            pathString = pathString + "/";
systests/microprofile/client/jaxrs/src/test/java/org/apache/cxf/systest/microprofile/rest/client/regex/JaxrsPathRegexTest.java:76:
        String endpointAddress = "http://localhost:"; + PORT + "/";
systests/microprofile/client/jaxrs/src/test/java/org/apache/cxf/systest/microprofile/rest/client/regex/JaxrsPathRegexTest.java:121:
        String endpointAddress = "http://localhost:"; + PORT + "/";
systests/uncategorized/src/test/java/org/apache/cxf/systest/transform/feature/TransformFeatureTest.java:95:
        String endpoint = "http://127.0.0.1:"; + socket.getLocalPort() + "/";
tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ModuleToNSMapper.java:108:
                    parentURI = parentURI + "/";

  was:
There are some functions that explicitly append a slash to URL's (see below), 
which is not always helpful. I have a client, unfortunately not under my 
jurisdiction, that refuses to work with my SOAP-service, since the service 
exports a WSDL-file, generated by CXF, that has a slash appended.

I understand that just skipping the slash probably will affect a plethora of 
applications that rely on it, so maybe an option could be introduced modifying 
line 178 in the class: "PackageUtils" to:
 * return "http://"; + String.join(".", parts) + *(optionNoTrailingSlash) ? "" 
:* '/';

instead of the current:
 * return "http://"; + String.join(".", parts) + '/';

for example.
h1. Statements that immutably append slashes

The following list is the result of a regular expression search, probably not 
all of them are relevant.

core/src/main/java/org/apache/cxf/common/util/PackageUtils.java:178:        
return "http://"; + String.join(".", parts) + '/';
core/src/main/java/org/apache/cxf/helpers/ServiceUtils.java:211:        return 
protocol + "://" + String.join(".", words) + "/";
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java:43:
    private static final String TSPECIALS_ALL = TSPECIALS_PATH + "/";
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java:230: 
           address = address + "/";
rt/rs/description-swagger-ui/src/main/java/org/apache/cxf/jaxrs/swagger/ui/SwaggerUiResolver.java:69:
            return urlStr + UI_RESOURCES_ROOT_START + version + "/";
rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpUrlUtil.java:30:
            pathString = pathString + "/";
systests/microprofile/client/jaxrs/src/test/java/org/apache/cxf/systest/microprofile/rest/client/regex/JaxrsPathRegexTest.java:76:
        String endpointAddress = "http://localhost:"; + PORT + "/";
systests/microprofile/client/jaxrs/src/test/java/org/apache/cxf/systest/microprofile/rest/client/regex/JaxrsPathRegexTest.java:121:
        String endpointAddress = "http://localhost:"; + PORT + "/";
systests/uncategorized/src/test/java/org/apache/cxf/systest/transform/feature/TransformFeatureTest.java:95:
        String endpoint = "http://127.0.0.1:"; + socket.getLocalPort() + "/";
tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ModuleToNSMapper.java:108:
                    parentURI = parentURI + "/";


> Hard coded slashes at the end of SOAP namespaces are not always appreciated
> ---------------------------------------------------------------------------
>
>                 Key: CXF-8893
>                 URL: https://issues.apache.org/jira/browse/CXF-8893
>             Project: CXF
>          Issue Type: Improvement
>          Components: Core, JAX-WS Runtime
>    Affects Versions: 4.0.2
>            Reporter: Mark Kahl
>            Priority: Major
>
> There are some functions that explicitly append a slash to URL's (see below), 
> which is not always helpful. I have a client, unfortunately not under my 
> jurisdiction, that refuses to work with my SOAP-service, since the service 
> exports a WSDL-file, generated by CXF, that has a slash appended.
> I understand that just skipping the slash probably will affect a plethora of 
> applications that rely on it, so maybe an option could be introduced 
> modifying line 178 in the class: "PackageUtils" to:
>  * return "http://"; + String.join(".", parts) + *((optionNoTrailingSlash) ? 
> "" :* '/'{*}){*};
> instead of the current:
>  * return "http://"; + String.join(".", parts) + '/';
> for example.
> h1. Statements that immutably append slashes
> The following list is the result of a regular expression search, probably not 
> all of them are relevant.
> core/src/main/java/org/apache/cxf/common/util/PackageUtils.java:178:        
> return "http://"; + String.join(".", parts) + '/';
> core/src/main/java/org/apache/cxf/helpers/ServiceUtils.java:211:        
> return protocol + "://" + String.join(".", words) + "/";
> rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java:43:
>     private static final String TSPECIALS_ALL = TSPECIALS_PATH + "/";
> rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java:230:
>             address = address + "/";
> rt/rs/description-swagger-ui/src/main/java/org/apache/cxf/jaxrs/swagger/ui/SwaggerUiResolver.java:69:
>             return urlStr + UI_RESOURCES_ROOT_START + version + "/";
> rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpUrlUtil.java:30:
>             pathString = pathString + "/";
> systests/microprofile/client/jaxrs/src/test/java/org/apache/cxf/systest/microprofile/rest/client/regex/JaxrsPathRegexTest.java:76:
>         String endpointAddress = "http://localhost:"; + PORT + "/";
> systests/microprofile/client/jaxrs/src/test/java/org/apache/cxf/systest/microprofile/rest/client/regex/JaxrsPathRegexTest.java:121:
>         String endpointAddress = "http://localhost:"; + PORT + "/";
> systests/uncategorized/src/test/java/org/apache/cxf/systest/transform/feature/TransformFeatureTest.java:95:
>         String endpoint = "http://127.0.0.1:"; + socket.getLocalPort() + "/";
> tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ModuleToNSMapper.java:108:
>                     parentURI = parentURI + "/";



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to