[jboss-user] [JBoss Seam] - Seam - Embedded Ejb - Logger
philippe.mercier
do-not-reply at jboss.com
Tue May 22 11:00:01 EDT 2007
Hi everybody,
I use embedded-ejb with testng (tests are launch via maven2 - surefire).
All work fine !
Now i would like to use @Logger in my session bean as this :
| @Stateless
| public class DossierManagerImpl implements DossierManagerLocal {
|
| @Logger
| private Log logger;
|
| @PersistenceContext
| private EntityManager em;
|
| /**
| * Constructeur vide
| */
| public DossierManagerImpl() {
| }
|
| /**
| * Constructeur pour les tests
| * @param em
| */
| public DossierManagerImpl(EntityManager em) {
| this.em = em;
| }
|
| /*
| * (non-Javadoc)
| * @see be.ucm.ss.comptaclient.c397.session.DossierManagerLocal#insert(be.ucm.ss.comptaclient.c397.entity.Dossier)
| */
| public void insert(Dossier ccDossier) {
| logger.debug("insert dossier : nune = " + ccDossier.getNune());
| em.persist(ccDossier);
| }
|
| /*
| * (non-Javadoc)
| * @see be.ucm.ss.comptaclient.c397.session.DossierManagerLocal#update(be.ucm.ss.comptaclient.c397.entity.Dossier)
| */
| public void update(Dossier ccDossier) {
| em.merge(ccDossier);
| }
|
| /*
| * (non-Javadoc)
| * @see be.ucm.ss.comptaclient.c397.session.DossierManagerLocal#findAll()
| */
| @SuppressWarnings("unchecked")
| public List<Dossier> findAll() {
| Query q = (Query) em.createQuery("from Dossier");
| return q.getResultList();
| }
|
| /*
| * (non-Javadoc)
| * @see be.ucm.ss.comptaclient.c397.session.DossierManagerLocal#findFromNune(java.lang.String)
| */
| public Dossier findFromNune(String nune) {
| System.out.println(nune);
| Dossier dossier = em.find(Dossier.class, nune);
| return dossier;
| }
|
| }
|
but when my test class call the "insert" method of the session bean, i have an NullPointerException at the line that reference the logger.
here is my Test class :
| package be.ucm.ss.comptaclient.c397.session;
|
| import java.util.List;
|
| import javax.persistence.EntityManager;
|
| import org.testng.annotations.Test;
|
| import be.ucm.ss.comptaclient.c397.entity.Dossier;
| import be.ucm.util.EmbeddedEjbHandler;
|
| @Test
| public class DossierManagerImplTest {
| public void testInsert() {
| EntityManager em = EmbeddedEjbHandler.getInstance().getEntityManager();
| em.getTransaction().begin();
|
| Dossier d = new Dossier();
| d.setNune("1234567890");
| d.setNumonss("123456789");
| d.setDossiermaitre("12345");
| d.setNumsuccu("123");
| d.setGestionnairecompta("PHILOU");
| d.setAdresseonss1("adr1");
| d.setAdresseonss2("adr2");
| d.setAdresseonss3("adr3");
| d.setAdresseonss4("adr4");
| d.setAdresseonss4("adr5");
| d.setAdresseonss4("adr6");
| d.setAdresseonss4("adr7");
| d.setAdresseonss4("adr8");
|
| DossierManagerImpl dmi = new DossierManagerImpl(em);
| dmi.insert(d);
| em.getTransaction().commit();
|
| Dossier dossier = dmi.findFromNune(d.getNune());
| assert dossier.getNune().equals(d.getNune()) : "test failed";
|
| em.close();
| }
|
| public void testFindAll() throws Exception {
| EntityManager em = EmbeddedEjbHandler.getInstance().getEntityManager();
| em.getTransaction().begin();
|
| System.out.println("testFindAll()");
| DossierManagerImpl dmi = new DossierManagerImpl(em);
| List<Dossier> list = dmi.findAll();
| assert list != null && !list.isEmpty();
|
| em.getTransaction().commit();
| em.close();
| }
|
| public void testUpdate() {
| EntityManager em = EmbeddedEjbHandler.getInstance().getEntityManager();
| em.getTransaction().begin();
|
| System.out.println("testUpdate()");
| DossierManagerImpl dmi = new DossierManagerImpl(em);
| Dossier dossier = dmi.findFromNune("1234567890");
|
| // update
| dossier.setAdresseonss1("mon adresse");
| em.merge(dossier);
| em.getTransaction().commit();
|
| // reload & check
| dossier = dmi.findFromNune("1234567890");
| assert dossier.getAdresseonss1().equals("mon adresse");
|
| em.close();
| }
| }
|
Than, my questions are :
1) how can i inject a reference to a logger in the session bean.
what is the best practice
2) in my session bean, i must add a constuctor for giving the entity manager and that only for test. Is there an alternative to do that ?
Thanks.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4047617#4047617
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4047617
More information about the jboss-user
mailing list