Skip to content

Add URLPathEndpointMapping Feature [SWS-784] #866

@gregturn

Description

@gregturn

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

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions