Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add URLPathEndpointMapping Feature [SWS-784] #866

Closed
gregturn opened this issue Jun 29, 2012 · 0 comments
Closed

Add URLPathEndpointMapping Feature [SWS-784] #866

gregturn opened this issue Jun 29, 2012 · 0 comments

Comments

@gregturn
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants