[hibernate-commits] Hibernate SVN: r10809 - in branches/Branch_3_2/HibernateExt/metadata/src: java/org/hibernate/validator java/org/hibernate/validator/resources test/org/hibernate/test/annotations/collectionelement test/org/hibernate/validator/test test/org/hibernate/validator/test/validator

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Nov 14 23:41:40 EST 2006


Author: epbernard
Date: 2006-11-14 23:41:36 -0500 (Tue, 14 Nov 2006)
New Revision: 10809

Added:
   branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/NotEmpty.java
   branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/NotEmptyValidator.java
   branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/validator/test/validator/
   branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/validator/test/validator/Car.java
   branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/validator/test/validator/NotEmptyTest.java
Modified:
   branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/resources/DefaultValidatorMessages.properties
   branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/resources/DefaultValidatorMessages_fr.properties
   branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/test/annotations/collectionelement/CollectionElementTest.java
Log:
ANN-493 @NotEmpty

Added: branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/NotEmpty.java
===================================================================
--- branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/NotEmpty.java	2006-11-14 23:19:28 UTC (rev 10808)
+++ branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/NotEmpty.java	2006-11-15 04:41:36 UTC (rev 10809)
@@ -0,0 +1,22 @@
+//$Id: $
+package org.hibernate.validator;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Check that a String is not empty (not null and length > 0)
+ * or that a Collection (or array) is not empty (not null and length > 0)
+ *
+ * @author Emmanuel Bernard
+ */
+ at Documented
+ at ValidatorClass(NotEmptyValidator.class)
+ at Target({ElementType.METHOD, ElementType.FIELD})
+ at Retention( RetentionPolicy.RUNTIME )
+public @interface NotEmpty {
+	String message() default "{validator.notEmpty}";
+}

Added: branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/NotEmptyValidator.java
===================================================================
--- branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/NotEmptyValidator.java	2006-11-14 23:19:28 UTC (rev 10808)
+++ branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/NotEmptyValidator.java	2006-11-15 04:41:36 UTC (rev 10809)
@@ -0,0 +1,35 @@
+//$Id: $
+package org.hibernate.validator;
+
+import java.io.Serializable;
+import java.lang.reflect.Array;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * Check the non emptyness of the element
+ *
+ * @author Gavin King
+ */
+public class NotEmptyValidator implements Validator<NotEmpty>, Serializable {
+
+	public void initialize(NotEmpty parameters) {
+	}
+
+	public boolean isValid(Object value) {
+		if ( value == null ) return false;
+		if ( value.getClass().isArray() ) {
+			return Array.getLength( value ) > 0;
+		}
+		else if ( value instanceof Collection ) {
+			return ( (Collection) value ).size() > 0;
+		}
+		else if ( value instanceof Map ) {
+			return ( (Map) value ).size() > 0;
+		}
+		else {
+			return ( (String) value ).length() > 0;
+		}
+	}
+
+}

Modified: branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/resources/DefaultValidatorMessages.properties
===================================================================
--- branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/resources/DefaultValidatorMessages.properties	2006-11-14 23:19:28 UTC (rev 10808)
+++ branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/resources/DefaultValidatorMessages.properties	2006-11-15 04:41:36 UTC (rev 10809)
@@ -9,4 +9,5 @@
 validator.pattern=must match "{regex}"
 validator.range=must be between {min} and {max}
 validator.size=size must be between {min} and {max}
-validator.email=not a well-formed email address
\ No newline at end of file
+validator.email=not a well-formed email address
+validator.notEmpty=may not be null or empty
\ No newline at end of file

Modified: branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/resources/DefaultValidatorMessages_fr.properties
===================================================================
--- branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/resources/DefaultValidatorMessages_fr.properties	2006-11-14 23:19:28 UTC (rev 10808)
+++ branches/Branch_3_2/HibernateExt/metadata/src/java/org/hibernate/validator/resources/DefaultValidatorMessages_fr.properties	2006-11-15 04:41:36 UTC (rev 10809)
@@ -9,4 +9,5 @@
 validator.pattern=doit suivre "{regex}"
 validator.range=doit être entre {min} et {max}
 validator.size=le nombre d'éléments doit être entre {min} et {max}
-validator.email=Address email mal formée
\ No newline at end of file
+validator.email=Address email mal formée
+validator.notEmpty=ne peut pas être nul ou vide
\ No newline at end of file

Modified: branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/test/annotations/collectionelement/CollectionElementTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/test/annotations/collectionelement/CollectionElementTest.java	2006-11-14 23:19:28 UTC (rev 10808)
+++ branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/test/annotations/collectionelement/CollectionElementTest.java	2006-11-15 04:41:36 UTC (rev 10809)
@@ -15,8 +15,9 @@
 
 	public void testSimpleElement() throws Exception {
 		assertEquals(
-				"BoyFavoriteNumbers", 
-				getCfg().getCollectionMapping( Boy.class.getName() + '.' + "favoriteNumbers" ).getCollectionTable().getName()
+				"BoyFavoriteNumbers",
+				getCfg().getCollectionMapping( Boy.class.getName() + '.' + "favoriteNumbers" )
+						.getCollectionTable().getName()
 		);
 		Session s = openSession();
 		s.getTransaction().begin();
@@ -28,7 +29,7 @@
 		boy.getScorePerNickName().put( "Johnny", new Integer( 3 ) );
 		boy.getScorePerNickName().put( "Thing", new Integer( 5 ) );
 		int[] favNbrs = new int[4];
-		for ( int index = 0; index < favNbrs.length - 1 ; index++ ) {
+		for ( int index = 0; index < favNbrs.length - 1; index++ ) {
 			favNbrs[index] = index * 3;
 		}
 		boy.setFavoriteNumbers( favNbrs );
@@ -47,8 +48,8 @@
 		assertNotNull( boy.getFavoriteNumbers() );
 		assertEquals( 3, boy.getFavoriteNumbers()[1] );
 		assertTrue( boy.getCharacters().contains( Character.CRAFTY ) );
-		List result = s.createQuery( "select boy from Boy boy join boy.nickNames names where names = :name")
-				.setParameter( "name", "Thing").list();
+		List result = s.createQuery( "select boy from Boy boy join boy.nickNames names where names = :name" )
+				.setParameter( "name", "Thing" ).list();
 		assertEquals( 1, result.size() );
 		s.delete( boy );
 		tx.commit();
@@ -110,7 +111,50 @@
 
 	}
 
+	public void testLazyCollectionofElements() throws Exception {
+		assertEquals(
+				"BoyFavoriteNumbers",
+				getCfg().getCollectionMapping( Boy.class.getName() + '.' + "favoriteNumbers" )
+						.getCollectionTable().getName()
+		);
+		Session s = openSession();
+		s.getTransaction().begin();
+		Boy boy = new Boy();
+		boy.setFirstName( "John" );
+		boy.setLastName( "Doe" );
+		boy.getNickNames().add( "Johnny" );
+		boy.getNickNames().add( "Thing" );
+		boy.getScorePerNickName().put( "Johnny", new Integer( 3 ) );
+		boy.getScorePerNickName().put( "Thing", new Integer( 5 ) );
+		int[] favNbrs = new int[4];
+		for ( int index = 0; index < favNbrs.length - 1; index++ ) {
+			favNbrs[index] = index * 3;
+		}
+		boy.setFavoriteNumbers( favNbrs );
+		boy.getCharacters().add( Character.GENTLE );
+		boy.getCharacters().add( Character.CRAFTY );
+		s.persist( boy );
+		s.getTransaction().commit();
+		s.clear();
+		Transaction tx = s.beginTransaction();
+		boy = (Boy) s.get( Boy.class, boy.getId() );
+		assertNotNull( boy.getNickNames() );
+		assertTrue( boy.getNickNames().contains( "Thing" ) );
+		assertNotNull( boy.getScorePerNickName() );
+		assertTrue( boy.getScorePerNickName().containsKey( "Thing" ) );
+		assertEquals( new Integer( 5 ), boy.getScorePerNickName().get( "Thing" ) );
+		assertNotNull( boy.getFavoriteNumbers() );
+		assertEquals( 3, boy.getFavoriteNumbers()[1] );
+		assertTrue( boy.getCharacters().contains( Character.CRAFTY ) );
+		List result = s.createQuery( "select boy from Boy boy join boy.nickNames names where names = :name" )
+				.setParameter( "name", "Thing" ).list();
+		assertEquals( 1, result.size() );
+		s.delete( boy );
+		tx.commit();
+		s.close();
+	}
 
+
 	protected Class[] getMappings() {
 		return new Class[]{
 				Boy.class,

Added: branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/validator/test/validator/Car.java
===================================================================
--- branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/validator/test/validator/Car.java	2006-11-14 23:19:28 UTC (rev 10808)
+++ branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/validator/test/validator/Car.java	2006-11-15 04:41:36 UTC (rev 10809)
@@ -0,0 +1,14 @@
+//$Id: $
+package org.hibernate.validator.test.validator;
+
+import org.hibernate.validator.NotEmpty;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class Car {
+	@NotEmpty
+	public String name;
+	@NotEmpty
+	public String[] insurances;
+}

Added: branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/validator/test/validator/NotEmptyTest.java
===================================================================
--- branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/validator/test/validator/NotEmptyTest.java	2006-11-14 23:19:28 UTC (rev 10808)
+++ branches/Branch_3_2/HibernateExt/metadata/src/test/org/hibernate/validator/test/validator/NotEmptyTest.java	2006-11-15 04:41:36 UTC (rev 10809)
@@ -0,0 +1,46 @@
+//$Id: $
+package org.hibernate.validator.test.validator;
+
+import java.util.ResourceBundle;
+import java.util.Locale;
+import java.util.Date;
+import java.io.Serializable;
+import java.math.BigInteger;
+
+import junit.framework.TestCase;
+import org.hibernate.validator.test.Address;
+import org.hibernate.validator.test.Brother;
+import org.hibernate.validator.test.Tv;
+import org.hibernate.validator.test.Vase;
+import org.hibernate.validator.test.Site;
+import org.hibernate.validator.test.Contact;
+import org.hibernate.validator.test.ValidatorTest;
+import org.hibernate.validator.ClassValidator;
+import org.hibernate.validator.InvalidValue;
+import org.hibernate.validator.MessageInterpolator;
+import org.hibernate.validator.Validator;
+
+/**
+ * @author Gavin King
+ */
+public class NotEmptyTest extends TestCase {
+
+	public void testBigInteger() throws Exception {
+		Car car = new Car();
+		ClassValidator<Car> classValidator = new ClassValidator<Car>( Car.class );
+		InvalidValue[] invalidValues = classValidator.getInvalidValues( car );
+		assertEquals( 2, invalidValues.length );
+		car.name = "";
+		invalidValues = classValidator.getInvalidValues( car );
+		assertEquals( 2, invalidValues.length );
+		car.name = "350Z";
+		invalidValues = classValidator.getInvalidValues( car );
+		assertEquals( 1, invalidValues.length );
+		car.insurances = new String[0];
+		invalidValues = classValidator.getInvalidValues( car );
+		assertEquals( 1, invalidValues.length );
+		car.insurances = new String[1];
+		invalidValues = classValidator.getInvalidValues( car );
+		assertEquals( 0, invalidValues.length );
+	}
+}




More information about the hibernate-commits mailing list