Author: alexsmirnov
Date: 2008-11-05 19:56:55 -0500 (Wed, 05 Nov 2008)
New Revision: 11038
Modified:
branches/jsf2.0/framework/jsf-test/pom.xml
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/LocalServer.java
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/ServerConnection.java
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/ServerLogger.java
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/NotImplementedException.java
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpRequest.java
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpResponse.java
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpSession.java
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubServletContext.java
branches/jsf2.0/framework/jsf-test/src/test/java/org/richfaces/test/FacesServerTest.java
Log:
Add HtmlUnit support
Modified: branches/jsf2.0/framework/jsf-test/pom.xml
===================================================================
--- branches/jsf2.0/framework/jsf-test/pom.xml 2008-11-05 18:52:26 UTC (rev 11037)
+++ branches/jsf2.0/framework/jsf-test/pom.xml 2008-11-06 00:56:55 UTC (rev 11038)
@@ -33,5 +33,40 @@
<artifactId>el-impl</artifactId>
<version>1.0</version>
</dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sourceforge.htmlunit</groupId>
+ <artifactId>htmlunit-core-js</artifactId>
+ <version>2.2</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sourceforge.cssparser</groupId>
+ <artifactId>cssparser</artifactId>
+ <version>0.9.5</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sourceforge.nekohtml</groupId>
+ <artifactId>nekohtml</artifactId>
+ <version>1.9.9</version>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Modified:
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/LocalServer.java
===================================================================
---
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/LocalServer.java 2008-11-05
18:52:26 UTC (rev 11037)
+++
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/LocalServer.java 2008-11-06
00:56:55 UTC (rev 11038)
@@ -1,5 +1,6 @@
package org.richfaces.test;
+import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
@@ -8,10 +9,12 @@
import java.util.Map;
import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpSession;
import org.richfaces.test.stub.ClasspathServerResource;
import org.richfaces.test.stub.ServerResource;
@@ -19,10 +22,18 @@
import org.richfaces.test.stub.ServerResourcesDirectory;
import org.richfaces.test.stub.ServletContainer;
import org.richfaces.test.stub.StaticServlet;
+import org.richfaces.test.stub.StubHttpSession;
import org.richfaces.test.stub.StubServletConfig;
import org.richfaces.test.stub.StubServletContext;
+import com.gargoylesoftware.htmlunit.WebConnection;
+import com.gargoylesoftware.htmlunit.WebRequestSettings;
+import com.gargoylesoftware.htmlunit.WebResponse;
+import com.gargoylesoftware.htmlunit.WebResponseData;
+import ch.ethz.ssh2.Session;
+
+
/**
* Hello world!
*
@@ -42,7 +53,17 @@
private StubServletContext context;
+ private class ServerHttpSession extends StubHttpSession {
+
+ public ServletContext getServletContext() {
+ return context;
+ }
+
+ }
+ private ServerHttpSession session;
+
+
public void addServlet(String mapping,Servlet servlet){
servlets.add(new ServletContainer(mapping,servlet));
}
@@ -70,6 +91,18 @@
contextListeners.add(listener);
}
+ public HttpSession getSession(){
+ return getSession(true);
+ }
+
+ public HttpSession getSession(boolean create){
+ if(null == this.session && create){
+ this.session = new ServerHttpSession();
+ // TODO - inform session listeners
+ }
+ return session;
+ }
+
public void init() throws ServletException {
// Create context.
this.context = new StubServletContext(serverRoot);
@@ -90,6 +123,11 @@
}
public void destroy(){
+ // Destroy session
+ if (null != this.session) {
+ // TODO - inform session listeners.
+ session.destroy();
+ }
// Inform listeners
for (ServletContextListener listener : contextListeners) {
listener.contextDestroyed(new ServletContextEvent(context));
@@ -108,4 +146,22 @@
public StubServletContext getContext() {
return context;
}
+
+
+ public WebConnection getWebConnection(){
+ return new WebConnection(){
+
+ public WebResponse getResponse(WebRequestSettings settings)
+ throws IOException {
+ ServerConnection connection = getConnection(settings.getUrl());
+ try {
+ connection.execute();
+ } catch (ServletException e) {
+ throw new IOException(e.getMessage());
+ }
+ return connection.getWebResponse(settings);
+ }
+
+ };
+ }
}
Modified:
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/ServerConnection.java
===================================================================
---
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/ServerConnection.java 2008-11-05
18:52:26 UTC (rev 11037)
+++
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/ServerConnection.java 2008-11-06
00:56:55 UTC (rev 11038)
@@ -3,7 +3,9 @@
*/
package org.richfaces.test;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.ArrayList;
@@ -16,12 +18,17 @@
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpSession;
+import org.apache.commons.httpclient.NameValuePair;
import org.richfaces.test.stub.ServletContainer;
import org.richfaces.test.stub.StubHttpRequest;
import org.richfaces.test.stub.StubHttpResponse;
import org.richfaces.test.stub.StubServletContext;
+import com.gargoylesoftware.htmlunit.WebRequestSettings;
+import com.gargoylesoftware.htmlunit.WebResponse;
+
/**
* This class represent single connection to the server.
* @author asmirnov
@@ -239,7 +246,21 @@
return requestParameters.get(name);
}
+ /* (non-Javadoc)
+ * @see javax.servlet.http.HttpServletRequest#getSession()
+ */
+ public HttpSession getSession() {
+ return server.getSession();
+ }
+ /* (non-Javadoc)
+ * @see javax.servlet.http.HttpServletRequest#getSession(boolean)
+ */
+ public HttpSession getSession(boolean create) {
+ return server.getSession(create);
+ }
+
+
}
@@ -257,4 +278,79 @@
}
}
+
+ public WebResponse getWebResponse(final WebRequestSettings settings) {
+ // TODO Auto-generated method stub
+ return new WebResponse(){
+
+ public InputStream getContentAsStream() throws IOException {
+ return new ByteArrayInputStream(getResponseBody());
+ }
+
+ public String getContentAsString() {
+ // TODO Auto-generated method stub
+ return response.getWriterContent();
+ }
+
+ public String getContentCharSet() {
+ return response.getCharacterEncoding();
+ }
+
+ public String getContentType() {
+ return response.getContentType();
+ }
+
+ public long getLoadTimeInMilliSeconds() {
+ return 0;
+ }
+
+ public com.gargoylesoftware.htmlunit.HttpMethod getRequestMethod() {
+ return com.gargoylesoftware.htmlunit.HttpMethod.valueOf(getMethod().toString());
+ }
+
+ public WebRequestSettings getRequestSettings() {
+ return settings;
+ }
+
+ public byte[] getResponseBody() {
+ byte[] content = response.getStreamContent();
+ if(null == content){
+ String writerContent = response.getWriterContent();
+ if(null != writerContent){
+ try {
+ content = writerContent.getBytes(response.getCharacterEncoding());
+ } catch (UnsupportedEncodingException e) {
+ content = writerContent.getBytes();
+ }
+ } else {
+ content = new byte[0];
+ }
+ }
+ return content;
+ }
+
+ public String getResponseHeaderValue(String headerName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public int getStatusCode() {
+ return response.getStatus();
+ }
+
+ public String getStatusMessage() {
+ return response.getErrorMessage();
+ }
+
+ public URL getUrl() {
+ return url;
+ }
+
+ public List<NameValuePair> getResponseHeaders() {
+ // TODO Auto-generated method stub
+ return Collections.emptyList();
+ }
+
+ };
+ }
}
Modified:
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/ServerLogger.java
===================================================================
---
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/ServerLogger.java 2008-11-05
18:52:26 UTC (rev 11037)
+++
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/ServerLogger.java 2008-11-06
00:56:55 UTC (rev 11038)
@@ -12,7 +12,8 @@
public enum ServerLogger {
RESOURCE("resource"),
- SERVER("server");
+ CONNECTION("connection"),
+ SERVER("server");
private static final String PREFIX="org.richfaces.test.";
Modified:
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/NotImplementedException.java
===================================================================
---
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/NotImplementedException.java 2008-11-05
18:52:26 UTC (rev 11037)
+++
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/NotImplementedException.java 2008-11-06
00:56:55 UTC (rev 11038)
@@ -4,16 +4,18 @@
package org.richfaces.test.stub;
/**
+ * This exception indicates feature not yet implemented in the stub server.
* @author asmirnov
*
*/
+@SuppressWarnings("serial")
public class NotImplementedException extends RuntimeException {
/**
*
*/
public NotImplementedException() {
- // TODO Auto-generated constructor stub
+ super("This feature not yet implemented");
}
/**
Modified:
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpRequest.java
===================================================================
---
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpRequest.java 2008-11-05
18:52:26 UTC (rev 11037)
+++
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpRequest.java 2008-11-06
00:56:55 UTC (rev 11038)
@@ -13,6 +13,7 @@
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
+import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletInputStream;
@@ -24,6 +25,7 @@
import org.richfaces.collections.collect.ImmutableList;
import org.richfaces.collections.collect.Multimap;
import org.richfaces.collections.collect.Multimaps;
+import org.richfaces.test.ServerLogger;
/**
* @author asmirnov
@@ -31,6 +33,8 @@
*/
public abstract class StubHttpRequest implements HttpServletRequest {
+ private static final Logger log = ServerLogger.CONNECTION.getLogger();
+
public static final String LOCALHOST = "localhost";
public static final String HTTP = "http";
public static final String LOCALHOST_IP = "127.0.0.1";
@@ -45,6 +49,7 @@
*/
public String getAuthType() {
// TODO configure test auth.
+ log.info("unimplemented request method getAuthType");
return null;
}
@@ -66,6 +71,7 @@
*/
public long getDateHeader(String name) {
// TODO create headers support
+ log.info("unimplemented request method getDateHeader");
return -1;
}
@@ -76,6 +82,7 @@
*/
public String getHeader(String name) {
// TODO create headers support
+ log.info("unimplemented request method getHeader");
return null;
}
@@ -87,6 +94,7 @@
@SuppressWarnings("unchecked")
public Enumeration getHeaderNames() {
// TODO create headers support
+ log.info("unimplemented request method getHeaderNames");
return null;
}
@@ -98,6 +106,7 @@
@SuppressWarnings("unchecked")
public Enumeration getHeaders(String name) {
// TODO create headers support
+ log.info("unimplemented request method getHeaders");
return Collections.enumeration(Collections.EMPTY_LIST);
}
@@ -108,6 +117,7 @@
*/
public int getIntHeader(String name) {
// TODO create headers support
+ log.info("unimplemented request method getIntHeader");
return -1;
}
@@ -129,6 +139,7 @@
*/
public String getRemoteUser() {
// TODO configure test auth.
+ log.info("unimplemented request method getRemoteUser");
return null;
}
@@ -154,39 +165,15 @@
}
- private StubHttpSession session;
/*
* (non-Javadoc)
*
- * @see javax.servlet.http.HttpServletRequest#getSession()
- */
- public HttpSession getSession() {
- if (session == null) {
- session = new StubHttpSession();
- }
- return session;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.servlet.http.HttpServletRequest#getSession(boolean)
- */
- public HttpSession getSession(boolean create) {
- if (session == null && create) {
- session = new StubHttpSession();
- }
- return session;
- }
-
- /*
- * (non-Javadoc)
- *
* @see javax.servlet.http.HttpServletRequest#getUserPrincipal()
*/
public Principal getUserPrincipal() {
// TODO implement test auth.
+ log.info("unimplemented request method getUserPrincipal");
return null;
}
@@ -225,7 +212,8 @@
* @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdValid()
*/
public boolean isRequestedSessionIdValid() {
- return session != null;
+ // TODO - check session.
+ return false;
}
/*
@@ -235,6 +223,7 @@
*/
public boolean isUserInRole(String role) {
// TODO implement test auth.
+ log.info("unimplemented request method isUserInRole");
return false;
}
@@ -283,6 +272,7 @@
* @see javax.servlet.ServletRequest#getContentType()
*/
public String getContentType() {
+ log.info("unimplemented request method getContentType");
return null;
}
@@ -293,6 +283,7 @@
*/
public ServletInputStream getInputStream() throws IOException {
// TODO implement post stream.
+ log.info("unimplemented request method getInputStream");
return null;
}
@@ -340,8 +331,8 @@
*
* @see javax.servlet.ServletRequest#getLocales()
*/
+ @SuppressWarnings("unchecked")
public Enumeration getLocales() {
- // TODO Auto-generated method stub
return Collections.enumeration(locales);
}
@@ -363,6 +354,7 @@
*/
public BufferedReader getReader() throws IOException {
// TODO implements request buffer.
+ log.info("unimplemented request method getReader");
return null;
}
@@ -409,7 +401,8 @@
*/
public RequestDispatcher getRequestDispatcher(String path) {
// TODO Auto-generated method stub
- return null;
+ throw new NotImplementedException();
+ // return null;
}
/*
@@ -454,6 +447,7 @@
* @see javax.servlet.ServletRequest#removeAttribute(java.lang.String)
*/
public void removeAttribute(String name) {
+ // TODO - inform listeners
attributes.remove(name);
}
@@ -465,6 +459,7 @@
* java.lang.Object)
*/
public void setAttribute(String name, Object o) {
+ // TODO - inform listeners
attributes.put(name, o);
}
Modified:
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpResponse.java
===================================================================
---
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpResponse.java 2008-11-05
18:52:26 UTC (rev 11037)
+++
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpResponse.java 2008-11-06
00:56:55 UTC (rev 11038)
@@ -10,11 +10,15 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+import java.util.logging.Logger;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.httpclient.HttpStatus;
+import org.richfaces.test.ServerLogger;
+
/**
* @author asmirnov
*
@@ -22,8 +26,11 @@
public abstract class StubHttpResponse implements HttpServletResponse {
- private int status = 0;
+ private static final Logger log = ServerLogger.CONNECTION.getLogger();
+
+ private int status = 200;
+
private String redirectLocation = null;
private String errorMessage = null;
@@ -39,6 +46,10 @@
private ServletOutputStream servletOutputStream;
private Locale locale = Locale.US;
+
+ private String contentType="text";
+
+ private String encoding = StubHttpRequest.UTF8;
/*
@@ -49,6 +60,7 @@
* long)
*/
public void addDateHeader(String name, long date) {
+ log.info("unimplemented response method addDateHeader");
// TODO Auto-generated method stub
}
@@ -61,6 +73,7 @@
*/
public void addHeader(String name, String value) {
// TODO Auto-generated method stub
+ log.info("unimplemented response method addHeader");
}
@@ -73,6 +86,7 @@
*/
public void addIntHeader(String name, int value) {
// TODO Auto-generated method stub
+ log.info("unimplemented response method addIntHeader");
}
@@ -84,6 +98,7 @@
*/
public boolean containsHeader(String name) {
// TODO Auto-generated method stub
+ log.info("unimplemented response method containsHeader");
return false;
}
@@ -106,7 +121,6 @@
* )
*/
public String encodeRedirectUrl(String url) {
- // TODO Auto-generated method stub
return encodeRedirectURL(url);
}
@@ -168,7 +182,7 @@
*/
public void setDateHeader(String name, long date) {
// TODO Auto-generated method stub
-
+ log.info("unimplemented response method setDateHeader");
}
/*
@@ -179,7 +193,7 @@
*/
public void setHeader(String name, String value) {
// TODO Auto-generated method stub
-
+ log.info("unimplemented response method setHeader");
}
/*
@@ -191,7 +205,7 @@
*/
public void setIntHeader(String name, int value) {
// TODO Auto-generated method stub
-
+ log.info("unimplemented response method setIntHeader");
}
/*
@@ -221,7 +235,7 @@
*/
public void flushBuffer() throws IOException {
// do nothing
-
+ log.info("unimplemented response method flushBuffer");
}
/*
@@ -239,7 +253,7 @@
* @see javax.servlet.ServletResponse#getCharacterEncoding()
*/
public String getCharacterEncoding() {
- return StubHttpRequest.UTF8;
+ return encoding;
}
/*
@@ -248,7 +262,7 @@
* @see javax.servlet.ServletResponse#getContentType()
*/
public String getContentType() {
- return "text/html;charset=UTF-8";
+ return contentType;
}
/*
@@ -320,6 +334,7 @@
*/
public boolean isCommitted() {
// TODO Auto-generated method stub
+ log.info("unimplemented response method isCommited");
return false;
}
@@ -365,8 +380,7 @@
* @see javax.servlet.ServletResponse#setCharacterEncoding(java.lang.String)
*/
public void setCharacterEncoding(String charset) {
- // TODO Auto-generated method stub
-
+ encoding = charset;
}
/*
@@ -376,7 +390,7 @@
*/
public void setContentLength(int len) {
// TODO Auto-generated method stub
-
+ log.info("unimplemented response method setContentLenght");
}
/*
@@ -385,8 +399,7 @@
* @see javax.servlet.ServletResponse#setContentType(java.lang.String)
*/
public void setContentType(String type) {
- // TODO Auto-generated method stub
-
+ contentType = type;
}
/*
@@ -399,4 +412,25 @@
}
+ /**
+ * @return the status
+ */
+ public int getStatus() {
+ return status;
+ }
+
+ /**
+ * @return the redirectLocation
+ */
+ public String getRedirectLocation() {
+ return redirectLocation;
+ }
+
+ /**
+ * @return the errorMessage
+ */
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
}
Modified:
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpSession.java
===================================================================
---
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpSession.java 2008-11-05
18:52:26 UTC (rev 11037)
+++
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubHttpSession.java 2008-11-06
00:56:55 UTC (rev 11038)
@@ -3,7 +3,12 @@
*/
package org.richfaces.test.stub;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
@@ -13,47 +18,64 @@
* @author asmirnov
*
*/
-public class StubHttpSession implements HttpSession {
+public abstract class StubHttpSession implements HttpSession {
+ private static final int DEFAULT_INACTIVE_TIME = 30;
+
public static final String SESSION_ID="1234567890";
+
+ private final Map<String, Object> attributes = new HashMap<String,
Object>();
+
+ private final long creationTime;
+
+
+ private int inactiveTime = DEFAULT_INACTIVE_TIME;
+
+ public StubHttpSession() {
+ this.creationTime = System.currentTimeMillis();
+ }
+
+
+ /**
+ *
+ */
+ public void destroy(){
+ }
/* (non-Javadoc)
* @see javax.servlet.http.HttpSession#getAttribute(java.lang.String)
*/
public Object getAttribute(String name) {
- // TODO Auto-generated method stub
- return null;
+ return attributes.get(name);
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpSession#getAttributeNames()
*/
+ @SuppressWarnings("unchecked")
public Enumeration getAttributeNames() {
- // TODO Auto-generated method stub
- return null;
+ return Collections.enumeration(attributes.keySet());
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpSession#getCreationTime()
*/
public long getCreationTime() {
- // TODO Auto-generated method stub
- return 0;
+ return creationTime;
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpSession#getId()
*/
public String getId() {
- // TODO Auto-generated method stub
- return null;
+ return SESSION_ID;
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpSession#getLastAccessedTime()
*/
public long getLastAccessedTime() {
- // TODO Auto-generated method stub
+ // TODO fix accessing time
return 0;
}
@@ -61,21 +83,14 @@
* @see javax.servlet.http.HttpSession#getMaxInactiveInterval()
*/
public int getMaxInactiveInterval() {
- // TODO Auto-generated method stub
- return 0;
+ return inactiveTime;
}
- /* (non-Javadoc)
- * @see javax.servlet.http.HttpSession#getServletContext()
- */
- public ServletContext getServletContext() {
- // TODO Auto-generated method stub
- return null;
- }
/* (non-Javadoc)
* @see javax.servlet.http.HttpSession#getSessionContext()
*/
+ @SuppressWarnings("deprecation")
public HttpSessionContext getSessionContext() {
// TODO Auto-generated method stub
return null;
@@ -85,16 +100,15 @@
* @see javax.servlet.http.HttpSession#getValue(java.lang.String)
*/
public Object getValue(String name) {
- // TODO Auto-generated method stub
- return null;
+ return getAttribute(name);
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpSession#getValueNames()
*/
public String[] getValueNames() {
- // TODO Auto-generated method stub
- return null;
+ ArrayList<String> names = new ArrayList<String>(attributes.keySet());
+ return names.toArray(new String[names.size()]);
}
/* (non-Javadoc)
@@ -117,7 +131,7 @@
* @see javax.servlet.http.HttpSession#putValue(java.lang.String, java.lang.Object)
*/
public void putValue(String name, Object value) {
- // TODO Auto-generated method stub
+ setAttribute(name, value);
}
@@ -125,7 +139,8 @@
* @see javax.servlet.http.HttpSession#removeAttribute(java.lang.String)
*/
public void removeAttribute(String name) {
- // TODO Auto-generated method stub
+ // TODO - inform listeners
+ this.attributes.remove(name);
}
@@ -133,23 +148,22 @@
* @see javax.servlet.http.HttpSession#removeValue(java.lang.String)
*/
public void removeValue(String name) {
- // TODO Auto-generated method stub
-
+ removeAttribute(name);
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpSession#setAttribute(java.lang.String, java.lang.Object)
*/
public void setAttribute(String name, Object value) {
- // TODO Auto-generated method stub
-
+ // TODO - inform listeners
+ attributes.put(name, value);
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpSession#setMaxInactiveInterval(int)
*/
public void setMaxInactiveInterval(int interval) {
- // TODO Auto-generated method stub
+ this.inactiveTime = interval;
}
Modified:
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubServletContext.java
===================================================================
---
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubServletContext.java 2008-11-05
18:52:26 UTC (rev 11037)
+++
branches/jsf2.0/framework/jsf-test/src/main/java/org/richfaces/test/stub/StubServletContext.java 2008-11-06
00:56:55 UTC (rev 11038)
@@ -13,19 +13,27 @@
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
+import org.richfaces.test.ServerLogger;
+
/**
* @author asmirnov
*
*/
public class StubServletContext implements ServletContext {
+ private static final Logger log = ServerLogger.SERVER.getLogger();
+
public static final String CONTEXT_PATH = "";
+
+ private static final String APPLICATION_NAME = "stub";
private final Map<String, Object> attributes = new HashMap<String,
Object>();
private final ServerResource serverRoot;
@@ -106,6 +114,7 @@
*/
public String getMimeType(String file) {
// TODO create mime-types table.
+ log.info("unimplemented servlet context method getMimeType");
return null;
}
@@ -121,6 +130,7 @@
*/
public RequestDispatcher getNamedDispatcher(String name) {
// TODO create stub dispatcher.
+ log.info("unimplemented response method getNamedDispatcher");
return null;
}
@@ -137,6 +147,7 @@
*/
public RequestDispatcher getRequestDispatcher(String path) {
// TODO implement stub dispatcher.
+ log.info("unimplemented response method getRequestDispatcher");
return null;
}
@@ -199,6 +210,7 @@
*/
public Servlet getServlet(String name) throws ServletException {
// always return null.
+ log.info("unimplemented response method getServlet");
return null;
}
@@ -207,7 +219,7 @@
*/
public String getServletContextName() {
// Stub server has no declared name.
- return null;
+ return APPLICATION_NAME;
}
/* (non-Javadoc)
@@ -215,6 +227,7 @@
*/
@SuppressWarnings("unchecked")
public Enumeration getServletNames() {
+ log.info("unimplemented response method getServletNames");
return Collections.enumeration(Collections.EMPTY_LIST);
}
@@ -223,6 +236,7 @@
*/
@SuppressWarnings("unchecked")
public Enumeration getServlets() {
+ log.info("unimplemented response method getServlets");
return Collections.enumeration(Collections.EMPTY_LIST);
}
@@ -230,7 +244,7 @@
* @see javax.servlet.ServletContext#log(java.lang.String)
*/
public void log(String msg) {
- // TODO implement logging.
+ log.finest(msg);
}
@@ -238,7 +252,7 @@
* @see javax.servlet.ServletContext#log(java.lang.Exception, java.lang.String)
*/
public void log(Exception exception, String msg) {
- // TODO implement logging.
+ log.log(Level.FINEST, msg, exception);
}
@@ -246,14 +260,14 @@
* @see javax.servlet.ServletContext#log(java.lang.String, java.lang.Throwable)
*/
public void log(String message, Throwable throwable) {
- // TODO implement logging.
-
+ log.log(Level.FINEST, message, throwable);
}
/* (non-Javadoc)
* @see javax.servlet.ServletContext#removeAttribute(java.lang.String)
*/
public void removeAttribute(String name) {
+ // TODO - inform listeners
attributes.remove(name);
}
@@ -261,6 +275,7 @@
* @see javax.servlet.ServletContext#setAttribute(java.lang.String, java.lang.Object)
*/
public void setAttribute(String name, Object object) {
+ // TODO - inform listeners
attributes.put(name, object);
}
Modified:
branches/jsf2.0/framework/jsf-test/src/test/java/org/richfaces/test/FacesServerTest.java
===================================================================
---
branches/jsf2.0/framework/jsf-test/src/test/java/org/richfaces/test/FacesServerTest.java 2008-11-05
18:52:26 UTC (rev 11037)
+++
branches/jsf2.0/framework/jsf-test/src/test/java/org/richfaces/test/FacesServerTest.java 2008-11-06
00:56:55 UTC (rev 11038)
@@ -22,6 +22,9 @@
import org.junit.BeforeClass;
import org.junit.Test;
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.sun.faces.config.ConfigureListener;
import com.sun.faces.util.FacesLogger;
@@ -98,10 +101,10 @@
*/
@Test
public void testGetConnection() throws Exception {
- ServerConnection connection = facesServer.getConnection(new URL(
- "http://localhost/hello.jsf"));
- connection.execute();
- System.out.println(connection.getRenderedContent());
+ WebClient webClient = new WebClient();
+ webClient.setWebConnection(facesServer.getWebConnection());
+ HtmlPage page = webClient.getPage("http://localhost/hello.jsf");
+ System.out.println(page.asXml());
}
}