package org.geoserver.rest; import javax.servlet.http.HttpServletRequest; import org.restlet.data.Reference; import org.restlet.data.Request; import com.noelios.restlet.ext.servlet.ServletCall; import com.noelios.restlet.http.HttpRequest; /** * Utility class for Restlets. * * @author Justin Deoliveira, The Open Planning Project * */ public class RESTUtils { /** * Returns the underlying HttpServletRequest from a Restlet Request object. * <p> * Note that this only returns a value in the case where the Restlet * request/call is originating from a servlet. * </p> * @return The HttpServletRequest, or null. */ public static HttpServletRequest getServletRequest( Request request ) { if ( request instanceof HttpRequest ) { HttpRequest httpRequest = (HttpRequest) request; if ( httpRequest.getHttpCall() instanceof ServletCall ) { ServletCall call = (ServletCall) httpRequest.getHttpCall(); return call.getRequest(); } } return null; } public static String getBaseURL( Request request ) { Reference ref = request.getResourceRef(); HttpServletRequest servletRequest = getServletRequest(request); if ( servletRequest != null ) { String baseURL = ref.getIdentifier(); return baseURL.substring(0, baseURL.length()-servletRequest.getPathInfo().length()); } else { return ref.getParentRef().getIdentifier(); } } }