tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amber <ambe...@hotmail.fr>
Subject Re: openEJB fail on second test
Date Wed, 22 Feb 2012 20:45:22 GMT
Romain, thanks for your advices :)

Of course if I remove the transaction code I have to use the entity manager
from the EJB and not the one remains in the test class ^^ (I should have
delete it..)

Anyway the code is working now and I even tried to move it to a Web Service.
works fine..except one thing : after the delete, the final assertion failed
(null pointer) I don't know why ?

Here the code :

*The movie :* 

@Entity
public class Movie {

	
	@Id 
    @GeneratedValue 
    private long id; 
	
....


*The movies *
@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
@WebService(endpointInterface = "org.superbiz.altdd.IMoviesWS", serviceName
= "MoviesWebService", targetNamespace = "http://superbiz.org/wsdl")
public class Movies implements IMoviesWS {

	@PersistenceContext(unitName = "movie-unit", type =
PersistenceContextType.TRANSACTION)
	private EntityManager entityManager;

	public void addMovie(Movie movie) throws Exception {
		entityManager.persist(movie);
	}

	public void deleteMovie(Movie movie) throws Exception {
		entityManager.remove(entityManager.find(Movie.class, movie.getId()));
	}

	
	@SuppressWarnings("unchecked")
	public List<Movie> getMovies() throws Exception {
		Query query = entityManager.createQuery("SELECT m from Movie as m");
		return query.getResultList();
	}
}


*The interface of the WS :*

@WebService(name = "IMoviesWS", targetNamespace =
"http://superbiz.org/wsdl") 
public interface IMoviesWS {

	 
	void addMovie(Movie movie) throws Exception;

	void deleteMovie(Movie movie) throws Exception;

	List<Movie> getMovies() throws Exception;
}

*And the test :*

@LocalClient
public class MoviesTest extends TestCase {

	@WebServiceRef(wsdlLocation = "http://127.0.0.1:4204/Movies?wsdl")
	private IMoviesWS movies;

	private InitialContext initialContext;

	public void setUp() throws Exception {

		Properties properties = new Properties();
		properties.put("movieDatabase", "new://Resource?type=DataSource");
		properties.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
		properties.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");

		properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
				"org.apache.openejb.core.LocalInitialContextFactory");
		properties.setProperty("openejb.embedded.remotable", "true");

		initialContext = new InitialContext(properties);
		initialContext.bind("inject", this);
	}

	public void test() throws Exception {
		movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
		movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
		movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));

		List<Movie> list = movies.getMovies();
		assertEquals("List.size()", 3, list.size());
		for (Movie movie : list) {
			movies.deleteMovie(movie);
		}
		/*// do a null pointer exception why?*/
		// assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
	}

	public void testWS() throws Exception {
		Service movieService = Service.create(new URL(
				"http://127.0.0.1:4204/Movies?wsdl"), new QName(
				"http://superbiz.org/wsdl", "MoviesWebService"));
		assertNotNull(movieService);

		IMoviesWS mv = movieService.getPort(IMoviesWS.class);
		mv.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
		assertEquals("List.size()", 1, movies.getMovies().size());
	}
}

thank you for your patience!
And I hope this will help other noobs like me ))

--
View this message in context: http://openejb.979440.n4.nabble.com/openEJB-fail-on-second-test-tp4401889p4411703.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Mime
View raw message