Could not instantiate Seam component
mpancotti Oct 5, 2005 9:08 PMI'm trying to write an application an, just to avoid problems, I'm writing it as a new package of the booking example, using the same ant and deployment file (booking is running and testNG is working for the booking code).
I wrote an entity bean and an action that should be the same as part of the HotelBookingAction, but when I try to run the testNG it says "could not instantiate Seam Component"
Where am i wrong?
This is the test
package org.tyl.corecomponents.test.business; import org.jboss.seam.Component; import org.jboss.seam.contexts.Contexts; import org.jboss.seam.example.booking.User; import org.jboss.seam.mock.SeamTest; import org.jboss.seam.mock.SeamTest.Script; import org.testng.annotations.Test; import org.tyl.corecomponents.business.SystemOfUnitsManager; public class SystemOfUnitsTest extends SeamTest { @Test public void testSystemOfUnitsManager() throws Exception { String id = new Script() { SystemOfUnitsManager systemOfUnitsManager; @Override protected void updateModelValues() throws Exception { systemOfUnitsManager = (SystemOfUnitsManager) Component.getInstance("systemOfUnitsManager", true); } @Override protected void invokeApplication() { String outcome = systemOfUnitsManager.find(); assert "main".equals( outcome ); } }.run(); } }
Here is the action class
package org.tyl.corecomponents.business.impl; import static javax.persistence.PersistenceContextType.EXTENDED; import java.io.Serializable; import java.util.List; import javax.ejb.Interceptor; import javax.ejb.Stateful; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.jboss.logging.Logger; import org.jboss.seam.annotations.Begin; import org.jboss.seam.annotations.Conversational; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.datamodel.DataModel; import org.jboss.seam.annotations.datamodel.DataModelSelectionIndex; import org.jboss.seam.ejb.SeamInterceptor; import org.tyl.corecomponents.business.SystemOfUnitsManager; import org.tyl.corecomponents.model.SystemOfUnits; @Stateful @Name("systemOfUnitsManager") @Interceptor(SeamInterceptor.class) @Conversational(ifNotBegunOutcome="main") public class SystemOfUnitsManagerImpl implements SystemOfUnitsManager, Serializable { private static final Logger log = Logger.getLogger(SystemOfUnitsManager.class); private String searchString=null; @DataModel private List<SystemOfUnits> systemOfUnitsList; @DataModelSelectionIndex private int systemOfUnitsIndex; @PersistenceContext(type=EXTENDED) private EntityManager em; @Begin public String find() { systemOfUnitsList = null; String searchPattern = searchString==null ? "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%'; systemOfUnitsList = em.createQuery("from SystemOfUnits where lower(systemOfUnitsID) like :search or lower(nameOfStandardizationBody) like :search") .setParameter("search", searchPattern) .setMaxResults(50) .getResultList(); log.info(systemOfUnitsList.size() + " system of units found"); return "main"; } }
Here is the interface
package org.tyl.corecomponents.business; import javax.ejb.Remote; @Remote public interface SystemOfUnitsManager { public String find(); }
and here is the entity
package org.tyl.corecomponents.model; import java.io.Serializable; import java.util.Date; import java.util.HashSet; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratorType; import javax.persistence.Id; import javax.persistence.Version; @Entity public class SystemOfUnits implements Serializable { private java.lang.String systemOfUnitsID; private Integer version; private java.lang.String nameOfStandardizationBody; public SystemOfUnits() { } public SystemOfUnits(java.lang.String nameofsystem) { this.setSystemOfUnitsID(nameofsystem); } @Id(generate=GeneratorType.NONE) public java.lang.String getSystemOfUnitsID() { return systemOfUnitsID; } public void setSystemOfUnitsID(java.lang.String systemOfUnitsID) { this.systemOfUnitsID = systemOfUnitsID; } @Version @Column(name="OPTLOCK") public Integer getVersion() { return version; } public void setVersion(Integer version) { this.version = version; } }
Any help?
Thank you
Marco Pancotti