[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