[hibernate-commits] Hibernate SVN: r11164 - in branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test: jpa and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Wed Feb 7 18:00:53 EST 2007
Author: epbernard
Date: 2007-02-07 18:00:53 -0500 (Wed, 07 Feb 2007)
New Revision: 11164
Added:
branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/
branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/Commander.java
branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/JPATestCase.java
branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/JPAValidateListenerTest.java
branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/Submarine.java
Log:
Java persistence integration test
Added: branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/Commander.java
===================================================================
--- branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/Commander.java (rev 0)
+++ branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/Commander.java 2007-02-07 23:00:53 UTC (rev 11164)
@@ -0,0 +1,25 @@
+//$Id: $
+package org.hibernate.validator.test.jpa;
+
+import javax.persistence.Embeddable;
+import javax.persistence.Column;
+
+import org.hibernate.validator.NotEmpty;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Embeddable
+public class Commander {
+ @NotEmpty
+ @Column(name="commander_name")
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
Added: branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/JPATestCase.java
===================================================================
--- branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/JPATestCase.java (rev 0)
+++ branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/JPATestCase.java 2007-02-07 23:00:53 UTC (rev 11164)
@@ -0,0 +1,103 @@
+//$Id: $
+package org.hibernate.validator.test.jpa;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Properties;
+import java.util.ArrayList;
+import java.io.InputStream;
+import java.io.IOException;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.hibernate.cfg.Environment;
+import org.hibernate.ejb.HibernatePersistence;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public abstract class JPATestCase extends junit.framework.TestCase {
+ protected EntityManagerFactory factory;
+
+ public JPATestCase() {
+ super();
+ }
+
+ public JPATestCase(String name) {
+ super( name );
+ }
+
+ public void setUp() {
+ factory = new HibernatePersistence().createEntityManagerFactory( getConfig() );
+ }
+
+ public void tearDown() {
+ factory.close();
+ }
+
+ public abstract Class[] getAnnotatedClasses();
+
+ public String[] getEjb3DD() {
+ return new String[]{};
+ }
+
+ public Map<Class, String> getCachedClasses() {
+ return new HashMap<Class, String>();
+ }
+
+ public Map<String, String> getCachedCollections() {
+ return new HashMap<String, String>();
+ }
+
+ public static Properties loadProperties() {
+ Properties props = new Properties();
+ InputStream stream = Persistence.class.getResourceAsStream( "/hibernate.properties" );
+ if ( stream != null ) {
+ try {
+ props.load( stream );
+ }
+ catch (Exception e) {
+ throw new RuntimeException( "could not load hibernate.properties" );
+ }
+ finally {
+ try {
+ stream.close();
+ }
+ catch (IOException ioe) {
+ }
+ }
+ }
+ props.setProperty( Environment.HBM2DDL_AUTO, "create-drop" );
+ return props;
+ }
+
+ public Map getConfig() {
+ Map config = loadProperties();
+ ArrayList<Class> classes = new ArrayList<Class>();
+
+ for ( Class clazz : getAnnotatedClasses() ) {
+ classes.add( clazz );
+ }
+ config.put( HibernatePersistence.LOADED_CLASSES, classes );
+ for ( Map.Entry<Class, String> entry : getCachedClasses().entrySet() ) {
+ config.put(
+ HibernatePersistence.CLASS_CACHE_PREFIX + "." + entry.getKey().getName(),
+ entry.getValue()
+ );
+ }
+ for ( Map.Entry<String, String> entry : getCachedCollections().entrySet() ) {
+ config.put(
+ HibernatePersistence.COLLECTION_CACHE_PREFIX + "." + entry.getKey(),
+ entry.getValue()
+ );
+ }
+ if ( getEjb3DD().length > 0 ) {
+ ArrayList<String> dds = new ArrayList<String>();
+ for ( String dd : getEjb3DD() ) {
+ dds.add( dd );
+ }
+ config.put( HibernatePersistence.XML_FILE_NAMES, dds );
+ }
+ return config;
+ }
+}
Added: branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/JPAValidateListenerTest.java
===================================================================
--- branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/JPAValidateListenerTest.java (rev 0)
+++ branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/JPAValidateListenerTest.java 2007-02-07 23:00:53 UTC (rev 11164)
@@ -0,0 +1,84 @@
+//$Id: $
+package org.hibernate.validator.test.jpa;
+
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+
+import org.hibernate.ejb.HibernatePersistence;
+import org.hibernate.validator.Environment;
+import org.hibernate.validator.InvalidStateException;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class JPAValidateListenerTest extends JPATestCase {
+
+ public void testEventTrigger() {
+ EntityManager em = factory.createEntityManager();
+ em.getTransaction().begin();
+ Commander beetles = new Commander();
+ beetles.setName( "" );
+ Submarine yellowSubmarine = new Submarine();
+ yellowSubmarine.setCommander( beetles );
+ yellowSubmarine.setName( "" );
+ yellowSubmarine.setSize( 3 );
+ try {
+ em.persist( yellowSubmarine );
+ em.flush();
+ fail("Event not wired");
+ }
+ catch(InvalidStateException e) {
+ assertEquals( 3, e.getInvalidValues().length );
+ }
+ finally {
+ em.getTransaction().rollback();
+ em.close();
+ }
+
+ //update trigger
+ em = factory.createEntityManager();
+ em.getTransaction().begin();
+ beetles = new Commander();
+ beetles.setName( "Beetles" );
+ yellowSubmarine = new Submarine();
+ yellowSubmarine.setCommander( beetles );
+ yellowSubmarine.setName( "Yellow" );
+ yellowSubmarine.setSize( 13 );
+ em.persist( yellowSubmarine );
+ em.flush();
+ em.clear();
+ yellowSubmarine = em.find( Submarine.class, yellowSubmarine.getId() );
+ yellowSubmarine.setSize( 3 );
+ try {
+ em.flush();
+ fail("Event not wired");
+ }
+ catch(InvalidStateException e) {
+ assertEquals( 1, e.getInvalidValues().length );
+ }
+ finally {
+ em.getTransaction().rollback();
+ em.close();
+ }
+
+ }
+
+ public Class[] getAnnotatedClasses() {
+ return new Class[]{
+ Commander.class,
+ Submarine.class
+ };
+ }
+
+
+ public Map getConfig() {
+ Map map = super.getConfig();
+ //Remove regular Validator wiring
+ map.put( HibernatePersistence.EVENT_LISTENER_PREFIX + "." + "pre-insert",
+ "" );
+ map.put( HibernatePersistence.EVENT_LISTENER_PREFIX + "." + "pre-update",
+ "" );
+ return map;
+ }
+}
Added: branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/Submarine.java
===================================================================
--- branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/Submarine.java (rev 0)
+++ branches/HAN_SPLIT/HibernateExt/validator/src/test/org/hibernate/validator/test/jpa/Submarine.java 2007-02-07 23:00:53 UTC (rev 11164)
@@ -0,0 +1,65 @@
+//$Id: $
+package org.hibernate.validator.test.jpa;
+
+import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.hibernate.validator.Min;
+import org.hibernate.validator.NotEmpty;
+import org.hibernate.validator.Valid;
+import org.hibernate.validator.event.JPAValidateListener;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+ at EntityListeners( JPAValidateListener.class )
+public class Submarine {
+ @Id
+ @GeneratedValue
+ private Long id;
+
+ @NotEmpty
+ private String name;
+
+ @Valid
+ private Commander commander;
+
+ @Min( 10 )
+ private long size;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public long getSize() {
+ return size;
+ }
+
+ public void setSize(long size) {
+ this.size = size;
+ }
+
+ public Commander getCommander() {
+ return commander;
+ }
+
+ public void setCommander(Commander commander) {
+ this.commander = commander;
+ }
+}
More information about the hibernate-commits
mailing list