Author: bdaw
Date: 2008-01-30 10:13:12 -0500 (Wed, 30 Jan 2008)
New Revision: 9653
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/DispatchedHttpServletRequest.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/dispatcher/IncludeFromActionEventObjectsTestCase.java
Log:
- updated Action/Event include tests
- pathInfo fix
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/DispatchedHttpServletRequest.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/DispatchedHttpServletRequest.java 2008-01-30
14:33:07 UTC (rev 9652)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/DispatchedHttpServletRequest.java 2008-01-30
15:13:12 UTC (rev 9653)
@@ -139,13 +139,13 @@
if (endOfServletPath == -1)
{
servletPath = path;
- pathInfo = "";
+ pathInfo = null;
queryString = "";
}
else
{
servletPath = path.substring(0, endOfServletPath);
- pathInfo = "";
+ pathInfo = null;
queryString = path.substring(endOfServletPath + 1);
}
}
@@ -164,7 +164,7 @@
queryString = path.substring(endOfPathInfo + 1);
}
}
- String requestURI = preq.getContextPath() + servletPath + pathInfo;
+ String requestURI = preq.getContextPath() + servletPath + (pathInfo != null ?
pathInfo : "");
//
Map<String, String> attrs = new HashMap<String, String>();
@@ -540,7 +540,7 @@
return isRequestedSessionIdFromURL();
}
- // The getProtocol method of the HttpServletRequest must always return �HTTP/1.1�
+ // The getProtocol method of the HttpServletRequest must always return �HTTP/1.1�
public final String getProtocol()
{
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/dispatcher/IncludeFromActionEventObjectsTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/dispatcher/IncludeFromActionEventObjectsTestCase.java 2008-01-30
14:33:07 UTC (rev 9652)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/dispatcher/IncludeFromActionEventObjectsTestCase.java 2008-01-30
15:13:12 UTC (rev 9653)
@@ -57,11 +57,16 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.Cookie;
import java.io.IOException;
+import java.io.Writer;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.LinkedList;
import java.util.Enumeration;
import java.util.Map;
+import java.util.Locale;
/**
* @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot
com">Boleslaw Dawidowicz</a>
@@ -86,7 +91,8 @@
Assertion.JSR286_199,
Assertion.JSR286_200,
Assertion.JSR286_201,
- Assertion.JSR286_202
+ Assertion.JSR286_202,
+ Assertion.JSR286_203
})
public class IncludeFromActionEventObjectsTestCase
@@ -167,6 +173,26 @@
assertNotNull(portletRequest);
assertNotNull(portletResponse);
+ //SPEC:201
+ //Those should do nothing - some of the getters will be checked later
+ response.setContentType("lolo");
+ response.setCharacterEncoding("toto");
+ response.setContentLength(22);
+ response.setLocale(Locale.TRADITIONAL_CHINESE);
+ response.addCookie(new Cookie("lolo", "bobo"));
+ response.sendError(404,"bobo");
+ response.sendRedirect("http://www.jboss.org");
+ response.setDateHeader("bobo",11);
+ response.addDateHeader("bobo",21);
+ response.setHeader("bobo", "toto");
+ response.addHeader("bobo", "bubu");
+ response.setIntHeader("toto",13);
+ response.addIntHeader("lala",25);
+ response.setStatus(505);
+ response.setBufferSize(12);
+ response.flushBuffer();
+
+
//SPEC:185
assertNull(request.getRemoteAddr());
assertNull(request.getRemoteHost());
@@ -181,21 +207,18 @@
//SPEC:187
- //TODO:getPathInfo
- //assertEquals(null, request.getPathInfo());
- //TODO:getPathTranslated
+ assertEquals(null, request.getPathInfo());
+ //TODO:NYI
//assertEquals("",request.getPathTranslated());
assertEquals("key1=k1value1&key2=k2value1",
request.getQueryString());
- //TODO:getRequestURI
- //assertEquals("/requestObjectServlet",request.getRequestURI());
+
+
assertEquals("/test-jsr286-tck-dispatcher/universalServletA",request.getRequestURI());
assertEquals("/universalServletA", request.getServletPath());
//SPEC:188
assertEquals(portletRequest.getScheme(), request.getScheme());
assertEquals(portletRequest.getServerName(), request.getServerName());
assertEquals(portletRequest.getServerPort(), request.getServerPort());
- //TODO:fail
- //assertEquals(portletRequest.getAttributeNames(), request.getAttributeNames());
// getAttributeNames, setAttribute, getAttribute, removeAttribute
request.setAttribute("key1", "k1atrr1");
@@ -269,15 +292,24 @@
ActionRequest actionRequest = (ActionRequest)portletRequest;
//SPEC:190
- //TODO:fail
- //request.setCharacterEncoding("utf8");
+ try
+ {
+ // request was already read
+ request.setCharacterEncoding("utf8");
+ assertTrue(false);
+ }
+ catch (IllegalStateException e)
+ {
+ //expected
+ }
assertEquals(actionRequest.getCharacterEncoding(),
request.getCharacterEncoding());
assertEquals(actionRequest.getContentType(), request.getContentType());
- //TODO:fail
- //assertEquals(actionRequest.getPortletInputStream(),
request.getInputStream());
+ //TODO: How to check if its the same behaviour as in PR? Its not the same
object.
+ assertNotNull(request.getInputStream());
assertEquals(actionRequest.getContentLength(), request.getContentLength());
assertEquals(actionRequest.getMethod(), request.getMethod());
- assertEquals(actionRequest.getReader(), request.getReader());
+ // Underlaying impl invoke getImputStream so cannot test in single request
+ //assertEquals(actionRequest.getReader(), request.getReader());
}
//Event only
@@ -300,11 +332,37 @@
}
//SPEC:194
- //TODO:
+ //TODO:which values to use?
+ //assertEquals(portletRequest.getProperty("What?"),
request.getHeader("What?"));
+ //assertEquals(portletRequest.getProperties("What?"),
request.getHeaders("What?"));
+ Enumeration headerNamesE = request.getHeaderNames();
+
+ List headerNames = new LinkedList();
+ while (headerNamesE.hasMoreElements())
+ {
+ Object o = headerNamesE.nextElement();
+ headerNames.add(o);
+ }
+
+ Enumeration propertyNamesE = portletRequest.getPropertyNames();
+ while (propertyNamesE.hasMoreElements())
+ {
+ Object o = propertyNamesE.nextElement();
+ assertTrue(headerNames.contains(o));
+ }
+
+ //TODO: seems to not be implemented
+ //assertEquals("What?", request.getDateHeader("What?"));
+ //assertEquals("What?", request.getIntHeader("What?"));
+
//SPEC:195
//TODO:
+ //TODO: The following methods of the HttpServletRequest must provide the
+ //TODO: functionality defined by the Servlet Specification: getRequestDispatcher,
isUserInRole, getSession,
+ //TODO: isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL and
isRequestedSessionIdFromUrl.
+
//SPEC:196
assertEquals("HTTP/1.1", request.getProtocol());
@@ -314,22 +372,34 @@
assertNull(response.getCharacterEncoding());
assertNull(response.getContentType());
assertNull(response.getLocale());
- //TODO:
+
+ //TODO: those are in the spec but are void so hard to test... :)
//resetBuffer, reset
//SPEC:198
assertEquals(0, response.getBufferSize());
//SPEC:199
- //TODO:
+ //If it work it will break the result no?
+ Writer writer = response.getWriter();
+ writer.write("lolo a toto a bobo");
+ writer.flush();
+ OutputStream os = response.getOutputStream();
+ os.write(24);
+ os.write(new byte[]{25, 29, 25});
+ os.flush();
+
+
//SPEC:200
- //TODO:
+
assertEquals(portletResponse.encodeURL("http://www.jboss.com/"),
response.encodeURL("http://www.jboss.com/"));
+
assertEquals(portletResponse.encodeURL("http://www.jboss.com/"),
response.encodeUrl("http://www.jboss.com/"));
- //SPEC:201
+
+ //SPEC:202
assertEquals(false, response.containsHeader("toto"));
- //SPEC:202
+ //SPEC:203
assertEquals(true, response.isCommitted());
}