Hibernate SVN: r15653 - search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader.
by hibernate-commits@lists.jboss.org
Author: jcosta(a)redhat.com
Date: 2008-12-03 08:58:53 -0500 (Wed, 03 Dec 2008)
New Revision: 15653
Modified:
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
Log:
HSEARCH-315 - ReaderPerfTestCase uses a too high value for suspectCharge property
Modified: search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
===================================================================
--- search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 13:57:55 UTC (rev 15652)
+++ search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 13:58:53 UTC (rev 15653)
@@ -92,7 +92,7 @@
suspect.setSuspectCharge( "thief liar " );
}
else {
- suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system and sees in it the perfect underground highway for his thievery. Washington Post columnist John Kelly recommends this title for middle schoolers, especially to be read aloud.");
+ suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system.");
}
s.persist( suspect );
}
15 years, 6 months
Hibernate SVN: r15652 - in search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test: reader and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: jcosta(a)redhat.com
Date: 2008-12-03 08:57:55 -0500 (Wed, 03 Dec 2008)
New Revision: 15652
Modified:
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/bridge/Cloud.java
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
Log:
Reverting 15651, for non-related issues to HSEARCH-317. Kept the commit for HSEARCH-317
Modified: search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/bridge/Cloud.java
===================================================================
--- search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/bridge/Cloud.java 2008-12-03 13:56:17 UTC (rev 15651)
+++ search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/bridge/Cloud.java 2008-12-03 13:57:55 UTC (rev 15652)
@@ -2,8 +2,6 @@
package org.hibernate.search.test.bridge;
import java.util.Date;
-
-import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@@ -96,7 +94,6 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
- @Column(name="int1x")
public Integer getInt1() {
return int1;
}
@@ -106,7 +103,6 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
- @Column(name="int2x")
public int getInt2() {
return int2;
}
@@ -161,7 +157,6 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
- @Column(name="xdate")
public Date getDate() {
return date;
}
Modified: search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
===================================================================
--- search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 13:56:17 UTC (rev 15651)
+++ search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 13:57:55 UTC (rev 15652)
@@ -92,7 +92,7 @@
suspect.setSuspectCharge( "thief liar " );
}
else {
- suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system.");
+ suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system and sees in it the perfect underground highway for his thievery. Washington Post columnist John Kelly recommends this title for middle schoolers, especially to be read aloud.");
}
s.persist( suspect );
}
15 years, 6 months
Hibernate SVN: r15651 - in search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test: embedded and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: jcosta(a)redhat.com
Date: 2008-12-03 08:56:17 -0500 (Wed, 03 Dec 2008)
New Revision: 15651
Modified:
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/bridge/Cloud.java
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/embedded/Product.java
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
Log:
HSEARCH-317 - Workaround for JBPAPP-1071
Modified: search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/bridge/Cloud.java
===================================================================
--- search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/bridge/Cloud.java 2008-12-03 13:55:38 UTC (rev 15650)
+++ search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/bridge/Cloud.java 2008-12-03 13:56:17 UTC (rev 15651)
@@ -2,6 +2,8 @@
package org.hibernate.search.test.bridge;
import java.util.Date;
+
+import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@@ -94,6 +96,7 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
+ @Column(name="int1x")
public Integer getInt1() {
return int1;
}
@@ -103,6 +106,7 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
+ @Column(name="int2x")
public int getInt2() {
return int2;
}
@@ -157,6 +161,7 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
+ @Column(name="xdate")
public Date getDate() {
return date;
}
Modified: search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/embedded/Product.java
===================================================================
--- search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/embedded/Product.java 2008-12-03 13:55:38 UTC (rev 15650)
+++ search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/embedded/Product.java 2008-12-03 13:56:17 UTC (rev 15651)
@@ -33,7 +33,7 @@
@IndexedEmbedded
private Set<Author> authors = new HashSet<Author>();
@ManyToMany(cascade = CascadeType.REMOVE) //just to make the test easier, cascade doesn't really make any business sense
- @MapKey(columns = @Column(name="CUST_NAME") )
+ @MapKey(columns = @Column(name="CUST_NAME", nullable=false) )
@IndexedEmbedded
private Map<String, Order> orders = new HashMap<String, Order>();
Modified: search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
===================================================================
--- search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 13:55:38 UTC (rev 15650)
+++ search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 13:56:17 UTC (rev 15651)
@@ -92,7 +92,7 @@
suspect.setSuspectCharge( "thief liar " );
}
else {
- suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system and sees in it the perfect underground highway for his thievery. Washington Post columnist John Kelly recommends this title for middle schoolers, especially to be read aloud.");
+ suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system.");
}
s.persist( suspect );
}
15 years, 6 months
Hibernate SVN: r15650 - in search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test: embedded and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: jcosta(a)redhat.com
Date: 2008-12-03 08:55:38 -0500 (Wed, 03 Dec 2008)
New Revision: 15650
Modified:
search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/bridge/Cloud.java
search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/embedded/Product.java
search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
Log:
HSEARCH-317 HSEARCH-318 HSEARCH-319 - Reverting from 15647 to 15649, as the patches are supposed to be commited at branch, not tag
Modified: search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/bridge/Cloud.java
===================================================================
--- search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/bridge/Cloud.java 2008-12-03 13:47:14 UTC (rev 15649)
+++ search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/bridge/Cloud.java 2008-12-03 13:55:38 UTC (rev 15650)
@@ -2,8 +2,6 @@
package org.hibernate.search.test.bridge;
import java.util.Date;
-
-import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@@ -96,7 +94,6 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
- @Column(name="int1x")
public Integer getInt1() {
return int1;
}
@@ -106,7 +103,6 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
- @Column(name="int2x")
public int getInt2() {
return int2;
}
@@ -161,7 +157,6 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
- @Column(name="xdate")
public Date getDate() {
return date;
}
Modified: search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/embedded/Product.java
===================================================================
--- search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/embedded/Product.java 2008-12-03 13:47:14 UTC (rev 15649)
+++ search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/embedded/Product.java 2008-12-03 13:55:38 UTC (rev 15650)
@@ -33,7 +33,7 @@
@IndexedEmbedded
private Set<Author> authors = new HashSet<Author>();
@ManyToMany(cascade = CascadeType.REMOVE) //just to make the test easier, cascade doesn't really make any business sense
- @MapKey(columns = @Column(name="CUST_NAME", nullable=false) )
+ @MapKey(columns = @Column(name="CUST_NAME") )
@IndexedEmbedded
private Map<String, Order> orders = new HashMap<String, Order>();
Modified: search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
===================================================================
--- search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 13:47:14 UTC (rev 15649)
+++ search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 13:55:38 UTC (rev 15650)
@@ -92,7 +92,7 @@
suspect.setSuspectCharge( "thief liar " );
}
else {
- suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system.");
+ suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system and sees in it the perfect underground highway for his thievery. Washington Post columnist John Kelly recommends this title for middle schoolers, especially to be read aloud.");
}
s.persist( suspect );
}
15 years, 6 months
Hibernate SVN: r15649 - search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/embedded.
by hibernate-commits@lists.jboss.org
Author: jcosta(a)redhat.com
Date: 2008-12-03 08:47:14 -0500 (Wed, 03 Dec 2008)
New Revision: 15649
Modified:
search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/embedded/Product.java
Log:
HSEARCH-317 - Workaround for bug JBPAPP-1071
Modified: search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/embedded/Product.java
===================================================================
--- search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/embedded/Product.java 2008-12-03 13:29:15 UTC (rev 15648)
+++ search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/embedded/Product.java 2008-12-03 13:47:14 UTC (rev 15649)
@@ -33,7 +33,7 @@
@IndexedEmbedded
private Set<Author> authors = new HashSet<Author>();
@ManyToMany(cascade = CascadeType.REMOVE) //just to make the test easier, cascade doesn't really make any business sense
- @MapKey(columns = @Column(name="CUST_NAME") )
+ @MapKey(columns = @Column(name="CUST_NAME", nullable=false) )
@IndexedEmbedded
private Map<String, Order> orders = new HashMap<String, Order>();
15 years, 6 months
Hibernate SVN: r15648 - search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/bridge.
by hibernate-commits@lists.jboss.org
Author: jcosta(a)redhat.com
Date: 2008-12-03 08:29:15 -0500 (Wed, 03 Dec 2008)
New Revision: 15648
Modified:
search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/bridge/Cloud.java
Log:
HSEARCH-316 - Database keywords causes tests to fail
Modified: search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/bridge/Cloud.java
===================================================================
--- search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/bridge/Cloud.java 2008-12-03 13:24:52 UTC (rev 15647)
+++ search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/bridge/Cloud.java 2008-12-03 13:29:15 UTC (rev 15648)
@@ -2,6 +2,8 @@
package org.hibernate.search.test.bridge;
import java.util.Date;
+
+import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@@ -94,6 +96,7 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
+ @Column(name="int1x")
public Integer getInt1() {
return int1;
}
@@ -103,6 +106,7 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
+ @Column(name="int2x")
public int getInt2() {
return int2;
}
@@ -157,6 +161,7 @@
}
@Field(index=Index.UN_TOKENIZED, store=Store.YES)
+ @Column(name="xdate")
public Date getDate() {
return date;
}
15 years, 6 months
Hibernate SVN: r15647 - search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/reader.
by hibernate-commits@lists.jboss.org
Author: jcosta(a)redhat.com
Date: 2008-12-03 08:24:52 -0500 (Wed, 03 Dec 2008)
New Revision: 15647
Modified:
search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
Log:
HSEARCH-315 - Commited patch from JIRA
Modified: search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java
===================================================================
--- search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 12:26:29 UTC (rev 15646)
+++ search/tags/v3_0_1_GA_CP01/src/test/org/hibernate/search/test/reader/ReaderPerfTestCase.java 2008-12-03 13:24:52 UTC (rev 15647)
@@ -92,7 +92,7 @@
suspect.setSuspectCharge( "thief liar " );
}
else {
- suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system and sees in it the perfect underground highway for his thievery. Washington Post columnist John Kelly recommends this title for middle schoolers, especially to be read aloud.");
+ suspect.setSuspectCharge( " It's 1875 in London. The police have captured career criminal Montmorency. In the process he has been grievously wounded and it is up to a young surgeon to treat his wounds. During his recovery Montmorency learns of the city's new sewer system.");
}
s.persist( suspect );
}
15 years, 6 months
Hibernate SVN: r15646 - in validator/trunk: hibernate-validator/src/main/java/org/hibernate/validation/constraints and 11 other directories.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2008-12-03 07:26:29 -0500 (Wed, 03 Dec 2008)
New Revision: 15646
Added:
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/All.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/DefaultAlias.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/First.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Last.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Second.java
validator/trunk/validation-api/src/main/java/javax/validation/groups/
validator/trunk/validation-api/src/main/java/javax/validation/groups/Default.java
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/ValidatorConstants.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/Length.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/NotEmpty.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/Pattern.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/MetaDataProvider.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/MetaDataProviderImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidationContext.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConstraintDescriptorImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConstraintViolationImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/util/ReflectionHelper.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/constraints/LengthConstraintTest.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/constraints/PatternConstraintTest.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Animal.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Author.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Book.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Dictonary.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/EnglishDictonary.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/engine/ValidatorImplTest.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/impl/ResourceBundleMessageResolverTest.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/util/ReflectionHelperTest.java
validator/trunk/validation-api/src/main/java/javax/validation/ConstraintDescriptor.java
validator/trunk/validation-api/src/main/java/javax/validation/ConstraintViolation.java
validator/trunk/validation-api/src/main/java/javax/validation/GroupSequence.java
validator/trunk/validation-api/src/main/java/javax/validation/Validator.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/AssertFalse.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/AssertTrue.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/Digits.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/Future.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/Max.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/Min.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/NotNull.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/Null.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/Past.java
validator/trunk/validation-api/src/main/java/javax/validation/constraints/Size.java
Log:
BVAL-79 Groups are now type based
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/ValidatorConstants.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/ValidatorConstants.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/ValidatorConstants.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -1,4 +1,4 @@
-// $Id:$
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
@@ -19,6 +19,7 @@
/**
* @author Hardy Ferentschik
+ * TODO remove
*/
public class ValidatorConstants {
@@ -28,5 +29,5 @@
/**
* The default group/sequence name used when no group parameter is passed to validate().
*/
- public static final String DEFAULT_GROUP_NAME = "default";
+ //public static final String DEFAULT_GROUP_NAME = "default";
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/Length.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/Length.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/Length.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -36,11 +36,11 @@
@Target({ METHOD, FIELD, TYPE })
@Retention(RUNTIME)
public @interface Length {
- public abstract int min() default 0;
+ int min() default 0;
- public abstract int max() default Integer.MAX_VALUE;
+ int max() default Integer.MAX_VALUE;
- public abstract String message() default "{validator.length}";
+ String message() default "{validator.length}";
- public abstract String[] groups() default { };
+ Class<?>[] groups() default { };
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/NotEmpty.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/NotEmpty.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/NotEmpty.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -33,7 +33,7 @@
@Target({ METHOD, FIELD })
@Retention(RUNTIME)
public @interface NotEmpty {
- public abstract String message() default "{validator.notEmpty}";
+ String message() default "{validator.notEmpty}";
- public abstract String[] groups() default { };
+ Class<?>[] groups() default { };
}
\ No newline at end of file
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/Pattern.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/Pattern.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/Pattern.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -33,9 +33,9 @@
@Target({ METHOD, FIELD })
@Retention(RUNTIME)
public @interface Pattern {
- public abstract String message() default "{validator.pattern}";
+ String message() default "{validator.pattern}";
- public abstract String[] groups() default { };
+ Class<?>[] groups() default { };
/**
* @return the regular expression the annotated string must match.
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/MetaDataProvider.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/MetaDataProvider.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/MetaDataProvider.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -59,9 +59,9 @@
List<Member> getCascadedMembers();
/**
- * @return A map mapping defined group sequence names to a list of groups.
+ * @return A map mapping defined group sequences to a list of groups.
*/
- Map<String, List<String>> getGroupSequences();
+ Map<Class<?>, List<Class<?>>> getGroupSequences();
/**
* @return A list of <code>ValidatorMetaData</code> instances encapsulating the information of all the constraints
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/MetaDataProviderImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/MetaDataProviderImpl.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/MetaDataProviderImpl.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -95,9 +95,9 @@
private ConstraintFactory constraintFactory = new ConstraintFactoryImpl();
/**
- * Maps group sequence names to the list of group/sequence names.
+ * Maps group sequences to the list of group/sequences.
*/
- private Map<String, List<String>> groupSequences = new HashMap<String, List<String>>();
+ private Map<Class<?>, List<Class<?>>> groupSequences = new HashMap<Class<?>, List<Class<?>>>();
public MetaDataProviderImpl(Class<T> beanClass, ConstraintFactory constraintFactory) {
this.beanClass = beanClass;
@@ -159,24 +159,24 @@
}
}
- for ( Map.Entry<String, List<String>> mapEntry : groupSequences.entrySet() ) {
- List<String> groupNames = mapEntry.getValue();
- List<String> expandedGroupNames = new ArrayList<String>();
- for ( String groupName : groupNames ) {
- expandedGroupNames.addAll( expandGroupSequenceNames( groupName ) );
+ for ( Map.Entry<Class<?>, List<Class<?>>> mapEntry : groupSequences.entrySet() ) {
+ List<Class<?>> groups = mapEntry.getValue();
+ List<Class<?>> expandedGroups = new ArrayList<Class<?>>();
+ for ( Class<?> group : groups ) {
+ expandedGroups.addAll( expandGroupSequences( group ) );
}
- groupSequences.put( mapEntry.getKey(), expandedGroupNames );
+ groupSequences.put( mapEntry.getKey(), expandedGroups );
}
if ( log.isDebugEnabled() && !groupSequences.isEmpty() ) {
log.debug( "Expanded groups sequences: {}", groupSequences );
}
}
- private List<String> expandGroupSequenceNames(String group) {
- List<String> groupList = new ArrayList<String>();
+ private List<Class<?>> expandGroupSequences(Class<?> group) {
+ List<Class<?>> groupList = new ArrayList<Class<?>>();
if ( groupSequences.containsKey( group ) ) {
- for ( String s : groupSequences.get( group ) ) {
- groupList.addAll( expandGroupSequenceNames( s ) );
+ for ( Class<?> localGroup : groupSequences.get( group ) ) {
+ groupList.addAll( expandGroupSequences( localGroup ) );
}
}
else {
@@ -275,8 +275,8 @@
@SuppressWarnings("unchecked")
private <A extends Annotation> ConstraintDescriptorImpl buildConstraintDescriptor(A annotation, Class constraintClass) {
- String[] groups = ReflectionHelper.getAnnotationParameter( annotation, "groups", String[].class );
- for ( String groupName : groups ) {
+ Class<?>[] groups = ReflectionHelper.getAnnotationParameter( annotation, "groups", Class[].class );
+ for ( Class<?> groupName : groups ) {
if ( groupSequences.containsKey( groupName ) ) {
throw new ValidationException( groupName + " is illegally used as group and sequence name." );
}
@@ -414,7 +414,7 @@
return cascadedMembers;
}
- public Map<String, List<String>> getGroupSequences() {
+ public Map<Class<?>, List<Class<?>>> getGroupSequences() {
return groupSequences;
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidationContext.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidationContext.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidationContext.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -47,10 +47,10 @@
private final T rootBean;
/**
- * Maps for each group name to an identity set to keep track of already validated objects. We have to make sure
+ * Maps for each group to an identity set to keep track of already validated objects. We have to make sure
* that each object gets only validated once (per group).
*/
- private final Map<String, IdentitySet> processedObjects;
+ private final Map<Class<?>, IdentitySet> processedObjects;
/**
* A list of all failing constraints so far.
@@ -65,7 +65,7 @@
/**
* The current group which is getting processed.
*/
- private String currentGroup;
+ private Class<?> currentGroup;
/**
* Stack for keep track of the currently validated object.
@@ -80,7 +80,7 @@
public ValidationContext(T rootBean, Object object) {
this.rootBean = rootBean;
validatedobjectStack.push( new ValidatedBean(object) );
- processedObjects = new HashMap<String, IdentitySet>();
+ processedObjects = new HashMap<Class<?>, IdentitySet>();
propertyPath = "";
failingConstraintViolations = new ArrayList<ConstraintViolationImpl<T>>();
}
@@ -105,11 +105,11 @@
return rootBean;
}
- public String getCurrentGroup() {
+ public Class<?> getCurrentGroup() {
return currentGroup;
}
- public void setCurrentGroup(String currentGroup) {
+ public void setCurrentGroup(Class<?> currentGroup) {
this.currentGroup = currentGroup;
}
@@ -182,7 +182,7 @@
return propertyPath;
}
- public boolean needsValidation(Set<String> groups) {
+ public boolean needsValidation(Set<Class<?>> groups) {
return groups.contains( currentGroup );
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -31,10 +31,9 @@
import javax.validation.ConstraintDescriptor;
import javax.validation.ConstraintViolation;
import javax.validation.MessageResolver;
-import javax.validation.PropertyDescriptor;
import javax.validation.Validator;
+import javax.validation.groups.Default;
-import org.hibernate.validation.ValidatorConstants;
import org.hibernate.validation.Version;
import org.hibernate.validation.impl.ConstraintDescriptorImpl;
import org.hibernate.validation.impl.ConstraintViolationImpl;
@@ -77,6 +76,7 @@
private final MessageResolver messageResolver;
private final ValidatorFactoryImplementor factory;
+ private static final Class<?>[] DEFAULT_GROUP = new Class<?>[] { Default.class };
public ValidatorImpl(ValidatorFactoryImplementor factory, MessageResolver messageResolver) {
this.factory = factory;
@@ -87,18 +87,18 @@
/**
* {@inheritDoc}
*/
- public <T> Set<ConstraintViolation<T>> validate(T object, String... groups) {
+ public <T> Set<ConstraintViolation<T>> validate(T object, Class<?>... groups) {
if ( object == null ) {
throw new IllegalArgumentException( "Validation of a null object" );
}
ValidationContext<T> context = new ValidationContext<T>( object );
- List<ConstraintViolationImpl<T>> list = validate( context, Arrays.asList( groups ) );
+ List<ConstraintViolationImpl<T>> list = validateInContext( context, Arrays.asList( groups ) );
return new HashSet<ConstraintViolation<T>>( list );
}
/**
- * Validates the ovject contained in <code>context</code>.
+ * Validates the object contained in <code>context</code>.
*
* @param context A context object containing the object to validate together with other state information needed
* for validation.
@@ -109,23 +109,23 @@
* @todo Currently we iterate the cascaded fields multiple times. Maybe we should change to an approach where we iterate the object graph only once.
* @todo Context root bean can be a different object than the current Validator<T> hence two different generics variables
*/
- private <T> List<ConstraintViolationImpl<T>> validate(ValidationContext<T> context, List<String> groups) {
+ private <T> List<ConstraintViolationImpl<T>> validateInContext(ValidationContext<T> context, List<Class<?>> groups) {
if ( context.peekValidatedObject() == null ) {
return Collections.emptyList();
}
// if no group is specified use the default
if ( groups.size() == 0 ) {
- groups = Arrays.asList( ValidatorConstants.DEFAULT_GROUP_NAME );
+ groups = Arrays.asList( DEFAULT_GROUP );
}
- List<String> expandedGroups;
+ List<Class<?>> expandedGroups;
boolean isGroupSequence;
- for ( String group : groups ) {
- expandedGroups = new ArrayList<String>();
- isGroupSequence = expandGroupName( context.peekValidatedObjectType(), group, expandedGroups );
+ for ( Class<?> group : groups ) {
+ expandedGroups = new ArrayList<Class<?>>();
+ isGroupSequence = expandGroup( context.peekValidatedObjectType(), group, expandedGroups );
- for ( String expandedGroupName : expandedGroups ) {
+ for ( Class<?> expandedGroupName : expandedGroups ) {
context.setCurrentGroup( expandedGroupName );
validateConstraints( context );
@@ -223,6 +223,7 @@
for ( Member member : cascadedMembers ) {
Type type = ReflectionHelper.typeOf( member );
context.pushProperty( ReflectionHelper.getPropertyName( member ) );
+ //FIXME change accessibility only once, that's somewhat costly. do it when Member is created
ReflectionHelper.setAccessibility( member );
Object value = ReflectionHelper.getValue( member, context.peekValidatedObject() );
validateCascadedConstraint( context, type, value );
@@ -253,7 +254,7 @@
context.replacePropertyIndex( propertyIndex );
context.pushValidatedObject( actualValue );
- validate( context, Arrays.asList( context.getCurrentGroup() ) );
+ validateInContext( context, Arrays.asList( new Class<?>[] { context.getCurrentGroup() } ) );
context.popValidatedObject();
i++;
}
@@ -263,14 +264,15 @@
/**
* {@inheritDoc}
*/
- public <T> Set<ConstraintViolation<T>> validateProperty(T object, String propertyName, String... groups) {
+ public <T> Set<ConstraintViolation<T>> validateProperty(T object, String propertyName, Class<?>... groups) {
List<ConstraintViolationImpl<T>> failingConstraintViolations = new ArrayList<ConstraintViolationImpl<T>>();
validateProperty( object, new PropertyIterator( propertyName ), failingConstraintViolations, groups );
return new HashSet<ConstraintViolation<T>>( failingConstraintViolations );
}
- private <T> void validateProperty(T object, PropertyIterator propertyIter, List<ConstraintViolationImpl<T>> failingConstraintViolations, String... groups) {
+ private <T> void validateProperty(T object, PropertyIterator propertyIter, List<ConstraintViolationImpl<T>> failingConstraintViolations, Class<?>... groups) {
+ if ( object == null ) throw new IllegalArgumentException("Validated object cannot be null");
@SuppressWarnings( "unchecked" )
final Class<T> beanType = (Class<T>) object.getClass();
@@ -282,18 +284,18 @@
// if no group is specified use the default
if ( groups.length == 0 ) {
- groups = new String[] { ValidatorConstants.DEFAULT_GROUP_NAME };
+ groups = DEFAULT_GROUP;
}
- List<String> expandedGroups;
+ List<Class<?>> expandedGroups;
boolean isGroupSequence;
- for ( String group : groups ) {
- expandedGroups = new ArrayList<String>();
- isGroupSequence = expandGroupName( beanType, group, expandedGroups );
+ for ( Class<?> group : groups ) {
+ expandedGroups = new ArrayList<Class<?>>();
+ isGroupSequence = expandGroup( beanType, group, expandedGroups );
- for ( String expandedGroupName : expandedGroups ) {
+ for ( Class<?> expandedGroup : expandedGroups ) {
- if ( !wrapper.descriptor.isInGroups( expandedGroupName ) ) {
+ if ( !wrapper.descriptor.isInGroups( expandedGroup ) ) {
continue;
}
@@ -332,7 +334,7 @@
/**
* {@inheritDoc}
*/
- public <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, String propertyName, Object value, String... groups) {
+ public <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, String propertyName, Object value, Class<?>... groups) {
List<ConstraintViolationImpl<T>> failingConstraintViolations = new ArrayList<ConstraintViolationImpl<T>>();
validateValue( beanType, value, new PropertyIterator( propertyName ), failingConstraintViolations, groups );
return new HashSet<ConstraintViolation<T>>( failingConstraintViolations );
@@ -343,7 +345,7 @@
}
- private <T> void validateValue(Class<T> beanType, Object object, PropertyIterator propertyIter, List<ConstraintViolationImpl<T>> failingConstraintViolations, String... groups) {
+ private <T> void validateValue(Class<T> beanType, Object object, PropertyIterator propertyIter, List<ConstraintViolationImpl<T>> failingConstraintViolations, Class<?>... groups) {
ConstraintDescriptorImpl constraintDescriptor = getConstraintDescriptorForPath( beanType, propertyIter );
if ( constraintDescriptor == null ) {
@@ -352,18 +354,18 @@
// if no group is specified use the default
if ( groups.length == 0 ) {
- groups = new String[] { ValidatorConstants.DEFAULT_GROUP_NAME };
+ groups = DEFAULT_GROUP;
}
- List<String> expandedGroups;
+ List<Class<?>> expandedGroups;
boolean isGroupSequence;
- for ( String group : groups ) {
- expandedGroups = new ArrayList<String>();
- isGroupSequence = expandGroupName( beanType, group, expandedGroups );
+ for ( Class<?> group : groups ) {
+ expandedGroups = new ArrayList<Class<?>>();
+ isGroupSequence = expandGroup( beanType, group, expandedGroups );
- for ( String expandedGroupName : expandedGroups ) {
+ for ( Class<?> expandedGroup : expandedGroups ) {
- if ( !constraintDescriptor.isInGroups( expandedGroupName ) ) {
+ if ( !constraintDescriptor.isInGroups( expandedGroup ) ) {
continue;
}
@@ -384,7 +386,7 @@
null,
object,
propertyIter.getOriginalProperty(), //FIXME use error.getProperty()
- "",
+ null, //FIXME why is this a null group!! Used to be "" string should it be Default. Looks weird
constraintDescriptor
);
addFailingConstraint( failingConstraintViolations, failingConstraintViolation );
@@ -505,25 +507,25 @@
* Checks whether the provided group name is a group sequence and if so expands the group name and add the expanded
* groups names to <code>expandedGroupName </code>
*
- * @param groupName The group name to expand
- * @param expandedGroupNames The exanded group names or just a list with the single provided group name id the name
+ * @param group The group to expand
+ * @param expandedGroups The exanded group names or just a list with the single provided group name id the name
* was not expandable
*
* @return <code>true</code> if an expansion took place, <code>false</code> otherwise.
*/
- private <T> boolean expandGroupName(Class<T> beanType, String groupName, List<String> expandedGroupNames) {
- if ( expandedGroupNames == null ) {
+ private <T> boolean expandGroup(Class<T> beanType, Class<?> group, List<Class<?>> expandedGroups) {
+ if ( expandedGroups == null ) {
throw new IllegalArgumentException( "List cannot be empty" );
}
boolean isGroupSequence;
MetaDataProviderImpl<T> metaDataProvider = factory.getMetadataProvider( beanType );
- if ( metaDataProvider.getGroupSequences().containsKey( groupName ) ) {
- expandedGroupNames.addAll( metaDataProvider.getGroupSequences().get( groupName ) );
+ if ( metaDataProvider.getGroupSequences().containsKey( group ) ) {
+ expandedGroups.addAll( metaDataProvider.getGroupSequences().get( group ) );
isGroupSequence = true;
}
else {
- expandedGroupNames.add( groupName );
+ expandedGroups.add( group );
isGroupSequence = false;
}
return isGroupSequence;
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConstraintDescriptorImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConstraintDescriptorImpl.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConstraintDescriptorImpl.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -30,6 +30,7 @@
import javax.validation.ConstraintDescriptor;
import javax.validation.ReportAsViolationFromCompositeConstraint;
import javax.validation.ValidationException;
+import javax.validation.groups.Default;
/**
* Describe a single constraint.
@@ -41,16 +42,17 @@
private final Annotation annotation;
private final Constraint constraintImplementation;
private final Class<? extends Constraint> constraintClass;
- private final Set<String> groups;
+ private final Set<Class<?>> groups;
private final Map<String, Object> parameters;
private final boolean isReportAsSingleInvalidConstraint;
+ private static final Class<?>[] DEFAULT_GROUP = new Class<?>[] { Default.class };
- public ConstraintDescriptorImpl(Annotation annotation, String[] groups, Constraint validator, Class<? extends Constraint> constraintClass) {
+ public ConstraintDescriptorImpl(Annotation annotation, Class<?>[] groups, Constraint validator, Class<? extends Constraint> constraintClass) {
this.annotation = annotation;
if ( groups.length == 0 ) {
- groups = new String[] { "default" };
+ groups = DEFAULT_GROUP;
}
- this.groups = new HashSet<String>();
+ this.groups = new HashSet<Class<?>>();
this.groups.addAll( Arrays.asList( groups ) );
this.constraintImplementation = validator;
this.parameters = getAnnotationParameters( annotation );
@@ -71,7 +73,7 @@
/**
* {@inheritDoc}
*/
- public Set<String> getGroups() {
+ public Set<Class<?>> getGroups() {
return groups;
}
@@ -82,7 +84,7 @@
return constraintClass;
}
- public boolean isInGroups(String group) {
+ public boolean isInGroups(Class<?> group) {
return groups.contains( group );
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConstraintViolationImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConstraintViolationImpl.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConstraintViolationImpl.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -32,7 +32,7 @@
private Class<T> beanClass;
private Object value;
private String propertyPath;
- private HashSet<String> groups;
+ private Set<Class<?>> groups;
private Object leafBeanInstance;
private final ConstraintDescriptor constraintDescriptor;
private String rawMessage;
@@ -40,14 +40,14 @@
public ConstraintViolationImpl(String rawMessage, String interpolatedMessage, T rootBean, Class<T> beanClass,
Object leafBeanInstance, Object value,
- String propertyPath, String group, ConstraintDescriptor constraintDescriptor) {
+ String propertyPath, Class<?> group, ConstraintDescriptor constraintDescriptor) {
this.rawMessage = rawMessage;
this.interpolatedMessage = interpolatedMessage;
this.rootBean = rootBean;
this.beanClass = beanClass;
this.value = value;
this.propertyPath = propertyPath;
- groups = new HashSet<String>();
+ groups = new HashSet<Class<?>>();
groups.add( group );
this.leafBeanInstance = leafBeanInstance;
this.constraintDescriptor = constraintDescriptor;
@@ -92,7 +92,7 @@
/**
* {@inheritDoc}
*/
- public Set<String> getGroups() {
+ public Set<Class<?>> getGroups() {
return groups;
}
@@ -100,7 +100,7 @@
return this.constraintDescriptor;
}
- public void addGroups(Set<String> groupSet) {
+ public void addGroups(Set<Class<?>> groupSet) {
groups.addAll( groupSet );
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/util/ReflectionHelper.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/util/ReflectionHelper.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/util/ReflectionHelper.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -121,7 +121,7 @@
}
try {
- getAnnotationParameter( annotation, "groups", String[].class );
+ getAnnotationParameter( annotation, "groups", Class[].class );
}
catch ( Exception e ) {
String msg = annotation.annotationType().getName() + " contains ConstraintValidator annotation, but does " +
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/constraints/LengthConstraintTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/constraints/LengthConstraintTest.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/constraints/LengthConstraintTest.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -46,8 +46,8 @@
return "{validator.length}";
}
- public String[] groups() {
- return new String[0];
+ public Class<?>[] groups() {
+ return new Class<?>[0];
}
public Class<? extends Annotation> annotationType() {
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/constraints/PatternConstraintTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/constraints/PatternConstraintTest.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/constraints/PatternConstraintTest.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -38,8 +38,8 @@
return "{validator.pattern}";
}
- public String[] groups() {
- return new String[0];
+ public Class<?>[] groups() {
+ return new Class<?>[0];
}
public String regex() {
Added: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/All.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/All.java (rev 0)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/All.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -0,0 +1,8 @@
+package org.hibernate.validation.eg;
+
+/**
+ * Groups including all validations
+ * @author Emmanuel Bernard
+ */
+public interface All {
+}
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Animal.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Animal.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Animal.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -29,10 +29,10 @@
PROKARYOTA, EUKARYOTA
}
- @NotEmpty(groups = { "first", "second" })
+ @NotEmpty(groups = { First.class, Second.class })
private String name;
- @NotNull(groups = "first")
+ @NotNull(groups = First.class)
private Domain domain;
public String getName() {
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Author.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Author.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Author.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -27,14 +27,14 @@
*/
public class Author {
- @NotEmpty(groups = "last")
+ @NotEmpty(groups = Last.class)
private String firstName;
- @NotNull(groups = "first")
- @NotEmpty(groups = "first")
+ @NotNull(groups = First.class)
+ @NotEmpty(groups = First.class)
private String lastName;
- @Length(max = 20, groups = "last")
+ @Length(max = 20, groups = Last.class)
private String company;
public String getFirstName() {
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Book.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Book.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Book.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -19,6 +19,7 @@
import javax.validation.GroupSequence;
import javax.validation.Valid;
+import javax.validation.groups.Default;
import javax.validation.constraints.NotNull;
import org.hibernate.validation.constraints.Length;
@@ -27,17 +28,17 @@
/**
* @author Hardy Ferentschik
*/
-@GroupSequence(name = "default", sequence = { "first", "second", "last" })
+@GroupSequence(name = Default.class, sequence = { First.class, Second.class, Last.class })
public class Book {
- @NotNull(groups = "first")
- @NotEmpty(groups = "first")
+ @NotNull(groups = First.class)
+ @NotEmpty(groups = First.class)
private String title;
- @Length(max = 30, groups = "second")
+ @Length(max = 30, groups = Second.class)
private String subtitle;
@Valid
- @NotNull(groups = "first")
+ @NotNull(groups = First.class)
private Author author;
public String getTitle() {
Added: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/DefaultAlias.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/DefaultAlias.java (rev 0)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/DefaultAlias.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -0,0 +1,7 @@
+package org.hibernate.validation.eg;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public interface DefaultAlias {
+}
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Dictonary.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Dictonary.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Dictonary.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -19,6 +19,7 @@
import javax.validation.GroupSequence;
import javax.validation.GroupSequences;
+import javax.validation.groups.Default;
import javax.validation.constraints.NotNull;
import org.hibernate.validation.constraints.NotEmpty;
@@ -27,16 +28,16 @@
* @author Hardy Ferentschik
*/
@GroupSequences({
- @GroupSequence(name = "default-alias", sequence = { "default" }),
- @GroupSequence(name = "all", sequence = { "default", "translate" })
+ @GroupSequence(name = DefaultAlias.class, sequence = { Default.class }),
+ @GroupSequence(name = All.class, sequence = { Default.class, Dictonary.Translate.class })
})
public class Dictonary extends Book {
- @NotNull(groups = "translate")
- @NotEmpty(groups = "translate")
+ @NotNull(groups = Translate.class)
+ @NotEmpty(groups = Translate.class)
private String translatesTo;
- @NotNull(groups = "translate")
- @NotEmpty(groups = "translate")
+ @NotNull(groups = Translate.class)
+ @NotEmpty(groups = Translate.class)
private String translatesFrom;
public String getTranslatesTo() {
@@ -54,4 +55,10 @@
public void setTranslatesFrom(String translatesFrom) {
this.translatesFrom = translatesFrom;
}
+
+ /**
+ * Translator related constraints
+ */
+ public interface Translate {
+ }
}
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/EnglishDictonary.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/EnglishDictonary.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/EnglishDictonary.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -19,12 +19,13 @@
import javax.validation.GroupSequence;
import javax.validation.GroupSequences;
+import javax.validation.groups.Default;
/**
* @author Hardy Ferentschik
*/
@GroupSequences({
- @GroupSequence(name = "default", sequence = { "first" }) // illegal - default is already defined in Book
+ @GroupSequence(name = Default.class, sequence = { First.class }) // illegal - default is already defined in Book
})
public class EnglishDictonary extends Dictonary {
}
\ No newline at end of file
Added: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/First.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/First.java (rev 0)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/First.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -0,0 +1,9 @@
+package org.hibernate.validation.eg;
+
+/**
+ * Group executed first in the validation
+ *
+ * @author Emmanuel Bernard
+ */
+public interface First {
+}
Added: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Last.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Last.java (rev 0)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Last.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -0,0 +1,9 @@
+package org.hibernate.validation.eg;
+
+/**
+ * Group executed Last in the validation
+ *
+ * @author Emmanuel Bernard
+ */
+public interface Last {
+}
Added: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Second.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Second.java (rev 0)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/eg/Second.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -0,0 +1,9 @@
+package org.hibernate.validation.eg;
+
+/**
+ * Group executed second during the validation
+ *
+ * @author Emmanuel Bernard
+ */
+public interface Second {
+}
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/engine/ValidatorImplTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/engine/ValidatorImplTest.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/engine/ValidatorImplTest.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -23,6 +23,7 @@
import javax.validation.ValidationException;
import javax.validation.Validator;
import javax.validation.Validation;
+import javax.validation.groups.Default;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -41,6 +42,10 @@
import org.hibernate.validation.eg.EnglishDictonary;
import org.hibernate.validation.eg.Order;
import org.hibernate.validation.eg.Unconstraint;
+import org.hibernate.validation.eg.First;
+import org.hibernate.validation.eg.Second;
+import org.hibernate.validation.eg.Last;
+import org.hibernate.validation.eg.DefaultAlias;
import org.hibernate.validation.HibernateValidatorFactoryBuilder;
/**
@@ -109,7 +114,7 @@
@Test(expected = IllegalArgumentException.class)
public void testValidateWithNullProperty() {
Validator validator = getHibernateValidator();
- validator.validate( null, "firstName" );
+ validator.validateProperty( null, "firstName" );
}
@Test
@@ -123,17 +128,16 @@
book.setTitle( "" );
book.setAuthor( author );
- Set<ConstraintViolation<Book>> constraintViolations = validator.validate( book, "first", "second", "last" );
+ Set<ConstraintViolation<Book>> constraintViolations = validator.validate( book, First.class, Second.class, Last.class );
assertEquals( "Wrong number of constraints", 3, constraintViolations.size() );
author.setFirstName( "Gavin" );
author.setLastName( "King" );
- constraintViolations = validator.validate( book, "first", "second", "last" );
+ constraintViolations = validator.validate( book, First.class, Second.class, Last.class );
ConstraintViolation constraintViolation = constraintViolations.iterator().next();
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
assertEquals( "Wrong message", "may not be empty", constraintViolation.getInterpolatedMessage() );
- assertEquals( "Wrong bean class", Book.class, constraintViolation.getBeanClass() );
assertEquals( "Wrong root entity", book, constraintViolation.getRootBean() );
assertEquals( "Wrong value", book.getTitle(), constraintViolation.getInvalidValue() );
assertEquals( "Wrong propertyName", "title", constraintViolation.getPropertyPath() );
@@ -141,11 +145,10 @@
book.setTitle( "Hibernate Persistence with JPA" );
book.setSubtitle( "Revised Edition of Hibernate in Action" );
- constraintViolations = validator.validate( book, "first", "second", "last" );
+ constraintViolations = validator.validate( book, First.class, Second.class, Last.class );
constraintViolation = constraintViolations.iterator().next();
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
assertEquals( "Wrong message", "length must be between 0 and 30", constraintViolation.getInterpolatedMessage() );
- assertEquals( "Wrong bean class", Book.class, constraintViolation.getBeanClass() );
assertEquals( "Wrong root entity", book, constraintViolation.getRootBean() );
assertEquals( "Wrong value", book.getSubtitle(), constraintViolation.getInvalidValue() );
assertEquals( "Wrong propertyName", "subtitle", constraintViolation.getPropertyPath() );
@@ -153,18 +156,17 @@
book.setSubtitle( "Revised Edition" );
author.setCompany( "JBoss a divison of RedHat" );
- constraintViolations = validator.validate( book, "first", "second", "last" );
+ constraintViolations = validator.validate( book, First.class, Second.class, Last.class );
constraintViolation = constraintViolations.iterator().next();
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
assertEquals( "Wrong message", "length must be between 0 and 20", constraintViolation.getInterpolatedMessage() );
- assertEquals( "Wrong bean class", Author.class, constraintViolation.getBeanClass() );
assertEquals( "Wrong root entity", book, constraintViolation.getRootBean() );
assertEquals( "Wrong value", author.getCompany(), constraintViolation.getInvalidValue() );
assertEquals( "Wrong propertyName", "author.company", constraintViolation.getPropertyPath() );
author.setCompany( "JBoss" );
- constraintViolations = validator.validate( book, "first", "second", "last" );
+ constraintViolations = validator.validate( book, First.class, Second.class, Last.class );
assertEquals( "Wrong number of constraints", 0, constraintViolations.size() );
}
@@ -178,17 +180,16 @@
Book book = new Book();
book.setAuthor( author );
- Set<ConstraintViolation<Book>> constraintViolations = validator.validate( book, "default" );
+ Set<ConstraintViolation<Book>> constraintViolations = validator.validate( book, Default.class );
assertEquals( "Wrong number of constraints", 2, constraintViolations.size() );
author.setFirstName( "Gavin" );
author.setLastName( "King" );
- constraintViolations = validator.validate( book, "default" );
+ constraintViolations = validator.validate( book, Default.class );
ConstraintViolation constraintViolation = constraintViolations.iterator().next();
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
assertEquals( "Wrong message", "may not be null", constraintViolation.getInterpolatedMessage() );
- assertEquals( "Wrong bean class", Book.class, constraintViolation.getBeanClass() );
assertEquals( "Wrong root entity", book, constraintViolation.getRootBean() );
assertEquals( "Wrong value", book.getTitle(), constraintViolation.getInvalidValue() );
assertEquals( "Wrong propertyName", "title", constraintViolation.getPropertyPath() );
@@ -196,18 +197,18 @@
book.setTitle( "Hibernate Persistence with JPA" );
book.setSubtitle( "Revised Edition of Hibernate in Action" );
- constraintViolations = validator.validate( book, "default" );
+ constraintViolations = validator.validate( book, Default.class );
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
book.setSubtitle( "Revised Edition" );
author.setCompany( "JBoss a divison of RedHat" );
- constraintViolations = validator.validate( book, "default" );
+ constraintViolations = validator.validate( book, Default.class );
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
author.setCompany( "JBoss" );
- constraintViolations = validator.validate( book, "default" );
+ constraintViolations = validator.validate( book, Default.class );
assertEquals( "Wrong number of constraints", 0, constraintViolations.size() );
}
@@ -239,7 +240,7 @@
author.setCompany( "Langenscheidt Publ." );
dictonary.setAuthor( author );
- Set<ConstraintViolation<Dictonary>> constraintViolations = validator.validate( dictonary, "default-alias" );
+ Set<ConstraintViolation<Dictonary>> constraintViolations = validator.validate( dictonary, DefaultAlias.class );
assertEquals( "Wrong number of constraints", 0, constraintViolations.size() );
}
@@ -250,7 +251,7 @@
elepfant.setName( "" );
elepfant.setDomain( Animal.Domain.EUKARYOTA );
- Set<ConstraintViolation<Animal>> constraintViolations = validator.validate( elepfant, "first", "second" );
+ Set<ConstraintViolation<Animal>> constraintViolations = validator.validate( elepfant, First.class, Second.class );
assertEquals(
"The should be two invalid constraints since the same propertyName gets validated in both groups",
1,
@@ -258,9 +259,9 @@
);
ConstraintViolation constraintViolation = constraintViolations.iterator().next();
- Set<String> expected = new HashSet<String>();
- expected.add( "first" );
- expected.add( "second" );
+ Set<Class<?>> expected = new HashSet<Class<?>>();
+ expected.add( First.class );
+ expected.add( Second.class );
assertEquals(
"The constraint should be invalid for both groups",
expected,
@@ -330,7 +331,6 @@
ConstraintViolation constraintViolation = constraintViolations.iterator().next();
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
assertEquals( "Wrong message", "may not be null", constraintViolation.getInterpolatedMessage() );
- assertEquals( "Wrong bean class", Order.class, constraintViolation.getBeanClass() );
assertEquals( "Wrong root entity", customer, constraintViolation.getRootBean() );
assertEquals( "Wrong value", order1.getOrderNumber(), constraintViolation.getInvalidValue() );
assertEquals( "Wrong propertyName", "orderList[0].orderNumber", constraintViolation.getPropertyPath() );
@@ -382,7 +382,6 @@
ConstraintViolation constraintViolation = constraintViolations.iterator().next();
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
assertEquals( "Wrong message", "may not be empty", constraintViolation.getInterpolatedMessage() );
- assertEquals( "Wrong bean class", Actor.class, constraintViolation.getBeanClass() );
assertEquals( "Wrong root entity", clint, constraintViolation.getRootBean() );
assertEquals( "Wrong value", morgan.getLastName(), constraintViolation.getInvalidValue() );
assertEquals( "Wrong propertyName", "playedWith[0].playedWith[1].lastName", constraintViolation.getPropertyPath() );
@@ -402,7 +401,6 @@
ConstraintViolation constraintViolation = constraintViolations.iterator().next();
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
assertEquals( "Wrong message", "may not be null", constraintViolation.getInterpolatedMessage() );
- assertEquals( "Wrong bean class", null, constraintViolation.getBeanClass() );
assertEquals( "Wrong root entity", null, constraintViolation.getRootBean() );
assertEquals( "Wrong value", order.getOrderNumber(), constraintViolation.getInvalidValue() );
assertEquals( "Wrong propertyName", "orderList[0].orderNumber", constraintViolation.getPropertyPath() );
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/impl/ResourceBundleMessageResolverTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/impl/ResourceBundleMessageResolverTest.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/impl/ResourceBundleMessageResolverTest.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -52,8 +52,8 @@
return "{validator.notNull}";
}
- public String[] groups() {
- return new String[] { };
+ public Class<?>[] groups() {
+ return new Class<?>[] { };
}
public Class<? extends Annotation> annotationType() {
@@ -74,8 +74,8 @@
return "{validator.length}";
}
- public String[] groups() {
- return new String[] { };
+ public Class<?>[] groups() {
+ return new Class<?>[] { };
}
public Class<? extends Annotation> annotationType() {
@@ -87,7 +87,7 @@
@Test
public void testSuccessfulInterpolation() {
ConstraintDescriptorImpl desciptor = new ConstraintDescriptorImpl(
- notNull, new String[] { }, new NotNullConstraint(), NotNullConstraint.class
+ notNull, new Class<?>[] { }, new NotNullConstraint(), NotNullConstraint.class
);
String expected = "replacement worked";
@@ -110,7 +110,7 @@
@Test
public void testUnSuccessfulInterpolation() {
ConstraintDescriptorImpl desciptor = new ConstraintDescriptorImpl(
- notNull, new String[] { }, new NotNullConstraint(), NotNullConstraint.class
+ notNull, new Class<?>[] { }, new NotNullConstraint(), NotNullConstraint.class
);
String expected = "foo"; // missing {}
String actual = resolver.interpolate( "foo", desciptor, null );
@@ -124,7 +124,7 @@
@Test
public void testUnkownTokenInterpolation() {
ConstraintDescriptorImpl desciptor = new ConstraintDescriptorImpl(
- notNull, new String[] { }, new NotNullConstraint(), NotNullConstraint.class
+ notNull, new Class<?>[] { }, new NotNullConstraint(), NotNullConstraint.class
);
String expected = "{bar}"; // unkown token {}
String actual = resolver.interpolate( "{bar}", desciptor, null );
@@ -134,13 +134,13 @@
@Test
public void testDefaultInterpolation() {
ConstraintDescriptorImpl desciptor = new ConstraintDescriptorImpl(
- notNull, new String[] { }, new NotNullConstraint(), NotNullConstraint.class
+ notNull, new Class<?>[] { }, new NotNullConstraint(), NotNullConstraint.class
);
String expected = "may not be null";
String actual = resolver.interpolate( notNull.message(), desciptor, null );
assertEquals( "Wrong substitution", expected, actual );
- desciptor = new ConstraintDescriptorImpl( length, new String[] { }, new NotNullConstraint(), NotNullConstraint.class );
+ desciptor = new ConstraintDescriptorImpl( length, new Class<?>[] { }, new NotNullConstraint(), NotNullConstraint.class );
expected = "length must be between 0 and 2147483647"; // unkown token {}
actual = resolver.interpolate( length.message(), desciptor, null );
assertEquals( "Wrong substitution", expected, actual );
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/util/ReflectionHelperTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/util/ReflectionHelperTest.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/util/ReflectionHelperTest.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -24,6 +24,7 @@
import java.util.List;
import java.util.Map;
import javax.validation.ValidationException;
+import javax.validation.groups.Default;
import javax.validation.constraints.NotNull;
import static org.junit.Assert.assertEquals;
@@ -94,8 +95,8 @@
return "test";
}
- public String[] groups() {
- return new String[] { "default" };
+ public Class<?>[] groups() {
+ return new Class<?>[] { Default.class };
}
public Class<? extends Annotation> annotationType() {
@@ -105,8 +106,8 @@
String message = ReflectionHelper.getAnnotationParameter( testAnnotation, "message", String.class );
assertEquals( "Wrong message", "test", message );
- String[] group = ReflectionHelper.getAnnotationParameter( testAnnotation, "groups", String[].class );
- assertEquals( "Wrong message", "default", group[0] );
+ Class<?>[] group = ReflectionHelper.getAnnotationParameter( testAnnotation, "groups", Class[].class );
+ assertEquals( "Wrong message", Default.class, group[0] );
try {
ReflectionHelper.getAnnotationParameter( testAnnotation, "message", Integer.class );
Modified: validator/trunk/validation-api/src/main/java/javax/validation/ConstraintDescriptor.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/ConstraintDescriptor.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/ConstraintDescriptor.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -40,7 +40,7 @@
/**
* @return The groups the constraint is applied on.
*/
- Set<String> getGroups();
+ Set<Class<?>> getGroups();
/**
* @return the constraint implementation class
Modified: validator/trunk/validation-api/src/main/java/javax/validation/ConstraintViolation.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/ConstraintViolation.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/ConstraintViolation.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -70,7 +70,7 @@
*
* TODO: considering removal, if you think it's important, speak up
*/
- Set<String> getGroups();
+ Set<Class<?>> getGroups();
/**
* Constraint metadata reported to fail.
Modified: validator/trunk/validation-api/src/main/java/javax/validation/GroupSequence.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/GroupSequence.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/GroupSequence.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -23,12 +23,17 @@
import java.lang.annotation.Target;
/**
+ * Define a group sequence
+ * Should be hosted by an
+ *
+ * @author Emmanuel Bernard
* @author Hardy Ferentschik
*/
@Target({ TYPE })
@Retention(RUNTIME)
public @interface GroupSequence {
- String name();
+ //TODO depreciate
+ Class<?> name();
- String[] sequence();
+ Class<?>[] sequence();
}
Modified: validator/trunk/validation-api/src/main/java/javax/validation/Validator.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/Validator.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/Validator.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -33,28 +33,28 @@
* validate all constraints on object
*
* @param object object to validate
- * @param groups group name(s) (including group sequence names) targeted
- * for validation (default to <code>default</code>)
+ * @param groups groups targeted for validation
+ * (default to {@link javax.validation.groups.Default})
*
* @return constraint violations or an empty Set if none
*
* @throws IllegalArgumentException e if object is null
*/
- <T> Set<ConstraintViolation<T>> validate(T object, String... groups);
+ <T> Set<ConstraintViolation<T>> validate(T object, Class<?>... groups);
/**
* validate all constraints on <code>propertyName</code> property of object
*
* @param object object to validate
* @param propertyName property to validate (ie field and getter constraints)
- * @param groups group name(s) (including group sequence names) targeted
- * for validation (default to <code>default</code>)
+ * @param groups groups targeted for validation
+ * (default to {@link javax.validation.groups.Default})
*
* @return constraint violations or an empty Set if none
*
* @throws IllegalArgumentException e if object is null or if propertyName is not present
*/
- <T> Set<ConstraintViolation<T>> validateProperty(T object, String propertyName, String... groups);
+ <T> Set<ConstraintViolation<T>> validateProperty(T object, String propertyName, Class<?>... groups);
/**
* validate all constraints on <code>propertyName</code> property
@@ -64,13 +64,14 @@
*
* @param propertyName property to validate
* @param value property value to validate
- * @param groups group name(s) (including group sequence names) targeted
- * for validation (default to <code>default</code>)
+ * @param groups groups targeted for validation
+ * (default to {@link javax.validation.groups.Default})
*
* @return constraint violations or an empty Set if none
* @throws IllegalArgumentException e if propertyName is not present
*/
- <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, String propertyName, Object value, String... groups);
+ <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, String propertyName,
+ Object value, Class<?>... groups);
/**
* Return the descriptor object describing bean constraints
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/AssertFalse.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/AssertFalse.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/AssertFalse.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -39,5 +39,5 @@
public @interface AssertFalse {
String message() default "{validator.assertFalse}";
- String[] groups() default { };
+ Class<?>[] groups() default { };
}
\ No newline at end of file
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/AssertTrue.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/AssertTrue.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/AssertTrue.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -39,5 +39,5 @@
public @interface AssertTrue {
String message() default "{validator.assertTrue}";
- String[] groups() default { };
+ Class<?>[] groups() default { };
}
\ No newline at end of file
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/Digits.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/Digits.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/Digits.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -49,7 +49,7 @@
public @interface Digits {
String message() default "{validator.digits}";
- String[] groups() default { };
+ Class<?>[] groups() default { };
/**
* @return maximum number of integral digits accepted for this number
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/Future.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/Future.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/Future.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -50,5 +50,5 @@
public @interface Future {
String message() default "{validator.future}";
- String[] groups() default { };
+ Class<?>[] groups() default { };
}
\ No newline at end of file
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/Max.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/Max.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/Max.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -51,7 +51,7 @@
public @interface Max {
String message() default "{validator.max}";
- String[] groups() default { };
+ Class<?>[] groups() default { };
/**
* @return Value the element must be lower or equal to
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/Min.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/Min.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/Min.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -51,7 +51,7 @@
public @interface Min {
String message() default "{validator.min}";
- String[] groups() default { };
+ Class<?>[] groups() default { };
/**
* @return Value the element must be higher or equal to
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/NotNull.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/NotNull.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/NotNull.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -37,5 +37,5 @@
public @interface NotNull {
String message() default "{validator.notNull}";
- String[] groups() default { };
+ Class<?>[] groups() default { };
}
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/Null.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/Null.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/Null.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -37,6 +37,6 @@
public @interface Null {
String message() default "{validator.null}";
- String[] groups() default { };
+ Class<?>[] groups() default { };
}
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/Past.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/Past.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/Past.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -50,5 +50,5 @@
public @interface Past {
String message() default "{validator.past}";
- String[] groups() default { };
+ Class<?>[] groups() default { };
}
\ No newline at end of file
Modified: validator/trunk/validation-api/src/main/java/javax/validation/constraints/Size.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/constraints/Size.java 2008-12-03 11:22:31 UTC (rev 15645)
+++ validator/trunk/validation-api/src/main/java/javax/validation/constraints/Size.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -43,7 +43,7 @@
@Documented
public @interface Size {
String message() default "{validator.min}";
- String[] groups() default {};
+ Class<?>[] groups() default {};
/**
* @return size the element must be higher or equal to
Added: validator/trunk/validation-api/src/main/java/javax/validation/groups/Default.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/groups/Default.java (rev 0)
+++ validator/trunk/validation-api/src/main/java/javax/validation/groups/Default.java 2008-12-03 12:26:29 UTC (rev 15646)
@@ -0,0 +1,10 @@
+package javax.validation.groups;
+
+/**
+ * Default Bean Validation group
+ *
+ * @author Emmanuel Bernard
+ * TODO should it be named DefaultGroup?
+ */
+public interface Default {
+}
15 years, 6 months
Hibernate SVN: r15645 - search/trunk/doc/reference/en/modules.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2008-12-03 06:22:31 -0500 (Wed, 03 Dec 2008)
New Revision: 15645
Modified:
search/trunk/doc/reference/en/modules/configuration.xml
Log:
HSEARCH-303
Modified: search/trunk/doc/reference/en/modules/configuration.xml
===================================================================
--- search/trunk/doc/reference/en/modules/configuration.xml 2008-12-03 09:54:33 UTC (rev 15644)
+++ search/trunk/doc/reference/en/modules/configuration.xml 2008-12-03 11:22:31 UTC (rev 15645)
@@ -33,14 +33,17 @@
<title>Directory configuration</title>
<para>Apache Lucene has a notion of <literal>Directory</literal> to store
- the index files. The Directory implementation can be customized, but
- Lucene comes bundled with a file system
- (<literal>FSDirectoryProvider</literal>) and a in memory
- (<literal>RAMDirectoryProvider</literal>) implementation. Hibernate Search
- has the notion of <literal>DirectoryProvider</literal> that handles the
- configuration and the initialization of the Lucene Directory.</para>
+ the index files. The <classname>Directory</classname> implementation can
+ be customized, but Lucene comes bundled with a file system
+ (<literal>FSDirectoryProvider</literal>) and an in memory
+ (<literal>RAMDirectoryProvider</literal>) implementation.
+ <literal>DirectoryProvider</literal>s are the Hibernate Search abstraction
+ around a Lucene <classname>Directory</classname> and handle the
+ configuration and the initialization of the underlying Lucene resources.
+ <xref linkend="directory-provider-table" /> shows the list of the
+ directory providers bundled with Hibernate Search.</para>
- <table>
+ <table id="directory-provider-table">
<title>List of built-in Directory Providers</title>
<tgroup cols="3">
@@ -59,8 +62,7 @@
<entry>org.hibernate.search.store.FSDirectoryProvider</entry>
<entry>File system based directory. The directory used will be
- <indexBase>/< <literal>@Indexed.index</literal>
- ></entry>
+ <indexBase>/< indexName ></entry>
<entry><para><literal>indexBase</literal> : Base
directory</para><para><literal>indexName</literal>: override
@@ -142,7 +144,7 @@
</tgroup>
</table>
- <para>If the built-in directory providers does not fit your needs, you can
+ <para>If the built-in directory providers do not fit your needs, you can
write your own directory provider by implementing the
<classname>org.hibernate.store.DirectoryProvider</classname>
interface.</para>
@@ -158,17 +160,26 @@
<constant>hibernate.search.<replaceable>indexname</replaceable>.directory_provider
</constant></para>
- <programlisting>hibernate.search.default.directory_provider org.hibernate.search.store.FSDirectoryProvider
+ <example>
+ <title>Configuring directory providers</title>
+
+ <programlisting>hibernate.search.default.directory_provider org.hibernate.search.store.FSDirectoryProvider
hibernate.search.default.indexBase=/usr/lucene/indexes
hibernate.search.Rules.directory_provider org.hibernate.search.store.RAMDirectoryProvider</programlisting>
+ </example>
<para>applied on</para>
- <programlisting>@Indexed(index="Status")
+ <example>
+ <title>Specifying the index name using the <literal>index</literal>
+ parameter of <classname>@Indexed</classname></title>
+
+ <programlisting>@Indexed(index="Status")
public class Status { ... }
@Indexed(index="Rules")
public class Rule { ... }</programlisting>
+ </example>
<para>will create a file system directory in
<filename>/usr/lucene/indexes/Status</filename> where the Status entities
@@ -176,7 +187,7 @@
<literal>Rules</literal> where Rule entities will be indexed.</para>
<para>You can easily define common rules like the directory provider and
- base directory, and override those default later on on a per index
+ base directory, and override those defaults later on on a per index
basis.</para>
<para>Writing your own <classname>DirectoryProvider</classname>, you can
@@ -189,10 +200,10 @@
<para>In some extreme cases involving huge indexes (in size), it is
necessary to split (shard) the indexing data of a given entity type into
several Lucene indexes. This solution is not recommended until you reach
- significant index sizes and index update time are slowing down. The main
- drawback of index sharding is that searches will end up being slower since
- more files have to be opened for a single search. In other words don't do
- it until you have problems :)</para>
+ significant index sizes and index update times are slowing the application
+ down. The main drawback of index sharding is that searches will end up
+ being slower since more files have to be opened for a single search. In
+ other words don't do it until you have problems :)</para>
<para>Despite this strong warning, Hibernate Search allows you to index a
given entity type into several sub indexes. Data is sharded into the
@@ -201,8 +212,13 @@
strategy is enabled, unless the number of shards is configured. To
configure the number of shards use the following property</para>
- <programlisting>hibernate.search.<indexName>.sharding_strategy.nbr_of_shards 5</programlisting>
+ <example>
+ <title>Enabling index sharding by specifying nbr_of_shards for a
+ specific index</title>
+ <programlisting>hibernate.search.<indexName>.sharding_strategy.nbr_of_shards 5</programlisting>
+ </example>
+
<para>This will use 5 different shards.</para>
<para>The default sharding strategy, when shards are set up, splits the
@@ -212,8 +228,12 @@
<literal>IndexShardingStrategy</literal> and by setting the following
property</para>
- <programlisting>hibernate.search.<indexName>.sharding_strategy my.shardingstrategy.Implementation</programlisting>
+ <example>
+ <title>Specifying a custom sharding strategy</title>
+ <programlisting>hibernate.search.<indexName>.sharding_strategy my.shardingstrategy.Implementation</programlisting>
+ </example>
+
<para>Each shard has an independent directory provider configuration as
described in <xref linkend="search-configuration-directory" />. The
DirectoryProvider default name for the previous example are
@@ -222,18 +242,23 @@
name of it's owning index followed by <constant>.</constant> (dot) and its
index number.</para>
- <programlisting>hibernate.search.default.indexBase /usr/lucene/indexes
+ <example>
+ <title>Configuring the sharding configuration for an example entity
+ <classname>Animal</classname></title>
+ <programlisting>hibernate.search.default.indexBase /usr/lucene/indexes
+
hibernate.search.Animal.sharding_strategy.nbr_of_shards 5
hibernate.search.Animal.directory_provider org.hibernate.search.store.FSDirectoryProvider
hibernate.search.Animal.0.indexName Animal00
hibernate.search.Animal.3.indexBase /usr/lucene/sharded
hibernate.search.Animal.3.indexName Animal03</programlisting>
+ </example>
<para>This configuration uses the default id string hashing strategy and
shards the Animal index into 5 subindexes. All subindexes are
- FSDirectoryProvider instances and the directory where each subindex is
- stored is as followed:</para>
+ <classname>FSDirectoryProvider</classname> instances and the directory
+ where each subindex is stored is as followed:</para>
<itemizedlist>
<listitem>
@@ -266,29 +291,27 @@
<section>
<title>Sharing indexes (two entities into the same directory)</title>
- <para>It is possible to store more than one entity index information into
- a single Lucene index.</para>
-
<note>
<para>This is only presented here so that you know the option is
available. There is really not much benefit in sharing indexes.</para>
</note>
- <para>There are actually two ways to accomplish merging an index:</para>
+ <para>It is technically possible to store the information of more than one
+ entity into a single Lucene index. There are two ways to accomplish
+ this:</para>
<itemizedlist>
<listitem>
<para>Configuring the underlying directory providers to point to the
same physical index directory. In practice, you set the property
<literal>hibernate.search.[fully qualified entity
- name].indexName=(relative directory from indexBase)</literal> to the
- same value.</para>
+ name].indexName</literal> to the same value. As an example let’s use
+ the same index (directory) for the <classname>Furniture</classname>
+ and <classname>Animal</classname> entity. We just set
+ <literal>indexName</literal> for both entities to for example
+ “Animal”. Both entities will then be stored in the Animal
+ directory</para>
- <para>For example, let’s say that we want the Furniture entity to
- actually be stored in the same directory as the Animal entity. We
- would have the configuration setting set to “Animal”. Both entities
- will then be stored in the Animal directory</para>
-
<para><programlisting><code>hibernate.search.org.hibernate.search.test.shards.Furniture.indexName = Aninal
hibernate.search.org.hibernate.search.test.shards.Animal.indexName = Aninal</code></programlisting></para>
</listitem>
@@ -296,10 +319,10 @@
<listitem>
<para>Setting the <code>@Indexed</code> annotation’s
<methodname>index</methodname> attribute of the entities you want to
- merge to the same value.</para>
-
- <para>If we wanted all Furniture instances to be indexed in the Animal
- index along with all instances of Animal we would specify
+ merge to the same value. If we again wanted all
+ <classname>Furniture</classname> instances to be indexed in the
+ <classname>Animal</classname> index along with all instances of
+ <classname>Animal</classname> we would specify
<code>@Indexed(index=”Animal”)</code> on both
<classname>Animal</classname> and <classname>Furniture</classname>
classes.</para>
@@ -311,7 +334,7 @@
<title>Worker configuration</title>
<para>It is possible to refine how Hibernate Search interacts with Lucene
- through the worker configuration. The work can be exected to the Lucene
+ through the worker configuration. The work can be executed to the Lucene
directory or sent to a JMS queue for later processing. When processed to
the Lucene directory, the work can be processed synchronously or
asynchronously to the transaction commit.</para>
@@ -399,14 +422,32 @@
<para>This section describes in greater detail how to configure the Master
/ Slaves Hibernate Search architecture.</para>
+ <para><mediaobject>
+ <imageobject role="html">
+ <imagedata align="center" fileref="../shared/images/jms-backend.png"
+ format="PNG" />
+ </imageobject>
+
+ <imageobject role="fo">
+ <imagedata align="center" fileref="images/jms-backend.png"
+ format="PNG" />
+ </imageobject>
+
+ <caption><para>JMS Master/Slave architecture
+ overview.</para></caption>
+ </mediaobject></para>
+
<section>
<title>Slave nodes</title>
<para>Every index update operation is sent to a JMS queue. Index quering
operations are executed on a local index copy.</para>
- <programlisting>### slave configuration
+ <example>
+ <title>JMS Slave configuration</title>
+ <programlisting>### slave configuration
+
## DirectoryProvider
# (remote) master location
hibernate.search.default.sourceBase = /mnt/mastervolume/lucenedirs/mastercopy
@@ -430,6 +471,7 @@
# hibernate.search.worker.execution = async
# hibernate.search.worker.thread_pool.size = 2
# hibernate.search.worker.buffer_queue.max = 50</programlisting>
+ </example>
<para>A file system local copy is recommended for faster search
results.</para>
@@ -442,10 +484,13 @@
<title>Master node</title>
<para>Every index update operation is taken from a JMS queue and
- executed. The master index(es) is(are) copied on a regular basis.</para>
+ executed. The master index is copied on a regular basis.</para>
- <programlisting>### master configuration
+ <example>
+ <title>JMS Master configuration</title>
+ <programlisting>### master configuration
+
## DirectoryProvider
# (remote) master location where information is copied to
hibernate.search.default.sourceBase = /mnt/mastervolume/lucenedirs/mastercopy
@@ -461,15 +506,19 @@
## Backend configuration
#Backend is the default lucene one</programlisting>
+ </example>
<para>The refresh period should be higher that the expected time
copy.</para>
<para>In addition to the Hibernate Search framework configuration, a
- Message Driven Bean should be written and set up to process index works
- queue through JMS.</para>
+ Message Driven Bean should be written and set up to process the index
+ works queue through JMS.</para>
- <programlisting>@MessageDriven(activationConfig = {
+ <example>
+ <title>Message Driven Bean processing the indexing queue</title>
+
+ <programlisting>@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),
@ActivationConfigProperty(propertyName="destination", propertyValue="queue/hibernatesearch"),
@ActivationConfigProperty(propertyName="DLQMaxResent", propertyValue="1")
@@ -486,22 +535,17 @@
protected void cleanSessionIfNeeded(Session session)
}
}</programlisting>
+ </example>
- <para>This example inherit the abstract JMS controller class available
- and implements a JavaEE 5 MDB. This implementation is given as an
- example and, while most likely more complex, can be adjusted to make use
- of non Java EE Message Driven Beans. For more information about the
+ <para>This example inherits from the abstract JMS controller class
+ available in the Hibernate Search source code and implements a JavaEE 5
+ MDB. This implementation is given as an example and, while most likely
+ be more complex, can be adjusted to make use of non Java EE Message
+ Driven Beans. For more information about the
<methodname>getSession()</methodname> and
<methodname>cleanSessionIfNeeded()</methodname>, please check
<classname>AbstractJMSHibernateSearchController</classname>'s
javadoc.</para>
-
- <note>
- <para>Hibernate Search test suite makes use of JBoss Embedded to test
- the JMS integration. It allows the unit test to run both the MDB
- container and JBoss Messaging (JMS provider) in a standalone way
- (marketed by some as "lightweight").</para>
- </note>
</section>
</section>
@@ -550,17 +594,19 @@
Annotations or Hibernate EntityManager. If, for some reason you need to
disable it, set
<literal>hibernate.search.autoregister_listeners</literal> to false.
- Note that there is no performance runtime when the listeners are enabled
- while no entity is indexable.</para>
+ Note that there is no performance penalty when the listeners are enabled
+ even though no entities are indexed.</para>
<para>To enable Hibernate Search in Hibernate Core (ie. if you don't use
Hibernate Annotations), add the
- <literal>FullTextIndexEventListener</literal> for the six Hibernate
- events that occur after changes are executed to the database. Once
- again, such a configuration is not useful with Hibernate Annotations or
- Hibernate EntityManager.</para>
+ <literal>FullTextIndexEventListener</literal> for the following six
+ Hibernate events.</para>
- <programlisting><hibernate-configuration>
+ <example>
+ <title>Explicitly enabling Hibernate Search by configuring the
+ <classname>FullTextIndexEventListener</classname></title>
+
+ <programlisting><hibernate-configuration>
<session-factory>
...
<event type="post-update"/>
@@ -583,27 +629,7 @@
</event>
</session-factory>
</hibernate-configuration></programlisting>
-
- <para>Be sure to add the appropriate jar files in your classpath. Check
- <literal>lib/README.TXT</literal> for the list of third party libraries.
- A typical installation on top of Hibernate Annotations will add:</para>
-
- <itemizedlist>
- <listitem>
- <para><filename>hibernate-search.jar</filename>: the core
- engine</para>
- </listitem>
-
- <listitem>
- <para><filename>lucene-core.jar</filename>: Lucene core
- engine</para>
- </listitem>
-
- <listitem>
- <para><filename>solr-core.jar</filename>, solr-common.jar:
- Additional analyzer infrastructure</para>
- </listitem>
- </itemizedlist>
+ </example>
</section>
<section>
15 years, 6 months
Hibernate SVN: r15644 - in search/trunk: src/test/org/hibernate/search/test/analyzer and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2008-12-03 04:54:33 -0500 (Wed, 03 Dec 2008)
New Revision: 15644
Modified:
search/trunk/doc/reference/en/modules/mapping.xml
search/trunk/src/test/org/hibernate/search/test/analyzer/AnalyzerTest.java
Log:
HSEARCH-221 - changed analyzer test to use unicode escape characters. marked feature experimental in documentation
Modified: search/trunk/doc/reference/en/modules/mapping.xml
===================================================================
--- search/trunk/doc/reference/en/modules/mapping.xml 2008-12-02 18:16:46 UTC (rev 15643)
+++ search/trunk/doc/reference/en/modules/mapping.xml 2008-12-03 09:54:33 UTC (rev 15644)
@@ -813,13 +813,14 @@
<section>
<title>Analyzer discriminator (experimental)</title>
- <para>So far all the different ways to specify an analyzer were
+ <para>So far all the introduced ways to specify an analyzer were
static. However, there are usecases where it is useful to select an
analyzer depending on the current state of the entity to be indexed,
- for example in multi language enabled applications. For an BlogEntry
- class for example the analyzer could depend on the language property
- of the entry. Depending on this property the correct stemmer can be
- chosen to index the actual text. </para>
+ for example in multilingual application. For an
+ <classname>BlogEntry</classname> class for example the analyzer could
+ depend on the language property of the entry. Depending on this
+ property the correct language specific stemmer should be chosen to
+ index the actual text. </para>
<para>To enable this dynamic analyzer selection Hibernate Search
introduces the <classname>AnalyzerDiscriminator</classname>
@@ -877,7 +878,7 @@
}
}</programlisting>
</example>The prerequisite for using
- <classname>@AnalyzerDiscriminator</classname> is that all analyzer
+ <classname>@AnalyzerDiscriminator</classname> is that all analyzers
which are going to be used are predefined via
<classname>@AnalyzerDef</classname> definitions. If this is the case
one can place the <classname>@AnalyzerDiscriminator</classname>
@@ -890,17 +891,26 @@
only method you have to implement is
<classname>getAnanyzerDefinitionName()</classname> which gets called
for each field added to the Lucene document. The entity which is
- getting indexed is also passed at each call to the interface method.
- The <literal>value</literal> parameter is only set if the
- <classname>AnalyzerDiscriminator</classname> is placed on a property
- instead of class level. In this case the value represents the current
- value of this property.</para>
+ getting indexed is also passed to the interface method. The
+ <literal>value</literal> parameter is only set if the
+ <classname>AnalyzerDiscriminator</classname> is placed on property
+ level instead of class level. In this case the value represents the
+ current value of this property.</para>
- <para>The implemention of the interface has to return the name of an
- existing analyzer definition if the analyzer should be set dynamically
- or <classname>null</classname> if the default analyzer should be
- applied. The given example assumes that the language paramter is
- either 'de' or 'en'.</para>
+ <para>An implemention of the <classname>Discriminator</classname>
+ interface has to return the name of an existing analyzer definition if
+ the analyzer should be set dynamically or <classname>null</classname>
+ if the default analyzer should not be overridden. The given example
+ assumes that the language paramter is either 'de' or 'en' which
+ matches the specified names in the
+ <classname>@AnalyzerDef</classname>s.</para>
+
+ <note>
+ <para>The <classname>@AnalyzerDiscriminator</classname> is currently
+ still experimental and the API might still change. We are hoping for
+ some feedback from the community about the usefulness and usability
+ of this feature.</para>
+ </note>
</section>
<section id="analyzer-retrievinganalyzer">
Modified: search/trunk/src/test/org/hibernate/search/test/analyzer/AnalyzerTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/analyzer/AnalyzerTest.java 2008-12-02 18:16:46 UTC (rev 15643)
+++ search/trunk/src/test/org/hibernate/search/test/analyzer/AnalyzerTest.java 2008-12-03 09:54:33 UTC (rev 15644)
@@ -38,7 +38,7 @@
public void testAnalyzerDiscriminator() throws Exception {
Article germanArticle = new Article();
germanArticle.setLanguage( "de" );
- germanArticle.setText( "aufeinanderschl�gen" );
+ germanArticle.setText( "aufeinanderschl\u00FCgen" );
Set<Article> references = new HashSet<Article>();
references.add( germanArticle );
15 years, 6 months