Author: epbernard Date: 2006-03-12 13:03:57 -0500 (Sun, 12 Mar 2006) New Revision: 9608 Added: trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/ trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/CreditCard.java trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/EmbeddedObjectTest.java trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/User.java Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/validator/NotNullValidator.java Log: ANN-255 exclude composite elements from NotNullValidator.apply Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/validator/NotNullValidator.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/validator/NotNullValidator.java 2006-03-12 11:20:04 UTC (rev 9607) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/validator/NotNullValidator.java 2006-03-12 18:03:57 UTC (rev 9608) @@ -27,9 +27,11 @@ public void apply(Property property) { if ( ! ( property.getPersistentClass() instanceof SingleTableSubclass ) ) { //single table should not be forced to null - Iterator<Column> iter = (Iterator<Column>) property.getColumnIterator(); - while ( iter.hasNext() ) { - iter.next().setNullable( false ); + if ( !property.isComposite() ) { //composite should not add not-null on all columns + Iterator<Column> iter = (Iterator<Column>) property.getColumnIterator(); + while ( iter.hasNext() ) { + iter.next().setNullable( false ); + } } } } Added: trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/CreditCard.java =================================================================== --- trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/CreditCard.java 2006-03-12 11:20:04 UTC (rev 9607) +++ trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/CreditCard.java 2006-03-12 18:03:57 UTC (rev 9608) @@ -0,0 +1,36 @@ +//$Id: $ +package org.hibernate.validator.test.haintegration; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.GeneratedValue; +import javax.persistence.Embedded; + +import org.hibernate.validator.NotNull; +import org.hibernate.validator.Valid; + +/** + * @author Emmanuel Bernard + */ +@Entity +public class CreditCard { + @Id @GeneratedValue private Integer id; + @Embedded @Valid @NotNull private User username; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public User getUsername() { + return username; + } + + public void setUsername(User username) { + this.username = username; + } + +} Added: trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/EmbeddedObjectTest.java =================================================================== --- trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/EmbeddedObjectTest.java 2006-03-12 11:20:04 UTC (rev 9607) +++ trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/EmbeddedObjectTest.java 2006-03-12 18:03:57 UTC (rev 9608) @@ -0,0 +1,37 @@ +//$Id: $ +package org.hibernate.validator.test.haintegration; + +import org.hibernate.test.annotations.TestCase; +import org.hibernate.validator.ClassValidator; +import org.hibernate.Session; +import org.hibernate.Transaction; + +/** + * @author Emmanuel Bernard + */ +public class EmbeddedObjectTest extends TestCase { + public void testNotNullEmbeddedObject() throws Exception { + CreditCard cc = new CreditCard(); + User username = new User(); + username.setFirstname( "Emmanuel" ); + username.setMiddlename( "P" ); + username.setLastname( "Bernard" ); + cc.setUsername( username ); + ClassValidator ccValid = new ClassValidator(CreditCard.class); + assertEquals( 0, ccValid.getInvalidValues( cc ).length ); + username.setMiddlename( null ); + assertEquals( 0, ccValid.getInvalidValues( cc ).length ); + Session s = openSession(); + Transaction tx = s.beginTransaction(); + s.persist( cc ); + s.flush(); + tx.rollback(); + s.close(); + } + + protected Class[] getMappings() { + return new Class[] { + CreditCard.class + }; + } +} Added: trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/User.java =================================================================== --- trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/User.java 2006-03-12 11:20:04 UTC (rev 9607) +++ trunk/HibernateExt/metadata/src/test/org/hibernate/validator/test/haintegration/User.java 2006-03-12 18:03:57 UTC (rev 9608) @@ -0,0 +1,40 @@ +//$Id: $ +package org.hibernate.validator.test.haintegration; + +import javax.persistence.Embeddable; + +import org.hibernate.validator.NotNull; + +/** + * @author Emmanuel Bernard + */ +@Embeddable +public class User { + @NotNull private String firstname; + private String middlename; + @NotNull private String lastname; + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + + public String getMiddlename() { + return middlename; + } + + public void setMiddlename(String middlename) { + this.middlename = middlename; + } +} |