-
Notifications
You must be signed in to change notification settings - Fork 317
Closed
Description
Kaan Yamanyar opened SWS-784 and commented
With UriEndpointMapping you have to map the whole url in case of http protocol is used. With following class, url path instead of full uri is used. So that hostname and port is not important.
Mapping with UriEndpointMapping and URLPathEndpointMapping
"http://theserver:9084/service/abc" -> "/service/abc"
Please add a class like:
package org.springframework.ws.server.endpoint.mapping;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.server.endpoint.mapping.AbstractMapBasedEndpointMapping;
import org.springframework.ws.transport.WebServiceConnection;
import org.springframework.ws.transport.context.TransportContext;
import org.springframework.ws.transport.context.TransportContextHolder;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Locale;
/**
*
*@author Kaan Yamanyar
*/
public class URLPathEndpointMapping extends AbstractMapBasedEndpointMapping {
@Override
protected boolean validateLookupKey(String key) {
try {
new URI(key);
return true;
} catch (URISyntaxException e) {
return false;
}
}
@Override
protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception {
TransportContext transportContext = TransportContextHolder.getTransportContext();
if (transportContext != null) {
WebServiceConnection connection = transportContext.getConnection();
if (connection != null) {
String connectionUri = connection.getUri().toString();
URL connectionURL = new URL(connectionUri);
String path = connectionURL.getPath().toLowerCase(Locale.ENGLISH);
logger.debug("Required endpoint: "+path);
return path;
}
}
return null;
}
}
Referenced from: commits b0b9e56
Metadata
Metadata
Assignees
Labels
type: enhancementA general enhancementA general enhancement