Stack must not be null in componenttest
scourge Jan 2, 2010 9:29 PMWhen executing a basic component test on an entity component created with the EntityHome patters i consistently get a stack exception from within the seam libraries.
The source of the problem seems to be an @begin annotation to register the home interface in a long running transaction.
Does anyone have a clue where the initialisation of the seam framework goes wrong within a componenttest?
org.jboss.seam.InstantiationException: Could not instantiate Seam component: userHome at org.jboss.seam.Component.newInstance(Component.java:2144) at org.jboss.seam.Component.getInstance(Component.java:2021) at org.jboss.seam.Component.getInstance(Component.java:1983) at org.jboss.seam.Component.getInstance(Component.java:1977) at org.jboss.seam.Component.getInstanceFromFactory(Component.java:2073) at org.jboss.seam.Component.getInstance(Component.java:2011) at org.jboss.seam.Component.getInstance(Component.java:1983) at org.jboss.seam.Component.getInstance(Component.java:1977) at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55) at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50) at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:147) at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:51) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44) at org.jboss.el.parser.AstValue.getTarget(AstValue.java:34) at org.jboss.el.parser.AstValue.setValue(AstValue.java:83) at org.jboss.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249) at org.jboss.seam.core.Expressions$1.setValue(Expressions.java:117) at org.jboss.seam.mock.AbstractSeamTest$ComponentTest.setValue(AbstractSeamTest.java:152) at scrumCenter.UserTest$1.testComponents(UserTest.java:23) at org.jboss.seam.mock.AbstractSeamTest$ComponentTest.run(AbstractSeamTest.java:162) at scrumCenter.UserTest.userCreationTest(UserTest.java:33) Caused by: java.lang.IllegalArgumentException: Stack must not be null at org.jboss.seam.core.ConversationEntry.<init>(ConversationEntry.java:45) at org.jboss.seam.core.ConversationEntries.createConversationEntry(ConversationEntries.java:53) at org.jboss.seam.core.Manager.createConversationEntry(Manager.java:664) at org.jboss.seam.core.Manager.beginConversation(Manager.java:685) ...
public class UserTest extends SeamTest { @Test public void userCreationTest() throws Exception { new ComponentTest() { @Override protected void testComponents() throws Exception { setValue("#{user.username}", "TST"); setValue("#{user.name}", "lstname"); setValue("#{user.password}", "secret"); invokeMethod("#{userHome.persist}"); assert getValue("#{user.username}").equals("TST"); assert getValue("#{user.name}").equals("lstname"); assert getValue("#{user.password}").equals("secret"); } }.run(); } }
@Name("userHome") @Scope(ScopeType.SESSION) public class UserHome extends EntityHome<User> { private static final long serialVersionUID = -1655875997161469493L; @RequestParameter Long userId; @Override public Object getId() { if (userId == null) { return super.getId(); } else { return userId; } } @Factory("user") public User getUserInstance() { return this.getInstance(); } @Override @Begin public void create() { super.create(); } }