tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antonio <anttonij...@gmail.com>
Subject Re: I can not look up for a bean in my Unit test
Date Thu, 21 Feb 2013 11:12:36 GMT
Hi Again,

Thanks it worked, the name of the bean was not correct but now I'm getting a
different error:

-------------------------------------------------------------------------------
Test set: com.altobridge.omc.orm.dao.UserDaoLocalTest
-------------------------------------------------------------------------------
Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.598 sec
<<< FAILURE!
testCreateUser(com.altobridge.omc.orm.dao.UserDaoLocalTest)  Time elapsed:
4.522 sec  <<< ERROR!
javax.ejb.EJBException: The bean encountered a non-application exception;
nested exception is: 
	java.lang.NullPointerException
	at
org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:363)
	at
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:283)
	at $Proxy42.createUser(Unknown Source)
	at
com.altobridge.omc.orm.dao.UserDaoLocalTest.testCreateUser(UserDaoLocalTest.java:47)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at
org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
	at
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
	at
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
	at
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
	at
org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
	at
org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
Caused by: java.lang.NullPointerException
	at com.altobridge.omc.orm.dao.UserDao.createUser(UserDao.java:31)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
	at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
	at org.apache.openejb.cdi.CdiInterceptor.invoke(CdiInterceptor.java:128)
	at org.apache.openejb.cdi.CdiInterceptor.access$000(CdiInterceptor.java:43)
	at org.apache.openejb.cdi.CdiInterceptor$1.call(CdiInterceptor.java:64)
	at
org.apache.openejb.cdi.CdiInterceptor.aroundInvoke(CdiInterceptor.java:70)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
	at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
	at
org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:176)
	at
org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:95)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
	at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
	at
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:138)
	at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:237)
	at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:189)
	at
org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:253)
	at
org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:248)
	at
org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92)
	at
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:279)
	... 31 more

I changed my classes to follow your example of separating business logic
from business model and I modified the classes like that:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.altobridge.omc.orm.dao;

import com.altobridge.omc.orm.entities.User;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;

/**
 *
 * @author antonio
 */
@Stateless
public class UserDao implements UserDaoLocal 
{
    @PersistenceContext
            ( 
            unitName = "com.altobridge_omc-aomdb_ejb_1.0-SNAPSHOTPU", 
            type = PersistenceContextType.TRANSACTION 
            )
    private EntityManager entityManager;
    
    
    @Override
    public void createUser( User user ) 
    {
        entityManager.persist(user);
    }

    @Override
    public void deleteUser( User user ) 
    {
        entityManager.remove(user);
    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.altobridge.omc.orm.dao;

import com.altobridge.omc.orm.entities.User;
import javax.ejb.Local;

/**
 *
 * @author antonio
 */
@Local
public interface UserDaoLocal 
{
    public void createUser (User user);
    public void deleteUser (User user);
}

The test is the same
 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.altobridge.omc.orm.dao;

import com.altobridge.omc.orm.entities.User;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.junit.Test;

/**
 *
 * @author antonio
 */
public class UserDaoLocalTest {
    
    public UserDaoLocalTest() {
    }

    /**
     * Test of createUser method, of class UserDaoLocal.
     */
    @Test
    public void testCreateUser() throws NamingException 
    {
        Properties p = 
                new Properties();
        p.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.core.LocalInitialContextFactory");
        p.put("openejb.deployments.classpath.ear", "true");
        p.put("postgresDatabase", "new://Resource?type=DataSource");
        p.put("postgresDatabase.JdbcDriver", "org.postgresql.Driver");
        p.put("postgresDatabase.JdbcUrl",
"jdbc:postgresql://localhost:5432/aomdb");

        Context context = 
                new InitialContext(p);
        UserDaoLocal users = 
                (UserDaoLocal) context.lookup("UserDaoLocal");
        User user =
                new User();
        user.setUsername("Quentin Tarantino");
        user.setId("QuentinTarantino.0");
        users.createUser(user);
    }

    /**
     * Test of deleteUser method, of class UserDaoLocal.
     */
    @Test
    public void testDeleteUser() {
    }

    
}

I changed the persistence to look like yours

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="com.altobridge_omc-aomdb_ejb_1.0-SNAPSHOTPU"
transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>postgresDatabase</jta-data-source>
    ...
    <class>com.altobridge.omc.orm.entities.User</class>
    ...
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.jdbc.url"
value="jdbc:postgresql://localhost:5432/aomdb"/>
      <property name="javax.persistence.jdbc.password" value="omcad1n"/>
      <property name="javax.persistence.jdbc.driver"
value="org.postgresql.Driver"/>
      <property name="javax.persistence.jdbc.user" value="omcadmin"/>
      <property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)"/>  
    </properties>
  </persistence-unit>
</persistence>

I know that the null pointer is because the entity manager of the bean is
null.
I know is not being injected but i don't what I'm doing wrong with the
context.



--
View this message in context: http://openejb.979440.n4.nabble.com/I-can-not-look-up-for-a-bean-in-my-Unit-test-tp4660917p4660932.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Mime
View raw message