Title: Simple Cmp2
Help us document this example! Source available in svn or git. Open a JIRA with patch or pull request
package org.superbiz.cmp2; /** * @version $Revision$ $Date$ */ public interface Movie extends javax.ejb.EJBLocalObject { java.lang.Integer getId(); void setId(java.lang.Integer id); String getDirector(); void setDirector(String director); String getTitle(); void setTitle(String title); int getYear(); void setYear(int year); }
package org.superbiz.cmp2; import javax.ejb.EntityBean; public abstract class MovieBean implements EntityBean { public MovieBean() { } public Integer ejbCreate(String director, String title, int year) { this.setDirector(director); this.setTitle(title); this.setYear(year); return null; } public abstract java.lang.Integer getId(); public abstract void setId(java.lang.Integer id); public abstract String getDirector(); public abstract void setDirector(String director); public abstract String getTitle(); public abstract void setTitle(String title); public abstract int getYear(); public abstract void setYear(int year); }
package org.superbiz.cmp2; import javax.ejb.CreateException; import javax.ejb.FinderException; import java.util.Collection; /** * @version $Revision$ $Date$ */ interface Movies extends javax.ejb.EJBLocalHome { Movie create(String director, String title, int year) throws CreateException; Movie findByPrimaryKey(Integer primarykey) throws FinderException; Collection<Movie> findAll() throws FinderException; Collection<Movie> findByDirector(String director) throws FinderException; }
<ejb-jar> <enterprise-beans> <entity> <ejb-name>MovieBean</ejb-name> <local-home>org.superbiz.cmp2.Movies</local-home> <local>org.superbiz.cmp2.Movie</local> <ejb-class>org.superbiz.cmp2.MovieBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.Integer</prim-key-class> <reentrant>false</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>MovieBean</abstract-schema-name> <cmp-field> <field-name>id</field-name> </cmp-field> <cmp-field> <field-name>director</field-name> </cmp-field> <cmp-field> <field-name>year</field-name> </cmp-field> <cmp-field> <field-name>title</field-name> </cmp-field> <primkey-field>id</primkey-field> <query> <query-method> <method-name>findByDirector</method-name> <method-params> <method-param>java.lang.String</method-param> </method-params> </query-method> <ejb-ql>SELECT m FROM MovieBean m WHERE m.director = ?1</ejb-ql> </query> <query> <query-method> <method-name>findAll</method-name> <method-params/> </query-method> <ejb-ql>SELECT m FROM MovieBean as m</ejb-ql> </query> </entity> </enterprise-beans> </ejb-jar>
<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"> <enterprise-beans> <entity> <ejb-name>MovieBean</ejb-name> <key-generator xmlns="http://www.openejb.org/xml/ns/pkgen-2.1"> <uuid/> </key-generator> </entity> </enterprise-beans> </openejb-jar>
package org.superbiz.cmp2; import junit.framework.TestCase; import javax.naming.Context; import javax.naming.InitialContext; import java.util.Collection; import java.util.Properties; /** * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $ */ public class MoviesTest extends TestCase { public void test() throws Exception { Properties p = new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory"); p.put("movieDatabase", "new://Resource?type=DataSource"); p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver"); p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb"); p.put("movieDatabaseUnmanaged", "new://Resource?type=DataSource"); p.put("movieDatabaseUnmanaged.JdbcDriver", "org.hsqldb.jdbcDriver"); p.put("movieDatabaseUnmanaged.JdbcUrl", "jdbc:hsqldb:mem:moviedb"); p.put("movieDatabaseUnmanaged.JtaManaged", "false"); Context context = new InitialContext(p); Movies movies = (Movies) context.lookup("MovieBeanLocalHome"); movies.create("Quentin Tarantino", "Reservoir Dogs", 1992); movies.create("Joel Coen", "Fargo", 1996); movies.create("Joel Coen", "The Big Lebowski", 1998); Collection<Movie> list = movies.findAll(); assertEquals("Collection.size()", 3, list.size()); for (Movie movie : list) { movies.remove(movie.getPrimaryKey()); } assertEquals("Movies.findAll()", 0, movies.findAll().size()); } }
------------------------------------------------------- T E S T S ------------------------------------------------------- Running org.superbiz.cmp2.MoviesTest Apache OpenEJB 4.0.0-beta-1 build: 20111002-04:06 http://openejb.apache.org/ INFO - openejb.home = /Users/dblevins/examples/simple-cmp2/target INFO - openejb.base = /Users/dblevins/examples/simple-cmp2/target INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) INFO - Configuring Service(id=movieDatabaseUnmanaged, type=Resource, provider-id=Default JDBC Database) INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database) INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-cmp2/target/classes INFO - Beginning load: /Users/dblevins/examples/simple-cmp2/target/classes INFO - Configuring enterprise application: /Users/dblevins/examples/simple-cmp2/target/classpath.ear INFO - Configuring Service(id=Default CMP Container, type=Container, provider-id=Default CMP Container) INFO - Auto-creating a container for bean MovieBean: Container(type=CMP_ENTITY, id=Default CMP Container) INFO - Configuring PersistenceUnit(name=cmp) INFO - Adjusting PersistenceUnit cmp <jta-data-source> to Resource ID 'movieDatabase' from 'null' INFO - Adjusting PersistenceUnit cmp <non-jta-data-source> to Resource ID 'movieDatabaseUnmanaged' from 'null' INFO - Enterprise application "/Users/dblevins/examples/simple-cmp2/target/classpath.ear" loaded. INFO - Assembling app: /Users/dblevins/examples/simple-cmp2/target/classpath.ear INFO - PersistenceUnit(name=cmp, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 160ms INFO - Jndi(name=MovieBeanLocalHome) --> Ejb(deployment-id=MovieBean) INFO - Jndi(name=global/classpath.ear/simple-cmp2/MovieBean!org.superbiz.cmp2.Movies) --> Ejb(deployment-id=MovieBean) INFO - Jndi(name=global/classpath.ear/simple-cmp2/MovieBean) --> Ejb(deployment-id=MovieBean) INFO - Created Ejb(deployment-id=MovieBean, ejb-name=MovieBean, container=Default CMP Container) INFO - Started Ejb(deployment-id=MovieBean, ejb-name=MovieBean, container=Default CMP Container) INFO - Deployed Application(path=/Users/dblevins/examples/simple-cmp2/target/classpath.ear) Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.919 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0