package de.axone.web; import java.util.EnumSet; import java.util.Enumeration; import java.util.Map; import de.axone.web.SuperURL.Part; /* * http://www.axon-e.de/foo/bar?key=value * * request.getRequestURI() -> /foo/bar?key=value * request.getRequestURL() -> http://www.axon-e.de/foo/bar (without query) * request.getPathInfo() -> /foo/bar (including /) * request.getQueryString() -> key=value (without ?) */ public class SuperURLHttpServletRequest extends TestHttpServletRequest { private final SuperURL url; private static final SuperURLPrinter printer = SuperURLPrinter.FullEncoded; public SuperURLHttpServletRequest( String url ){ this.url = SuperURLBuilders.fromString().build( url ); } public SuperURLHttpServletRequest( SuperURL url ){ this.url = url; } @Override public StringBuffer getRequestURL() { return new StringBuffer( printer.exclude( EnumSet.of( Part.Query )).toString( url ) ); } @Override public String getRequestURI() { return printer.include( Part.FROM_PATH ).toString( url ); } @Override public String getParameter( String key ) { return url.getQueryParameter( key ); } @Override public Map<String, String[]> getParameterMap() { return url.getQuery().toParameterMap(); } @Override public Enumeration<String> getParameterNames() { return url.getQuery().getParameterNames(); } @Override public String[] getParameterValues( String arg0 ) { return url.getQuery().getParameterValues( arg0 ); } @Override public String getQueryString() { return printer.toString( url.getQuery() ); } @Override public String toString(){ return "\n" + "ME: " + url.toDebug() + "\n" + "URI: " + getRequestURI() + "\n" + "URL: " + getRequestURL() + "\n" + "PIn: " + getPathInfo() + "\n" + "QSt: " + getQueryString() + "\n" ; } }