NullPointerException when using WebClientSpec
ptfp Oct 7, 2008 6:17 AMHello.
I've just tried writing a JSFUnit test that uses cookies. From what I've found in the Javadoc it should be done like this:
WebClientSpec web_client_spec = new WebClientSpec("/categories.jsf"); web_client_spec.addCookie("mycookie", "test"); this.session = new JSFSession(web_client_spec);
With the above code I get the following Exception:
java.lang.NullPointerException at javax.faces.component.UIData.getRows(UIData.java:1022) at org.apache.myfaces.component.html.ext.HtmlDataTable.getRows(HtmlDataTable.java:756) at org.jboss.jsfunit.jsfsession.ClientIDs.addUIData(ClientIDs.java:116) at org.jboss.jsfunit.jsfsession.ClientIDs.addAllIDs(ClientIDs.java:75) at org.jboss.jsfunit.jsfsession.ClientIDs.addAllIDs(ClientIDs.java:83) at org.jboss.jsfunit.jsfsession.ClientIDs.addAllIDs(ClientIDs.java:83) at org.jboss.jsfunit.jsfsession.ClientIDs.addAllIDs(ClientIDs.java:83) at org.jboss.jsfunit.jsfsession.ClientIDs.addAllIDs(ClientIDs.java:83) at org.jboss.jsfunit.jsfsession.ClientIDs.<init>(ClientIDs.java:62) at org.jboss.jsfunit.jsfsession.JSFServerSession.pageCreated(JSFServerSession.java:181) at org.jboss.jsfunit.jsfsession.JSFServerSession.<init>(JSFServerSession.java:54) at org.jboss.jsfunit.jsfsession.JSFSession.<init>(JSFSession.java:84) at at.tug.m3.jsf.CategoriesTest.setUp(CategoriesTest.java:36) at junit.framework.TestCase.runBare(TestCase.java:132) at org.apache.cactus.internal.AbstractCactusTestCase.runBareServer(AbstractCactusTestCase.java:153) at org.apache.cactus.internal.server.AbstractWebTestCaller.doTest(AbstractWebTestCaller.java:119) at org.apache.cactus.internal.server.AbstractWebTestController.handleRequest_aroundBody0(AbstractWebTestController.java:93) at org.apache.cactus.internal.server.AbstractWebTestController.handleRequest_aroundBody1$advice(AbstractWebTestController.java:217) at org.apache.cactus.internal.server.AbstractWebTestController.handleRequest(AbstractWebTestController.java) at org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody2(ServletTestRedirector.java:101) at org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody3$advice(ServletTestRedirector.java:217) at org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedirector.java) at org.jboss.jsfunit.framework.JSFUnitServletRedirector.doPost(JSFUnitServletRedirector.java:42) at org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody0(ServletTestRedirector.java:72) at org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody1$advice(ServletTestRedirector.java:217) at org.apache.cactus.server.ServletTestRedirector.doGet(ServletTestRedirector.java) at org.jboss.jsfunit.framework.JSFUnitServletRedirector.doGet(JSFUnitServletRedirector.java:48) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.jsfunit.framework.JSFUnitFilter.doFilter(JSFUnitFilter.java:122) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)
The problem seems to be caused by a MyFaces Tomahawk AliasBeansScope:
<t:aliasBeansScope> <t:aliasBean alias="#{clipListViewer}" value="#{CategoriesBean.clipListViewer}" /> <%@ include file="clipList.jsp"%> </t:aliasBeansScope
Now the strange thing is that it works fine when I create the session by passing the URL:
this.session = new JSFSession("/categories.jsf");
But I haven't found a way to set a cookie without the WebClientSpec.
Does anybody know how to do this or how to fix the above problem?
Thanks,
Peter