[SWS-784] Add URLPathEndpointMapping Feature Created: 29/Jun/12  Updated: 10/Jul/12  Resolved: 10/Jul/12

Status: Resolved
Project: Spring Web Services
Component/s: Core
Affects Version/s: None
Fix Version/s: 2.1.1

Type: Improvement Priority: Minor
Reporter: Kaan Yamanyar Assignee: Arjen Poutsma
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: 11m
Original Estimate: Not Specified


 Description   

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;
    }
}


Generated at Mon Dec 11 15:21:47 UTC 2017 using JIRA 6.4.14#64029-sha1:ae256fe0fbb912241490ff1cecfb323ea0905ca5.