Author: julien(a)jboss.com
Date: 2008-04-10 18:53:05 -0400 (Thu, 10 Apr 2008)
New Revision: 10526
Added:
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/RenderURLTestCase.java
Modified:
modules/web/trunk/web/src/main/java/org/jboss/portal/web/Body.java
modules/web/trunk/web/src/main/java/org/jboss/portal/web/WebRequest.java
modules/web/trunk/web/src/main/java/org/jboss/portal/web/WebResponse.java
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointRequest.java
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointResponse.java
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointServlet.java
modules/web/trunk/web/src/main/java/org/jboss/portal/web/impl/AbstractWebRequest.java
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/EndPointTestCase.java
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/GetTestCase.java
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/PostApplicationXWWWFormURLEncodedTestCase.java
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/PostMultipartFormDataTestCase.java
modules/web/trunk/web/src/test/resources/portal-test-endpoint-jar/org/jboss/portal/test/web/server-beans.xml
Log:
added more testing to the endpoint stuff in web module
Modified: modules/web/trunk/web/src/main/java/org/jboss/portal/web/Body.java
===================================================================
--- modules/web/trunk/web/src/main/java/org/jboss/portal/web/Body.java 2008-04-10 20:35:44
UTC (rev 10525)
+++ modules/web/trunk/web/src/main/java/org/jboss/portal/web/Body.java 2008-04-10 22:53:05
UTC (rev 10526)
@@ -28,6 +28,7 @@
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.IOException;
+import java.util.Map;
/**
* The body of a request.
@@ -71,7 +72,7 @@
this.parameters = parameters;
}
- public ParameterMap getParameters()
+ public Map<String, String[]> getParameters()
{
return parameters;
}
Modified: modules/web/trunk/web/src/main/java/org/jboss/portal/web/WebRequest.java
===================================================================
--- modules/web/trunk/web/src/main/java/org/jboss/portal/web/WebRequest.java 2008-04-10
20:35:44 UTC (rev 10525)
+++ modules/web/trunk/web/src/main/java/org/jboss/portal/web/WebRequest.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -22,14 +22,14 @@
******************************************************************************/
package org.jboss.portal.web;
-import org.jboss.portal.common.util.ParameterMap;
import org.jboss.portal.common.net.media.MediaType;
import javax.servlet.http.HttpServletRequest;
import java.nio.charset.Charset;
+import java.util.Map;
/**
- * Add useful information about an <code>HttpServletRequest</code>.
+ * Extends the HttpServletRequest interface to add web module concepts.
*
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 1.1 $
@@ -52,15 +52,50 @@
/** . */
Charset UTF_8_CHARSET = Charset.forName("UTF-8");
+ /**
+ * Returns the an enum instead of a string as returned by
+ * {@link javax.servlet.http.HttpServletRequest#getMethod()} which is more convenient
to use sometimes.
+ *
+ * @return the verb
+ */
Verb getVerb();
- ParameterMap getQueryParameterMap();
+ /**
+ * Returns the query parameter map. If no query string was provided it returns an
empty map in order
+ * to avoid to return a null object.
+ *
+ * @return the query parameter map
+ */
+ Map<String, String[]> getQueryParameterMap();
+ /**
+ * Returns the body of the request when the request is of type POST otherwise return
null.
+ *
+ * @return the body
+ */
Body getBody();
+ /**
+ * Returns the media type or null if none was provided.
+ *
+ * @return the media type
+ */
MediaType getMediaType();
+ /**
+ * Returns the web request path which is a consistent value and does not depend on the
kind of mapping of the underlying
+ * servlet. It is never null and always start with a '/' char.
+ *
+ * @return the web request path
+ */
String getWebRequestPath();
+ /**
+ * Returns the web context path. The web context path value is computed such as the
value returned by the method
+ * {@link javax.servlet.http.HttpServletRequest#getRequestURI()} is a prefix of the
concatenation of the web context
+ * path and the web request path.
+ *
+ * @return the web context path
+ */
String getWebContextPath();
}
Modified: modules/web/trunk/web/src/main/java/org/jboss/portal/web/WebResponse.java
===================================================================
--- modules/web/trunk/web/src/main/java/org/jboss/portal/web/WebResponse.java 2008-04-10
20:35:44 UTC (rev 10525)
+++ modules/web/trunk/web/src/main/java/org/jboss/portal/web/WebResponse.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -30,7 +30,7 @@
import java.io.IOException;
/**
- * todo
+ * Extends the HttpServletResponse interface to add web module concepts.
*
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 1.1 $
@@ -39,30 +39,31 @@
{
/**
- * Renders an URL and returns the rendered string.
+ * <p>Renders an URL and returns the rendered string.</p>
*
- * The path argument is mandatory and must begin with '/' char. The parameters
argument is optional and the
- * wantedURLFormat is also optional.
+ * <p>The path argument is mandatory and must begin with '/' char. The
parameters argument is optional and the
+ * wantedURLFormat is also optional.</p>
*
+ * <p>If the parameter map is not null, it must provide a key set with no null
elements and the values must be
+ * string arrays with no null entries. Any entry with an empty length value will be
skipped.</p>
+ *
* @param path the path relative to the web context
* @param parameters the optional parameter map
* @param wantedURLFormat the url format needed
* @return the rendered URL
- * @throws IllegalArgumentException if the path value is not correct
+ * @throws IllegalArgumentException if the path value is not correct or the parameter
map is corrupted
*/
String renderURL(String path, Map<String, String[]> parameters, URLFormat
wantedURLFormat) throws IllegalArgumentException;
/**
* Renders an URL in the provided writer.
*
- * The path argument is mandatory and must begin with '/' char. The parameters
argument is optional and the
- * wantedURLFormat is also optional.
- *
+ * @see org.jboss.portal.web.WebResponse#renderURL(String, java.util.Map,
org.jboss.portal.common.servlet.URLFormat)
* @param writer the writer
* @param path the path relative to the web context
* @param parameters the optional parameter map
* @param wantedURLFormat the url format needed
- * @throws IllegalArgumentException if the path value is not correct or the write is
null
+ * @throws IllegalArgumentException if the path value is not correct or the write is
null or the parameter map is corrupted
* @throws IOException any IOException thrown by the writer
*/
void renderURL(Writer writer, String path, Map<String, String[]> parameters,
URLFormat wantedURLFormat) throws IllegalArgumentException, IOException;
Modified:
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointRequest.java
===================================================================
---
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointRequest.java 2008-04-10
20:35:44 UTC (rev 10525)
+++
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointRequest.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -41,7 +41,14 @@
/** . */
private final String webContextPath;
- public EndPointRequest(HttpServletRequest req, String webRequestPath, String
webContextPath)
+ /** . */
+ private final int mappingType;
+
+ public EndPointRequest(
+ HttpServletRequest req,
+ String webRequestPath,
+ String webContextPath,
+ int mappingType)
throws UnsupportedEncodingException, IllegalRequestException
{
super(req);
@@ -49,6 +56,7 @@
//
this.webRequestPath = webRequestPath;
this.webContextPath = webContextPath;
+ this.mappingType = mappingType;
}
public String getWebRequestPath()
@@ -60,4 +68,9 @@
{
return webContextPath;
}
+
+ public int getMappingType()
+ {
+ return mappingType;
+ }
}
Modified:
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointResponse.java
===================================================================
---
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointResponse.java 2008-04-10
20:35:44 UTC (rev 10525)
+++
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointResponse.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -28,12 +28,9 @@
import org.jboss.portal.common.text.FastURLEncoder;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
- * Todo: find a way to manage the different servlet that take care of
security/authenticated as today it is hardcoded.
- *
* @author <a href="mailto:julien@jboss-portal.org">Julien
Viet</a>
* @version $Revision: 630 $
*/
@@ -44,38 +41,98 @@
private static final FastURLEncoder urlEncoder = FastURLEncoder.getUTF8Instance();
/** . */
- private final String requestRelativePrefix;
+ private static final URLFormat nullFormat = URLFormat.create(
+ null,
+ null,
+ null,
+ null,
+ null);
/** . */
- private final String requestPrefix;
+ private String requestRelativePrefix;
- public EndPointResponse(HttpServletRequest req, HttpServletResponse resp)
+ /** . */
+ private String requestPrefix;
+
+ /** . */
+ private final EndPointRequest req;
+
+ public EndPointResponse(EndPointRequest req, HttpServletResponse resp)
{
super(resp);
+
//
- StringBuffer requestRelativePrefix = new StringBuffer();
-
requestRelativePrefix.append(req.getScheme()).append("://").append(req.getServerName());
- if (req.isSecure())
+ this.req = req;
+ }
+
+ private String getRequestRelativePrefix()
+ {
+ if (requestRelativePrefix == null)
{
- if (req.getServerPort() != 443)
+ //
+ StringBuilder requestRelativePrefix = new StringBuilder();
+
+ //
+
requestRelativePrefix.append(req.getScheme()).append("://").append(req.getServerName());
+ if (req.isSecure())
{
+ if (req.getServerPort() != 443)
+ {
+
requestRelativePrefix.append(":").append(Integer.toString(req.getServerPort()));
+ }
+ }
+ else if (req.getServerPort() != 80)
+ {
requestRelativePrefix.append(":").append(Integer.toString(req.getServerPort()));
}
+
+ //
+ requestRelativePrefix.append(req.getContextPath());
+
+ //
+ if (req.getMappingType() != EndPointServlet.DEFAULT_SERVLET_MAPPING)
+ {
+ requestRelativePrefix.append(req.getServletPath());
+ }
+
+ //
+ this.requestRelativePrefix = requestRelativePrefix.toString();
}
- else if (req.getServerPort() != 80)
+
+ //
+ return requestRelativePrefix;
+ }
+
+ private String getRequestPrefix()
+ {
+ if (requestPrefix == null)
{
-
requestRelativePrefix.append(":").append(Integer.toString(req.getServerPort()));
+ this.requestPrefix = req.getMappingType() !=
EndPointServlet.DEFAULT_SERVLET_MAPPING ? req.getContextPath() : req.getContextPath() +
req.getServletPath();
}
- requestRelativePrefix.append(req.getContextPath());
//
- this.requestRelativePrefix = requestRelativePrefix.toString();
- this.requestPrefix = req.getContextPath();
+ return requestPrefix;
}
public String renderURL(String path, Map<String, String[]> parameters, URLFormat
wantedURLFormat) throws IllegalArgumentException
{
+ if (path == null)
+ {
+ throw new IllegalArgumentException("No null path accepted");
+ }
+ if (!path.startsWith("/"))
+ {
+ throw new IllegalArgumentException("Path value " + path + "
should start with a trailing '/'");
+ }
+
+ //
+ if (wantedURLFormat == null)
+ {
+ wantedURLFormat = nullFormat;
+ }
+
+ //
Buffer buffer = new Buffer(wantedURLFormat);
//
@@ -96,43 +153,19 @@
public Buffer(URLFormat format)
{
- if (!format.getRelative())
+ if (Boolean.FALSE.equals(format.getRelative()))
{
- append(requestRelativePrefix);
+ append(getRequestPrefix());
}
else
{
- append(requestPrefix);
+ append(getRequestRelativePrefix());
}
- // Append the servlet path
- if (format.getSecure())
- {
- if (format.getAuthenticated())
- {
- append("/authsec");
- }
- else
- {
- append("/sec");
- }
- }
- else
- {
- if (format.getAuthenticated())
- {
- append("/auth");
- }
- else
- {
- //
- }
- }
-
// Save the prefix length
this.prefixLength = length;
this.format = format;
- this.parameterSeparator = format.getEscapeXML() ? "&" :
"&";
+ this.parameterSeparator = Boolean.TRUE.equals(format.getEscapeXML()) ?
"&" : "&";
}
public String toString(String path, Map<String, String[]> parameters)
@@ -151,9 +184,23 @@
for (Map.Entry parameter: parameters.entrySet())
{
String name = (String)parameter.getKey();
+
+ //
+ if (name == null)
+ {
+ throw new IllegalArgumentException("Null key in the parameter map
are not allowed");
+ }
+
+ //
String[] values = (String[])parameter.getValue();
for (String value : values)
{
+ if (value == null)
+ {
+ throw new IllegalArgumentException("Null value for the key
" + name + " in the parameter map are not allowed");
+ }
+
+ //
append(first ? "?" : parameterSeparator);
append(name, urlEncoder);
append('=');
@@ -167,7 +214,7 @@
String s = asString();
// Let the servlet rewrite the URL if necessary
- if (format.getServletEncoded())
+ if (!Boolean.FALSE.equals(format.getServletEncoded()))
{
s = encodeURL(s);
}
Modified:
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointServlet.java
===================================================================
---
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointServlet.java 2008-04-10
20:35:44 UTC (rev 10525)
+++
modules/web/trunk/web/src/main/java/org/jboss/portal/web/endpoint/EndPointServlet.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -69,7 +69,7 @@
public static final int PATH_MAPPING = 2;
/** . */
- private Integer mappingStyle;
+ private Integer mappingType;
public void init() throws ServletException
{
@@ -103,7 +103,7 @@
log.debug("Found url pattern " + urlPattern + " for end point
servlet " + servletName);
//
- if (mappingStyle != null)
+ if (mappingType != null)
{
throw new ServletException("The same end point servlet " +
servletName + " is mapped several times and this is not allowed");
}
@@ -111,15 +111,15 @@
//
if (urlPattern.equals("/"))
{
- mappingStyle = DEFAULT_SERVLET_MAPPING;
+ mappingType = DEFAULT_SERVLET_MAPPING;
}
else if (urlPattern.equals("/*"))
{
- mappingStyle = ROOT_PATH_MAPPING;
+ mappingType = ROOT_PATH_MAPPING;
}
else if (urlPattern.startsWith("/") &&
urlPattern.endsWith("/*"))
{
- mappingStyle = PATH_MAPPING;
+ mappingType = PATH_MAPPING;
}
else
{
@@ -146,7 +146,7 @@
// Determine the request path
String webRequestPath = null;
String webContextPath = null;
- switch (mappingStyle)
+ switch (mappingType)
{
case DEFAULT_SERVLET_MAPPING:
webRequestPath = requestURI.substring(contextPath.length());
@@ -171,7 +171,11 @@
webContextPath = decoder.encode(webContextPath);
//
- service(new EndPointRequest(req, webRequestPath, webContextPath), new
EndPointResponse(req, resp));
+ EndPointRequest wreq = new EndPointRequest(req, webRequestPath, webContextPath,
mappingType);
+ EndPointResponse wresp = new EndPointResponse(wreq, resp);
+
+ //
+ service(wreq, wresp);
}
protected abstract void service(WebRequest req, WebResponse resp) throws
ServletException, IOException;
@@ -181,8 +185,8 @@
*
* @return the mapping style
*/
- public Integer getMappingStyle()
+ public Integer getMappingType()
{
- return mappingStyle;
+ return mappingType;
}
}
Modified:
modules/web/trunk/web/src/main/java/org/jboss/portal/web/impl/AbstractWebRequest.java
===================================================================
---
modules/web/trunk/web/src/main/java/org/jboss/portal/web/impl/AbstractWebRequest.java 2008-04-10
20:35:44 UTC (rev 10525)
+++
modules/web/trunk/web/src/main/java/org/jboss/portal/web/impl/AbstractWebRequest.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -26,7 +26,6 @@
import org.jboss.portal.common.util.ParameterMap;
import org.jboss.portal.common.net.media.ContentType;
import org.jboss.portal.common.net.media.MediaType;
-import org.jboss.portal.common.net.media.Parameter;
import org.jboss.portal.web.Body;
import org.jboss.portal.web.IllegalRequestException;
import org.jboss.portal.web.WebRequest;
@@ -34,6 +33,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.Map;
+import java.util.Collections;
import java.nio.charset.Charset;
import java.io.UnsupportedEncodingException;
@@ -56,7 +56,7 @@
public static final Charset UTF_8_CHARSET = Charset.forName("UTF-8");
/** . */
- private final ParameterMap queryParameterMap;
+ private final Map<String, String[]> queryParameterMap;
/** . */
private final Body body;
@@ -96,7 +96,7 @@
// Parse the query string to have the get parameters
// The resulting map has its parameters decoded from the x-www-form-url encoding
- ParameterMap queryParameterMap;
+ Map<String, String[]> queryParameterMap;
String queryString = req.getQueryString();
if (queryString != null)
{
@@ -104,7 +104,7 @@
}
else
{
- queryParameterMap = new ParameterMap();
+ queryParameterMap = Collections.emptyMap();
}
// Only affect the charset encoding if the servlet container will decode the
request
@@ -141,6 +141,8 @@
// Values decoded from the query string
String[] queryValues = queryParameterMap.get(paramName);
+
+ //
if (queryValues != null)
{
int bodyValuesLength = paramValues.length - queryValues.length;
@@ -168,7 +170,7 @@
//
this.verb = verb;
- this.queryParameterMap = new ParameterMap(queryParameterMap);
+ this.queryParameterMap = queryParameterMap;
this.body = body;
this.mediaType = mediaType;
}
@@ -178,7 +180,7 @@
return verb;
}
- public ParameterMap getQueryParameterMap()
+ public Map<String, String[]> getQueryParameterMap()
{
return queryParameterMap;
}
Modified:
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/EndPointTestCase.java
===================================================================
---
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/EndPointTestCase.java 2008-04-10
20:35:44 UTC (rev 10525)
+++
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/EndPointTestCase.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -34,7 +34,7 @@
public String rewriteURL(EndPointServlet endPointServlet, String url)
{
- switch (endPointServlet.getMappingStyle())
+ switch (endPointServlet.getMappingType())
{
case EndPointServlet.DEFAULT_SERVLET_MAPPING:
if (url.startsWith("/"))
Modified:
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/GetTestCase.java
===================================================================
---
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/GetTestCase.java 2008-04-10
20:35:44 UTC (rev 10525)
+++
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/GetTestCase.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -23,7 +23,6 @@
package org.jboss.portal.test.web.endpoint;
import org.jboss.portal.test.web.TestServlet;
-import org.jboss.portal.common.util.ParameterMap;
import org.jboss.portal.common.text.FastURLEncoder;
import org.jboss.portal.web.WebRequest;
import org.jboss.portal.web.IllegalRequestException;
@@ -39,6 +38,7 @@
import javax.servlet.ServletException;
import java.io.IOException;
+import java.util.Map;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -58,7 +58,7 @@
{
if (getRequestCount() == 0)
{
- ParameterMap queryParameters = assertNotNull(req.getQueryParameterMap());
+ Map<String, String[]> queryParameters =
assertNotNull(req.getQueryParameterMap());
assertNull(req.getBody());
assertTrue(queryParameters.isEmpty());
@@ -74,7 +74,7 @@
{
try
{
- ParameterMap queryParameters = assertNotNull(req.getQueryParameterMap());
+ Map<String, String[]> queryParameters =
assertNotNull(req.getQueryParameterMap());
assertNull(req.getBody());
assertEquals(3, queryParameters.size());
assertEquals(new String[]{"a_value"},
queryParameters.get("a"));
Modified:
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/PostApplicationXWWWFormURLEncodedTestCase.java
===================================================================
---
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/PostApplicationXWWWFormURLEncodedTestCase.java 2008-04-10
20:35:44 UTC (rev 10525)
+++
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/PostApplicationXWWWFormURLEncodedTestCase.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -24,7 +24,6 @@
import org.jboss.portal.test.web.TestServlet;
import org.jboss.portal.common.text.FastURLEncoder;
-import org.jboss.portal.common.util.ParameterMap;
import org.jboss.portal.web.WebRequest;
import org.jboss.portal.web.Body;
import org.jboss.portal.web.WebResponse;
@@ -41,6 +40,7 @@
import javax.servlet.ServletException;
import java.io.IOException;
+import java.util.Map;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -60,10 +60,10 @@
{
if (getRequestCount() == 0)
{
- ParameterMap queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
+ Map<String, String[]> queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
assertTrue(queryParameters.isEmpty());
Body.Form form = Assert.assertInstanceOf(req.getBody(), Body.Form.class);
- ParameterMap formParameters = form.getParameters();
+ Map<String, String[]> formParameters = form.getParameters();
assertTrue(formParameters.isEmpty());
//
@@ -74,11 +74,11 @@
}
else if (getRequestCount() == 1)
{
- ParameterMap queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
+ Map<String, String[]> queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
assertEquals(1, queryParameters.size());
assertEquals(new String[]{"a_value_query"},
queryParameters.get("a"));
Body.Form form = Assert.assertInstanceOf(req.getBody(), Body.Form.class);
- ParameterMap formParameters = form.getParameters();
+ Map<String, String[]> formParameters = form.getParameters();
assertTrue(formParameters.isEmpty());
//
@@ -91,10 +91,10 @@
}
else if (getRequestCount() == 2)
{
- ParameterMap queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
+ Map<String, String[]> queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
assertTrue(queryParameters.isEmpty());
Body.Form form = Assert.assertInstanceOf(req.getBody(), Body.Form.class);
- ParameterMap formParameters = form.getParameters();
+ Map<String, String[]> formParameters = form.getParameters();
assertEquals(1, formParameters.size());
assertEquals(new String[]{"a_value_body"},
formParameters.get("a"));
@@ -109,11 +109,11 @@
}
else if (getRequestCount() == 3)
{
- ParameterMap queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
+ Map<String, String[]> queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
assertEquals(1, queryParameters.size());
assertEquals(new String[]{"a_value_query"},
queryParameters.get("a"));
Body.Form form = Assert.assertInstanceOf(req.getBody(), Body.Form.class);
- ParameterMap formParameters = form.getParameters();
+ Map<String, String[]> formParameters = form.getParameters();
assertEquals(1, formParameters.size());
assertEquals(new String[]{"a_value_form"},
formParameters.get("a"));
@@ -128,11 +128,11 @@
}
else if (getRequestCount() == 4)
{
- ParameterMap queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
+ Map<String, String[]> queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
assertEquals(1, queryParameters.size());
assertNull(compareString(RANGE_0_255, queryParameters.get("a")[0]));
Body.Form form = Assert.assertInstanceOf(req.getBody(), Body.Form.class);
- ParameterMap formParameters = form.getParameters();
+ Map<String, String[]> formParameters = form.getParameters();
assertEquals(1, formParameters.size());
assertNull(compareString(RANGE_256_512, formParameters.get("a")[0]));
@@ -147,11 +147,11 @@
}
else if (getRequestCount() == 5)
{
- ParameterMap queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
+ Map<String, String[]> queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
assertEquals(1, queryParameters.size());
assertNull(compareString(RANGE_256_512,
queryParameters.get("a")[0]));
Body.Form form = Assert.assertInstanceOf(req.getBody(), Body.Form.class);
- ParameterMap formParameters = form.getParameters();
+ Map<String, String[]> formParameters = form.getParameters();
assertEquals(1, formParameters.size());
assertNull(compareString(RANGE_0_255, formParameters.get("a")[0]));
}
Modified:
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/PostMultipartFormDataTestCase.java
===================================================================
---
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/PostMultipartFormDataTestCase.java 2008-04-10
20:35:44 UTC (rev 10525)
+++
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/PostMultipartFormDataTestCase.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -24,7 +24,6 @@
import org.jboss.portal.test.web.TestServlet;
import org.jboss.portal.common.text.FastURLEncoder;
-import org.jboss.portal.common.util.ParameterMap;
import org.jboss.portal.common.io.IOTools;
import org.jboss.portal.web.WebRequest;
import org.jboss.portal.web.Body;
@@ -44,6 +43,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
+import java.util.Map;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -63,7 +63,7 @@
{
if (getRequestCount() == 0)
{
- ParameterMap queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
+ Map<String, String[]> queryParameters =
Assert.assertNotNull(req.getQueryParameterMap());
Assert.assertTrue(queryParameters.isEmpty());
Body.Raw raw = Assert.assertInstanceOf(req.getBody(), Body.Raw.class);
InputStream in = raw.getInputStream();
Added:
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/RenderURLTestCase.java
===================================================================
---
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/RenderURLTestCase.java
(rev 0)
+++
modules/web/trunk/web/src/test/java/org/jboss/portal/test/web/endpoint/RenderURLTestCase.java 2008-04-10
22:53:05 UTC (rev 10526)
@@ -0,0 +1,183 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.test.web.endpoint;
+
+import org.jboss.unit.driver.DriverResponse;
+import org.jboss.unit.driver.DriverCommand;
+import org.jboss.unit.driver.response.FailureResponse;
+import org.jboss.unit.driver.response.EndTestResponse;
+import org.jboss.unit.remote.driver.handler.http.response.InvokeGetResponse;
+import org.jboss.unit.Failure;
+import static org.jboss.unit.api.Assert.*;
+import org.jboss.portal.test.web.TestServlet;
+import org.jboss.portal.web.WebRequest;
+import org.jboss.portal.web.WebResponse;
+import org.jboss.portal.common.servlet.URLFormat;
+import org.jboss.portal.common.util.Tools;
+
+import javax.servlet.ServletException;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:julien@jboss-portal.org">Julien
Viet</a>
+ * @version $Revision: 630 $
+ */
+public class RenderURLTestCase extends EndPointTestCase
+{
+
+ /** . */
+ private static final URLFormat format = URLFormat.create(null, null, null, null,
null);
+
+ public DriverResponse service(TestServlet testServlet, WebRequest req, WebResponse
resp) throws ServletException, IOException
+ {
+ if (getRequestCount() == 0)
+ {
+ try
+ {
+ resp.renderURL(null, new HashMap<String, String[]>(), format);
+ fail();
+ }
+ catch (IllegalArgumentException ignore)
+ {
+ }
+ try
+ {
+ resp.renderURL("", new HashMap<String, String[]>(), format);
+ fail();
+ }
+ catch (IllegalArgumentException ignore)
+ {
+ }
+ try
+ {
+ HashMap<String, String[]> corruptedMap = new HashMap<String,
String[]>();
+ corruptedMap.put(null, new String[0]);
+ resp.renderURL("/", corruptedMap, format);
+ fail();
+ }
+ catch (IllegalArgumentException ignore)
+ {
+ }
+ try
+ {
+ HashMap<String, String[]> corruptedMap = new HashMap<String,
String[]>();
+ corruptedMap.put("foo", new String[]{null});
+ resp.renderURL("/", corruptedMap, format);
+ fail();
+ }
+ catch (IllegalArgumentException ignore)
+ {
+ }
+
+ //
+ String url = resp.renderURL("/", null, null);
+ return new InvokeGetResponse(url);
+ }
+ else if (getRequestCount() == 1)
+ {
+ assertEquals("/", req.getWebRequestPath());
+ assertEquals(new HashMap<String, String[]>(),
req.getQueryParameterMap());
+
+ //
+ String url = resp.renderURL("/", new HashMap<String,
String[]>(), null);
+ return new InvokeGetResponse(url);
+ }
+ else if (getRequestCount() == 2)
+ {
+ assertEquals("/", req.getWebRequestPath());
+ assertEquals(new HashMap<String, String[]>(),
req.getQueryParameterMap());
+
+ //
+ Map<String, String[]> parameters = new HashMap<String, String[]>();
+ parameters.put("foo", new String[]{"foo_value"});
+ parameters.put("bar", new String[]{"bar_value_1",
"bar_value_2"});
+ parameters.put("juu", new String[0]);
+ String url = resp.renderURL("/", parameters, null);
+ return new InvokeGetResponse(url);
+ }
+ else if (getRequestCount() == 3)
+ {
+ assertEquals("/", req.getWebRequestPath());
+ Map<String, String[]> parameters =
assertNotNull(req.getQueryParameterMap());
+ assertEquals(2, parameters.size());
+ assertEquals(Tools.toSet("foo", "bar"),
parameters.keySet());
+ assertEquals(new String[]{"foo_value"},
parameters.get("foo"));
+ assertEquals(new String[]{"bar_value_1","bar_value_2"},
parameters.get("bar"));
+
+ //
+ String url = resp.renderURL("/blah", null, null);
+ return new InvokeGetResponse(url);
+ }
+ else if (getRequestCount() == 4)
+ {
+ assertEquals("/blah", req.getWebRequestPath());
+ assertEquals(new HashMap<String, String[]>(),
req.getQueryParameterMap());
+
+ //
+ String url = resp.renderURL("/blah", new HashMap<String,
String[]>(), null);
+ return new InvokeGetResponse(url);
+ }
+ else if (getRequestCount() == 5)
+ {
+ assertEquals("/blah", req.getWebRequestPath());
+ assertEquals(new HashMap<String, String[]>(),
req.getQueryParameterMap());
+
+ //
+ Map<String, String[]> parameters = new HashMap<String, String[]>();
+ parameters.put("foo", new String[]{"foo_value"});
+ parameters.put("bar", new String[]{"bar_value_1",
"bar_value_2"});
+ parameters.put("juu", new String[0]);
+ String url = resp.renderURL("/blah", parameters, null);
+ return new InvokeGetResponse(url);
+ }
+ else if (getRequestCount() == 6)
+ {
+ assertEquals("/blah", req.getWebRequestPath());
+ Map<String, String[]> parameters =
assertNotNull(req.getQueryParameterMap());
+ assertEquals(2, parameters.size());
+ assertEquals(Tools.toSet("foo", "bar"),
parameters.keySet());
+ assertEquals(new String[]{"foo_value"},
parameters.get("foo"));
+ assertEquals(new String[]{"bar_value_1","bar_value_2"},
parameters.get("bar"));
+
+ //
+ return new EndTestResponse();
+ }
+
+ //
+ return new FailureResponse(Failure.createAssertionFailure(""));
+ }
+
+ public DriverResponse invoke(TestServlet testServlet, DriverCommand driverCommand)
+ {
+ if (getRequestCount() == -1)
+ {
+ return new InvokeGetResponse(rewriteURL(testServlet, ""));
+ }
+ else
+ {
+ return new FailureResponse(Failure.createAssertionFailure(""));
+ }
+ }
+}
\ No newline at end of file
Modified:
modules/web/trunk/web/src/test/resources/portal-test-endpoint-jar/org/jboss/portal/test/web/server-beans.xml
===================================================================
---
modules/web/trunk/web/src/test/resources/portal-test-endpoint-jar/org/jboss/portal/test/web/server-beans.xml 2008-04-10
20:35:44 UTC (rev 10525)
+++
modules/web/trunk/web/src/test/resources/portal-test-endpoint-jar/org/jboss/portal/test/web/server-beans.xml 2008-04-10
22:53:05 UTC (rev 10526)
@@ -93,4 +93,13 @@
</uninstall>
</bean>
+ <bean name="RenderURLTestCase"
class="org.jboss.portal.test.web.endpoint.RenderURLTestCase">
+ <install bean="TestSuite" method="mount">
+ <parameter><this/></parameter>
+ </install>
+ <uninstall bean="TestSuite" method="unmount">
+ <parameter><this/></parameter>
+ </uninstall>
+ </bean>
+
</deployment>