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();
}   
}
 
     
    