From hibernate-commits at lists.jboss.org Tue Sep 1 10:42:20 2009
Content-Type: multipart/mixed; boundary="===============4697085350176134538=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17457 - in
validator/trunk/hibernate-validator/src/main/docbook/en-US: modules and 1
other directory.
Date: Tue, 01 Sep 2009 10:42:20 -0400
Message-ID: <200909011442.n81EgKtE004669@svn01.web.mwc.hst.phx2.redhat.com>
--===============4697085350176134538==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-01 10:42:20 -0400 (Tue, 01 Sep 2009)
New Revision: 17457
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/getti=
ngstarted.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
Log:
started to work on documentation
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/master=
.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml 2=
009-08-31 15:41:29 UTC (rev 17456)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml 2=
009-09-01 14:42:20 UTC (rev 17457)
@@ -62,21 +62,6 @@
=
=
-
- Preface Beta Release
-
- This release has beta status, which means that this documenation=
is not yet complete.
- You can find more information about the current state of the implement=
ation on the Bean Validation Roadmap or
- you can refer to JSR 303 directly for further examples.
-
- Please report any problems or bugs in either J=
ira
- Hibernate Validator or on the Validator
- Forum.
-
-
Preface
=
@@ -90,13 +75,14 @@
=
JSR 303 - Bean Validation - defines a metadata model and API for
JavaBean validation. The default metadata source is annotations, with =
the
- ability to override and extend the meta-data through the use of XML
- validation descriptors. The API is not tied to a specific application =
tier
- or programming model. It is specifically not tied to either the web ti=
er
- or the persistence tier, and is available for both server-side applica=
tion
- programming, as well as rich client Swing application developers.
+ ability to override and extend the meta-data through the use of XML. T=
he
+ API is not tied to a specific application tier or programming model. I=
t is
+ specifically not tied to either the web tier or the persistence tier, =
and
+ is available for both server-side application programming, as well as =
rich
+ client Swing application developers.
=
- Hibernate Validator is an implementation of this JSR.
+ Hibernate Validator is the reference implementation of this
+ JSR.
=
@@ -112,14 +98,9 @@
=
-
-
-
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/gettingstarted.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/gett=
ingstarted.xml 2009-08-31 15:41:29 UTC (rev 17456)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/gett=
ingstarted.xml 2009-09-01 14:42:20 UTC (rev 17457)
@@ -28,10 +28,9 @@
Getting started
=
- This chapter will show you how to quickly get started with the
- reference implementation (RI) of the Bean Validation API as specified by=
JSR
- 303. Be sure to fulfill the following prerequisites in order to
- proceed:
+ This chapter will show you how to get started with Hibernate Valid=
ator
+ - the reference implementation (RI) of the Bean Validation API. Be sure =
to
+ fulfill the following prerequisites in order to proceed:
=
@@ -41,11 +40,9 @@
=
As Apache Maven will
- be used as build tool in the following, Maven must be installed (help
- can be found here) and a
- functioning internet connection is required to allow Maven for the
- download of all dependent libraries
+ be used as build tool in the following, Maven must be installed and a
+ functioning internet connection is required to allow Maven to downlo=
ad
+ all dependent libraries
=
@@ -75,118 +72,34 @@
Start by creating new Maven project using the Maven archetype pl=
ugin
as follows:
=
- mvn archetype:generate -DarchetypeArtifactId=3Dm=
aven-archetype-quickstart
+ mvn archetype:generate \
+ -DarchetypeCatalog=3Dhttp://repository.jboss.com/maven2/archetype-catalo=
g.xml \
+ -DgroupId=3Dcom.mycompany \
+ -DartifactId=3Dbeanvalidation-gettingstarted \
+ -Dversion=3D1.0-SNAPSHOT \
+ -Dpackage=3Dcom.mycompany
=
- and specify the requested properties:
+ When presented with the list of available archetypes in the JBoss
+ Maven Repository select the
+ hibernate-validator-quickstart-archetype and conf=
irm
+ the properties. Maven will create your project in the directory
+ beanvalidation-gettingstarted. Change into this directory and run:
=
-
-
- groupId: An identifier for your company, e.g.
- com.mycompany
-
-
-
- artifactId: An identifier for the new project, e.g.
- beanvalidation-gettingstarted
-
-
-
- version: Initial version for the new project, e.g.
- 1.0-SNAPSHOT
-
-
-
- package: The top-level package for the new project, e.g.
- com.mycompany
-
-
-
- Finally confirm all entered values and change into the newly cre=
ated
- project directory. All properties of a Maven project (such as its
- dependencies to other libraries, the steps to be performed during build
- etc.) are described in a file called pom.xml (project ob=
ject
- model), located in the project's ro=
ot
- directory. Now open the project's pom.xml and perform the following
- changes:
-
-
-
- Add the dependency to hibernate-validator
-
-
-
- Add an SLF4J binding. As Hibernate Validator uses the logging
- facade SLF4J, it can =
make
- use of your preferred logging API. In the following the binding to
- log4j is
- used.
-
-
-
- Set the compiler level to 1.5 (as we want to use
- annotations)
-
-
-
- Use JUnit 4 as testing framework
-
-
-
- Having done this, your pom.xml should look like this:
-
- <project =
- xmlns=3D"http://maven.apache.org/POM/4.0.0" =
- xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation=3D"http://maven.apache.org/POM/4.0.0 http://maven.a=
pache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.mycompany</groupId>
- <artifactId>beanvalidation-gettingstarted</artifactId>
- <version>1.0-SNAPSHOT</version>
- <dependencies>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>4.0.0.CR1</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.4.2</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.5</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
+ mvn testYou should see some
+ compiling and testing action taking place. Time to look at the actual
+ code.
=
Applying constraints to a model class
=
- Having set up the project, it's time now to actually make use of=
the
- Bean Validation API. Therefore, open the project in the IDE of your ch=
oice
- (for Eclipse, you may type mvn eclipse:eclipse to create a standard
- Eclipse project configuration OR you may use the Open the project in the IDE of your choice (for Eclipse, you may
+ type mvn eclipse:eclipse to create a standard Eclipse project
+ configuration OR you may use the M2Eclipse plugin. NetBe=
ans
has great Maven support too, as described here) and =
create
- the following class as an exemplary domain object:
+ url=3D"http://wiki.netbeans.org/MavenBestPractices">here) and =
open
+ the class Car:
=
package com.mycompany;
=
@@ -361,9 +274,6 @@
Where to go next?
=
That concludes our 5 minute tour through the world of the Bean
- Validation RI. We will complete this documentation in our coming relea=
ses.
- For now we recommend to refer to the JSR 303 specification directly for
- more examples. The 1.0.CR3 version of this specification is available
- here=
.
+ Validation RI.
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-08-31 15:41:29 UTC (rev 17456)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-01 14:42:20 UTC (rev 17457)
@@ -27,10 +27,6 @@
Object validation
=
- TODO: outline of the chapter. Should this be placed before "Creating custom
- constraints"?
-
Annotating your model
=
@@ -293,7 +289,7 @@
cause each contained element to be validated, when the parent object=
is
validated.
=
- package com.mycompany;
=
import java.util.ArrayList;
import java.util.List;
@@ -309,16 +305,16 @@
=
@NotNull
@Valid
- private List<Person> passengers =3D new ArrayList<Person>(=
);
+ private List<Person> passengers =3D new ArrayList<=
;Person>();
=
- public Car(List<Person> passengers) {
+ public Car(List<Person> passengers) {
=
this.passengers =3D passengers;
}
=
//getters and setters ...
=
-}]]>
+}
=
If a Car instance is validated now, a
ConstraintValidation will be raised, if any of
--===============4697085350176134538==--
From hibernate-commits at lists.jboss.org Tue Sep 1 22:00:23 2009
Content-Type: multipart/mixed; boundary="===============1850236936830597164=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17458 -
core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/hql.
Date: Tue, 01 Sep 2009 22:00:23 -0400
Message-ID: <200909020200.n8220N3C010078@svn01.web.mwc.hst.phx2.redhat.com>
--===============1850236936830597164==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-01 22:00:23 -0400 (Tue, 01 Sep 2009)
New Revision: 17458
Modified:
core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/hql/ASTParserL=
oadingTest.java
Log:
JBPAPP-2715 HHH-4114 : Core - ASTParserLoadingTest fails due to missing "bi=
t_length" function
Modified: core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/hql/AST=
ParserLoadingTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/hql/ASTParser=
LoadingTest.java 2009-09-01 14:42:20 UTC (rev 17457)
+++ core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/hql/ASTParser=
LoadingTest.java 2009-09-02 02:00:23 UTC (rev 17458)
@@ -1866,11 +1866,21 @@
=
hql =3D "from Animal a where mod(16, 4) =3D 4";
session.createQuery(hql).list();
-
- hql =3D "from Animal a where bit_length(a.bodyWeight) =3D 24";
+ /**
+ * PostgreSQL >=3D 8.3.7 typecasts are no longer automatically allowed =
+ * http://www.postgresql.org/docs/current/static/release-8-3.html<=
/link>
+ */ =
+ if(getDialect() instanceof PostgreSQLDialect){
+ hql =3D "from Animal a where bit_length(str(a.bodyWeight)) =3D 24";
+ } else{
+ hql =3D "from Animal a where bit_length(a.bodyWeight) =3D 24";
+ }
session.createQuery(hql).list();
-
- hql =3D "select bit_length(a.bodyWeight) from Animal a";
+ if(getDialect() instanceof PostgreSQLDialect){
+ hql =3D "select bit_length(str(a.bodyWeight)) from Animal a";
+ } else{
+ hql =3D "select bit_length(a.bodyWeight) from Animal a";
+ }
session.createQuery(hql).list();
=
/*hql =3D "select object(a) from Animal a where CURRENT_DATE =3D :p1 or =
CURRENT_TIME =3D :p2 or CURRENT_TIMESTAMP =3D :p3";
--===============1850236936830597164==--
From hibernate-commits at lists.jboss.org Tue Sep 1 22:02:37 2009
Content-Type: multipart/mixed; boundary="===============3160636319347778667=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17459 -
core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/legacy.
Date: Tue, 01 Sep 2009 22:02:37 -0400
Message-ID: <200909020202.n8222bth010514@svn01.web.mwc.hst.phx2.redhat.com>
--===============3160636319347778667==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-01 22:02:37 -0400 (Tue, 01 Sep 2009)
New Revision: 17459
Modified:
core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/legacy/FooBarT=
est.java
Log:
JBPAPP-2716 HHH-4115 : Core - FooBarTest - "operator does not exist: charac=
ter varying =3D integer"
Modified: core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/legacy/=
FooBarTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/legacy/FooBar=
Test.java 2009-09-02 02:00:23 UTC (rev 17458)
+++ core/branches/Branch_3_2_4_SP1_CP/test/org/hibernate/test/legacy/FooBar=
Test.java 2009-09-02 02:02:37 UTC (rev 17459)
@@ -2139,7 +2139,7 @@
s.find("select count(*) from Baz as baz where 1 in indices(baz.fooArray=
)");
s.find("select count(*) from Bar as bar where 'abc' in elements(bar.baz=
.fooArray)");
s.find("select count(*) from Bar as bar where 1 in indices(bar.baz.fooA=
rray)");
- if ( !(getDialect() instanceof DB2Dialect) && !(getDialect() instanceo=
f Oracle9Dialect) && !(getDialect() instanceof Oracle8iDialect ) && !( getD=
ialect() instanceof SybaseDialect ) && !( getDialect() instanceof Sybase11D=
ialect ) && !( getDialect() instanceof SybaseASE15Dialect )) {
+ if ( !(getDialect() instanceof DB2Dialect) && !(getDialect() instanceo=
f Oracle9Dialect) && !(getDialect() instanceof Oracle8iDialect ) && !( getD=
ialect() instanceof SybaseDialect ) && !( getDialect() instanceof Sybase11D=
ialect ) && !( getDialect() instanceof SybaseASE15Dialect ) && !(getDialect=
() instanceof PostgreSQLDialect)) {
// SybaseAnywhereDialect supports implicit conversions from strings to=
ints
s.find("select count(*) from Bar as bar, bar.component.glarch.proxyArr=
ay as g where g.id in indices(bar.baz.fooArray)");
s.find("select max( elements(bar.baz.fooArray) ) from Bar as bar, bar.=
component.glarch.proxyArray as g where g.id in indices(bar.baz.fooArray)");
--===============3160636319347778667==--
From hibernate-commits at lists.jboss.org Tue Sep 1 22:10:19 2009
Content-Type: multipart/mixed; boundary="===============5442399203020693261=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17460 -
core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/test/legacy.
Date: Tue, 01 Sep 2009 22:10:18 -0400
Message-ID: <200909020210.n822AI0N012028@svn01.web.mwc.hst.phx2.redhat.com>
--===============5442399203020693261==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-01 22:10:18 -0400 (Tue, 01 Sep 2009)
New Revision: 17460
Modified:
core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/t=
est/legacy/FooBarTest.java
Log:
JBPAPP-2716 HHH-4115 : Core - FooBarTest - 'operator does not exist: charac=
ter varying =3D integer'
Modified: core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibe=
rnate/test/legacy/FooBarTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/=
test/legacy/FooBarTest.java 2009-09-02 02:02:37 UTC (rev 17459)
+++ core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/=
test/legacy/FooBarTest.java 2009-09-02 02:10:18 UTC (rev 17460)
@@ -2130,7 +2130,7 @@
s.find("select count(*) from Baz as baz where 1 in indices(baz.fooArray=
)");
s.find("select count(*) from Bar as bar where 'abc' in elements(bar.baz=
.fooArray)");
s.find("select count(*) from Bar as bar where 1 in indices(bar.baz.fooA=
rray)");
- if ( !(getDialect() instanceof DB2Dialect) && !(getDialect() instanceo=
f Oracle8iDialect ) && !( getDialect() instanceof SybaseDialect ) && !( get=
Dialect() instanceof Sybase11Dialect ) && !( getDialect() instanceof Sybase=
ASE15Dialect )) {
+ if ( !(getDialect() instanceof DB2Dialect) && !(getDialect() instanceo=
f Oracle8iDialect ) && !( getDialect() instanceof SybaseDialect ) && !( get=
Dialect() instanceof Sybase11Dialect ) && !( getDialect() instanceof Sybase=
ASE15Dialect ) && !(getDialect() instanceof PostgreSQLDialect)) {
// SybaseAnywhereDialect supports implicit conversions from strings to=
ints
s.find("select count(*) from Bar as bar, bar.component.glarch.proxyArr=
ay as g where g.id in indices(bar.baz.fooArray)");
s.find("select max( elements(bar.baz.fooArray) ) from Bar as bar, bar.=
component.glarch.proxyArray as g where g.id in indices(bar.baz.fooArray)");
--===============5442399203020693261==--
From hibernate-commits at lists.jboss.org Tue Sep 1 22:12:10 2009
Content-Type: multipart/mixed; boundary="===============8471041300572361299=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17461 -
core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/test/hql.
Date: Tue, 01 Sep 2009 22:12:09 -0400
Message-ID: <200909020212.n822C91V012327@svn01.web.mwc.hst.phx2.redhat.com>
--===============8471041300572361299==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-01 22:12:09 -0400 (Tue, 01 Sep 2009)
New Revision: 17461
Modified:
core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/t=
est/hql/ASTParserLoadingTest.java
Log:
JBPAPP-2715 HHH-4114 : Core - ASTParserLoadingTest fails due to missing 'bi=
t_length' function
Modified: core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibe=
rnate/test/hql/ASTParserLoadingTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/=
test/hql/ASTParserLoadingTest.java 2009-09-02 02:10:18 UTC (rev 17460)
+++ core/branches/Branch_3_3_2_GA_CP/testsuite/src/test/java/org/hibernate/=
test/hql/ASTParserLoadingTest.java 2009-09-02 02:12:09 UTC (rev 17461)
@@ -1896,11 +1896,22 @@
=
hql =3D "from Animal a where mod(16, 4) =3D 4";
session.createQuery(hql).list();
-
- hql =3D "from Animal a where bit_length(a.bodyWeight) =3D 24";
+ /**
+ * PostgreSQL >=3D 8.3.7 typecasts are no longer automatically allowed =
+ * http://www.postgresql.org/docs/current/static/release-8-3.html<=
/link>
+ */
+ if(getDialect() instanceof PostgreSQLDialect){
+ hql =3D "from Animal a where bit_length(str(a.bodyWeight)) =3D 24";
+ }else{
+ hql =3D "from Animal a where bit_length(a.bodyWeight) =3D 24";
+ }
session.createQuery(hql).list();
-
- hql =3D "select bit_length(a.bodyWeight) from Animal a";
+ if(getDialect() instanceof PostgreSQLDialect){
+ hql =3D "select bit_length(str(a.bodyWeight)) from Animal a";
+ }else{
+ hql =3D "select bit_length(a.bodyWeight) from Animal a";
+ }
+ =
session.createQuery(hql).list();
=
/*hql =3D "select object(a) from Animal a where CURRENT_DATE =3D :p1 or =
CURRENT_TIME =3D :p2 or CURRENT_TIMESTAMP =3D :p3";
--===============8471041300572361299==--
From hibernate-commits at lists.jboss.org Tue Sep 1 22:29:36 2009
Content-Type: multipart/mixed; boundary="===============3831199779252749385=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17462 -
core/trunk/testsuite/src/test/java/org/hibernate/test/hql.
Date: Tue, 01 Sep 2009 22:29:36 -0400
Message-ID: <200909020229.n822TaDb016010@svn01.web.mwc.hst.phx2.redhat.com>
--===============3831199779252749385==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-01 22:29:36 -0400 (Tue, 01 Sep 2009)
New Revision: 17462
Modified:
core/trunk/testsuite/src/test/java/org/hibernate/test/hql/ASTParserLoadi=
ngTest.java
Log:
JBPAPP-2715 HHH-4114 : Core - ASTParserLoadingTest fails due to missing 'bi=
t_length' function
Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/hql/ASTPars=
erLoadingTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/testsuite/src/test/java/org/hibernate/test/hql/ASTParserLoad=
ingTest.java 2009-09-02 02:12:09 UTC (rev 17461)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/hql/ASTParserLoad=
ingTest.java 2009-09-02 02:29:36 UTC (rev 17462)
@@ -1941,11 +1941,23 @@
=
hql =3D "from Animal a where mod(16, 4) =3D 4";
session.createQuery(hql).list();
-
- hql =3D "from Animal a where bit_length(a.bodyWeight) =3D 24";
+ /**
+ * PostgreSQL >=3D 8.3.7 typecasts are no longer automatically allowed =
+ * http://www.postgresql.org/docs/current/static/release-8-3.html<=
/link>
+ */
+ if(getDialect() instanceof PostgreSQLDialect){
+ hql =3D "from Animal a where bit_length(str(a.bodyWeight)) =3D 24";
+ }else{
+ hql =3D "from Animal a where bit_length(a.bodyWeight) =3D 24";
+ }
+ =
session.createQuery(hql).list();
-
- hql =3D "select bit_length(a.bodyWeight) from Animal a";
+ if(getDialect() instanceof PostgreSQLDialect){
+ hql =3D "select bit_length(str(a.bodyWeight)) from Animal a";
+ }else{
+ hql =3D "select bit_length(a.bodyWeight) from Animal a";
+ }
+ =
session.createQuery(hql).list();
=
/*hql =3D "select object(a) from Animal a where CURRENT_DATE =3D :p1 or =
CURRENT_TIME =3D :p2 or CURRENT_TIMESTAMP =3D :p3";
--===============3831199779252749385==--
From hibernate-commits at lists.jboss.org Tue Sep 1 22:30:42 2009
Content-Type: multipart/mixed; boundary="===============4913107623657105167=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17463 -
core/trunk/testsuite/src/test/java/org/hibernate/test/legacy.
Date: Tue, 01 Sep 2009 22:30:42 -0400
Message-ID: <200909020230.n822UgUq016451@svn01.web.mwc.hst.phx2.redhat.com>
--===============4913107623657105167==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-01 22:30:42 -0400 (Tue, 01 Sep 2009)
New Revision: 17463
Modified:
core/trunk/testsuite/src/test/java/org/hibernate/test/legacy/FooBarTest.=
java
Log:
JBPAPP-2716 HHH-4115 : Core - FooBarTest - 'operator does not exist: charac=
ter varying =3D integer'
Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/legacy/FooB=
arTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/testsuite/src/test/java/org/hibernate/test/legacy/FooBarTest=
.java 2009-09-02 02:29:36 UTC (rev 17462)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/legacy/FooBarTest=
.java 2009-09-02 02:30:42 UTC (rev 17463)
@@ -2222,7 +2222,7 @@
s.createQuery( "select count(*) from Baz as baz where 1 in indices(baz.=
fooArray)" ).list();
s.createQuery( "select count(*) from Bar as bar where 'abc' in elements=
(bar.baz.fooArray)" ).list();
s.createQuery( "select count(*) from Bar as bar where 1 in indices(bar.=
baz.fooArray)" ).list();
- if ( !(getDialect() instanceof DB2Dialect) && !(getDialect() instanceo=
f Oracle8iDialect ) && !( getDialect() instanceof SybaseDialect ) && !( get=
Dialect() instanceof Sybase11Dialect ) && !( getDialect() instanceof Sybase=
ASE15Dialect )) {
+ if ( !(getDialect() instanceof DB2Dialect) && !(getDialect() instanceo=
f Oracle8iDialect ) && !( getDialect() instanceof SybaseDialect ) && !( get=
Dialect() instanceof Sybase11Dialect ) && !( getDialect() instanceof Sybase=
ASE15Dialect ) && !( getDialect() instanceof PostgreSQLDialect )) {
// SybaseAnywhereDialect supports implicit conversions from strings to=
ints
s.createQuery(
"select count(*) from Bar as bar, bar.component.glarch.proxyArray as=
g where g.id in indices(bar.baz.fooArray)"
--===============4913107623657105167==--
From hibernate-commits at lists.jboss.org Tue Sep 1 23:03:26 2009
Content-Type: multipart/mixed; boundary="===============7652800455575527187=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17464 -
core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/test/legacy.
Date: Tue, 01 Sep 2009 23:03:26 -0400
Message-ID: <200909020303.n8233Q7Y022395@svn01.web.mwc.hst.phx2.redhat.com>
--===============7652800455575527187==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-01 23:03:25 -0400 (Tue, 01 Sep 2009)
New Revision: 17464
Modified:
core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/test/lega=
cy/FooBarTest.java
Log:
JBPAPP-2716 HHH-4115 : Core - FooBarTest - 'operator does not exist: charac=
ter varying =3D integer'
Modified: core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/te=
st/legacy/FooBarTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/test/leg=
acy/FooBarTest.java 2009-09-02 02:30:42 UTC (rev 17463)
+++ core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/test/leg=
acy/FooBarTest.java 2009-09-02 03:03:25 UTC (rev 17464)
@@ -2130,7 +2130,7 @@
s.find("select count(*) from Baz as baz where 1 in indices(baz.fooArray=
)");
s.find("select count(*) from Bar as bar where 'abc' in elements(bar.baz=
.fooArray)");
s.find("select count(*) from Bar as bar where 1 in indices(bar.baz.fooA=
rray)");
- if ( !(getDialect() instanceof DB2Dialect) && !(getDialect() instanceo=
f Oracle8iDialect ) && !( getDialect() instanceof SybaseDialect ) && !( get=
Dialect() instanceof Sybase11Dialect ) && !( getDialect() instanceof Sybase=
ASE15Dialect )) {
+ if ( !(getDialect() instanceof DB2Dialect) && !(getDialect() instanceo=
f Oracle8iDialect ) && !( getDialect() instanceof SybaseDialect ) && !( get=
Dialect() instanceof Sybase11Dialect ) && !( getDialect() instanceof Sybase=
ASE15Dialect ) && !( getDialect() instanceof PostgreSQLDialect )) {
// SybaseAnywhereDialect supports implicit conversions from strings to=
ints
s.find("select count(*) from Bar as bar, bar.component.glarch.proxyArr=
ay as g where g.id in indices(bar.baz.fooArray)");
s.find("select max( elements(bar.baz.fooArray) ) from Bar as bar, bar.=
component.glarch.proxyArray as g where g.id in indices(bar.baz.fooArray)");
--===============7652800455575527187==--
From hibernate-commits at lists.jboss.org Tue Sep 1 23:06:15 2009
Content-Type: multipart/mixed; boundary="===============7538089021580100369=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17465 -
core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/test/hql.
Date: Tue, 01 Sep 2009 23:06:15 -0400
Message-ID: <200909020306.n8236F7H023057@svn01.web.mwc.hst.phx2.redhat.com>
--===============7538089021580100369==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-01 23:06:15 -0400 (Tue, 01 Sep 2009)
New Revision: 17465
Modified:
core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/test/hql/=
ASTParserLoadingTest.java
Log:
JBPAPP-2715 HHH-4114 : Core - ASTParserLoadingTest fails due to missing 'bi=
t_length' function
Modified: core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/te=
st/hql/ASTParserLoadingTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/test/hql=
/ASTParserLoadingTest.java 2009-09-02 03:03:25 UTC (rev 17464)
+++ core/branches/Branch_3_3/testsuite/src/test/java/org/hibernate/test/hql=
/ASTParserLoadingTest.java 2009-09-02 03:06:15 UTC (rev 17465)
@@ -1897,10 +1897,22 @@
hql =3D "from Animal a where mod(16, 4) =3D 4";
session.createQuery(hql).list();
=
- hql =3D "from Animal a where bit_length(a.bodyWeight) =3D 24";
+ /**
+ * PostgreSQL >=3D 8.3.7 typecasts are no longer automatically allowed =
+ * http://www.postgresql.org/docs/current/static/release-8-3.html<=
/link>
+ */
+ if(getDialect() instanceof PostgreSQLDialect){
+ hql =3D "from Animal a where bit_length(str(a.bodyWeight)) =3D 24";
+ }else{
+ hql =3D "from Animal a where bit_length(a.bodyWeight) =3D 24";
+ }
session.createQuery(hql).list();
-
- hql =3D "select bit_length(a.bodyWeight) from Animal a";
+ if(getDialect() instanceof PostgreSQLDialect){
+ hql =3D "select bit_length(str(a.bodyWeight)) from Animal a";
+ }else{
+ hql =3D "select bit_length(a.bodyWeight) from Animal a";
+ }
+ =
session.createQuery(hql).list();
=
/*hql =3D "select object(a) from Animal a where CURRENT_DATE =3D :p1 or =
CURRENT_TIME =3D :p2 or CURRENT_TIMESTAMP =3D :p3";
--===============7538089021580100369==--
From hibernate-commits at lists.jboss.org Wed Sep 2 06:10:50 2009
Content-Type: multipart/mixed; boundary="===============7909439271231364799=="
MIME-Version: 1.0
From: Donette Amqqycjy
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Torrent World opened
Date: Wed, 02 Sep 2009 06:10:49 -0400
Message-ID: <9336JQD.5448CE7DF1.9471359880VOURHNHCTFTQCCO93@hera.tvtom.pl>
--===============7909439271231364799==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
--===============7909439271231364799==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjwhLS1DVExfQkVHSU4t
LT48aGVhZD48dGl0bGU+VGhlIFdvcmxkJ3MgQmVzdCBNZXRob2RvbG9neTwvdGl0bGU+CjwvaGVh
ZD48Ym9keT48IS0tCiAgICAgICAgICBUaGlzIGVtYWlsIHdhcyBzZW50IHRvOgogICAgICAgICAg
aGliZXJuYXRlLWNvbW1pdHNAbGlzdHMuamJvc3Mub3JnLS0+PHN0eWxlIHR5cGU9InRleHQvY3Nz
IiBtZWRpYT0iYWxsIj4KICAgICAgICAgIC8qIEdsb2JhbCBTdHlsZXMgKi8KICAgICAgICAgIC8q
IFBTVCBTdHlsZXMgKi8KICAgICAgICAgIGEge2NvbG9yOiMwMDRGN0Y7IHRleHQtZGVjb3JhdGlv
bjpub25lO30KCQkgIGJvZHkge2ZvbnQtZmFtaWx5OidMdWNpZGEgR3JhbmRlJywgQXJpYWwsIEhl
bHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJpZjt9CiAgICAgICAgPC9zdHlsZT48ZGl2IGlkPSJi
b2R5Ij4KPHRhYmxlIHdpZHRoPSI2MzQiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHBh
ZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iZm9udC1mYW1pbHk6J0x1Y2lkYSBHcmFu
ZGUnLCBBcmlhbCwgSGVsdmV0aWNhLCBWZXJkYW5hLCBzYW5zLXNlcmlmOyBib3JkZXItY29sbGFw
c2U6Y29sbGFwc2U7Ij48dHI+PHRkIHZhbGlnbj0iYm90dG9tIiB3aWR0aD0iMjI5IiBoZWlnaHQ9
IjQwIiByb3dzcGFuPSIyIiBiZ2NvbG9yPSIjRjQ5NTFEIj4KCTxhIGhyZWY9Imh0dHA6Ly9mZWMu
YnB1Z2lqZXcuY24vP3FmeWtpdj04NmExN2ZjZTdkZjEwZTZjMTU4ZmRkMGUmb3Rxbm9paG9heT01
MzYxNDk4OTQ4OTAwOTQ3MTM1OTg4MDkmb3VyaG5oY3RmPXFjY29oeWphenh2cGdsbnJ5cGpoIj4m
bmJzcDs8L2E+PC90ZD48dGQgd2lkdGg9IjQwNSIgaGVpZ2h0PSI0MCIgYmdjb2xvcj0iIzU5Njc3
MCIgLz4KPC90cj4KPHRyPjx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249InJpZ2h0IiB3aWR0aD0i
NDA1IiBoZWlnaHQ9IjMwIiBiZ2NvbG9yPSIjRjQ5NTFEIiBzdHlsZT0icGFkZGluZy1yaWdodDo1
cHg7Ij4KCTxzcGFuIHN0eWxlPSJjb2xvcjojMzMzMzMzOyBmb250LXNpemU6MTJweDsgZm9udC13
ZWlnaHQ6Ym9sZDsgbWFyZ2luOjA7IHBhZGRpbmc6MHB4IWltcG9ydGFudDsiPgoJU2VwdGVtYmVy
IDEsIDIwMDk8L3NwYW4+PC90ZD48L3RyPgo8dHI+PHRkIGNvbHNwYW49IjIiIHZhbGlnbj0ibWlk
ZGxlIiBhbGlnbj0icmlnaHQiIHdpZHRoPSI2MzQiIGhlaWdodD0iMzAiIGJnY29sb3I9IiM1OTY3
NzAiIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjVweDsiPgoJPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox
NnB4OyBjb2xvcjojRkZGRkZGOyBmb250LXdlaWdodDpib2xkOyBtYXJnaW46MDsgcGFkZGluZzow
cHghaW1wb3J0YW50OyI+CglPdXIgbWFsZSBuYXR1cmUgdGVsbHMgdXMgdG8gY29udHJvbCB0aGUg
c2l0dWF0aW9uPC9zcGFuPjwvdGQ+PC90cj4KPC90YWJsZT4KCjx0YWJsZSB3aWR0aD0iNjM0IiBh
bGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+
PHRyPjx0ZCBpZD0iY29sdW1uMiIgdmFsaWduPSJ0b3AiIHN0eWxlPSJwYWRkaW5nOjIwcHggMCAw
IDA7Ij4KPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiB4
bWxucz0iIj48dHI+Cgk8dGQgc3R5bGU9IndpZHRoOiA2MjBweDsgZm9udC1mYW1pbHk6IFRhaG9t
YSI+Cgk8c3BhbiBzdHlsZT0iZm9udC1zaXplOiBzbWFsbDsgZm9udC13ZWlnaHQ6IGJvbGQiPldl
IHdhbnQgdG8gY29udHJvbCBvdXIKCWJ1ZGdldCwgb3VyIGNhciYjMzk7cyBjb25kaXRpb24uLi48
L3NwYW4+PGJyIHN0eWxlPSJmb250LXNpemU6IHNtYWxsIj4KCTxzcGFuIHN0eWxlPSJmb250LXNp
emU6IHNtYWxsIj48aT5Ib3cgYWJvdXQgaGF2aW5nIHlvdXIgb3duIG1hbmg/P2QgdW5kZXIKCXlv
dXIgZnVsbCBjb250cm9sPzwvaT4gSW1wb3NzaWJsZT8gTm90IHdpdGggb3VyIHBpbHVsZXMhPGJy
PgoJPGltZyBhbHQ9IiIgc3JjPSJodHRwOi8vOTRjLmJwdWdpamV3LmNuL3NwYWNlci5naWYiPjwv
c3Bhbj48YnIgc3R5bGU9ImZvbnQtc2l6ZTogc21hbGwiPgoJPHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZTogc21hbGwiPkNvbnRyb2wgeW91ciBvd24gYW1vcm91cyBleGNpdGVtZW50IGFuZCBzZXQKCWl0
IHRvIG1heGltYWwgbGV2ZWwsIDxiPndoZW4gWW91IHdhbnQgaXQ8L2I+ITwvc3Bhbj48YnIgc3R5
bGU9ImZvbnQtc2l6ZTogc21hbGwiPgoJPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogc21hbGwiPjxh
IGhyZWY9Imh0dHA6Ly9jNDE4My5icHVnaWpldy5jbi8/a2Frb2E9ODZhMTdmY2U3ZGYxMGU2YzE1
OGZkZDBlJnJxa2lweWJlPTUzNjE0OTg5NDg5MDA5NDcxMzU5ODgwOSZvdXJobmhjdGY9cWNjb2h5
amF6eHZwZ2xucnlwamgiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIj5UcnkgdG9k
YXk8L2E+LAoJd2hlbiBhbGwgb3VyIHBhY2tzIGFyZSBvbiBEaXNjb3VudHMgKG9uZSB3ZWVrIGxl
ZnQhKTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiB4LXNtYWxsIj48YnI+PC9zcGFuPgoK
PC90ZD48L3RyPgo8dHI+PHRkIGFsaWduPSJyaWdodCIgc3R5bGU9IndpZHRoOiA2MjBweCI+PHAg
c3R5bGU9ImZvbnQtZmFtaWx5OidMdWNpZGEgR3JhbmRlJywgQXJpYWwsIEhlbHZldGljYSwgVmVy
ZGFuYSwgc2Fucy1zZXJpZjsgY29sb3I6IzY2NjsgZm9udC1zaXplOjExcHg7IG1hcmdpbjowOyBw
YWRkaW5nOjA7Ij48YSBzdHlsZT0iY29sb3I6IzAwNEY3RjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7
IiBocmVmPSJodHRwOi8vOTRjLmJwdWdpamV3LmNuLz9xYWtpcGlrPTg2YTE3ZmNlN2RmMTBlNmMx
NThmZGQwZSZramhxenVwdWw9NTM2MTQ5ODk0ODkwMDk0NzEzNTk4ODA5Jm91cmhuaGN0Zj1xY2Nv
aHlqYXp4dnBnbG5yeXBqaCIgY2xhc3M9InNlZWFsbCI+U2VlIEFsbCBBcnRpY2xlczwvYT48L3A+
Cgo8L3RkPjwvdHI+CjwvdGFibGU+Cgo8YnIgLz4KCjxiciAvPgoKPC90ZD48L3RyPgo8L3RhYmxl
PgoKPHRhYmxlIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2MzQiIGNlbGxwYWRkaW5nPSIwIiBjZWxs
c3BhY2luZz0iMCIgYm9yZGVyPSIwIiBpZD0iZm9vdGVyIj48dHI+PHRkIHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOiM1OTY3NzA7IHBhZGRpbmc6MTVweCA1cHg7IGNvbG9yOiNGRkZGRkY7IHRleHQt
YWxpZ246Y2VudGVyOyBmb250LWZhbWlseTonTHVjaWRhIEdyYW5kZScsIEFyaWFsLCBIZWx2ZXRp
Y2EsIFZlcmRhbmEsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxMXB4OyI+PHAgc3R5bGU9ImNvbG9y
OiNGRkZGRkYhaW1wb3J0YW50OyI+JmNvcHk7IDIwMDkKCXB5dWJpcS4KQWxsIHJpZ2h0cyByZXNl
cnZlZC48L3A+CjxwPgogICAgICAgICAgICAgICAgICAgICAgVGhpcyBlLW1haWwgd2FzIHNlbnQg
dG8gaGliZXJuYXRlLWNvbW1pdHNAbGlzdHMuamJvc3Mub3JnLgpUbyBlbnN1cmUgZGVsaXZlcnkg
dG8KICAgICAgICAgICAgICAgICAgPGJyIC8+Cgp5b3VyIGluYm94IChub3QgYnVsayBvciBqdW5r
IGZvbGRlcnMpLCBwbGVhc2UgYWRkIHVzIHRvIHlvdXIgYWRkcmVzcyBib29rLgogICAgICAgICAg
ICAgICAgPC9wPgoKPC90ZD48L3RyPgo8dHI+PHRkIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJmb250
LWZhbWlseTonTHVjaWRhIEdyYW5kZScsIEFyaWFsLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNhbnMt
c2VyaWY7IGZvbnQtc2l6ZToxMXB4OyBwYWRkaW5nOjVweCAwIDAgMDsiPjxwPgogICAgICAgICAg
ICAgICAgICAgICAgICA8YSBzdHlsZT0iY29sb3I6IzAwNEY3RjsiIGhyZWY9Imh0dHA6Ly84NmEx
Ny5icHVnaWpldy5jbi8/aWVnaW09ODZhMTdmY2U3ZGYxMGU2YzE1OGZkZDBlJm95YWV2aXBpPTUz
NjE0OTg5NDg5MDA5NDcxMzU5ODgwOSZvdXJobmhjdGY9cWNjb2h5amF6eHZwZ2xucnlwamgiPlVu
c3Vic2NyaWJlIGZyb20gdGhpcyBuZXdzbGV0dGVyPC9hPgogICAgICAgICAgICAgICAgICAgICAg
IHwgPGEgc3R5bGU9ImNvbG9yOiMwMDRGN0Y7IiBocmVmPSJodHRwOi8vOTRjLmJwdWdpamV3LmNu
Lz9ib25peT04NmExN2ZjZTdkZjEwZTZjMTU4ZmRkMGUmcXR5bGVvam49NTM2MTQ5ODk0ODkwMDk0
NzEzNTk4ODA5Jm91cmhuaGN0Zj1xY2NvaHlqYXp4dnBnbG5yeXBqaCI+U2lnbiB1cCB0byBnZXQg
dGhpcyBuZXdzbGV0dGVyPC9hPiB8IDxhIHN0eWxlPSJjb2xvcjojMDA0RjdGOyIgaHJlZj0iaHR0
cDovLzk0Yy5icHVnaWpldy5jbi8/c2F6YWhqbj04NmExN2ZjZTdkZjEwZTZjMTU4ZmRkMGUmYXl0
cW9rdT01MzYxNDk4OTQ4OTAwOTQ3MTM1OTg4MDkmb3VyaG5oY3RmPXFjY29oeWphenh2cGdsbnJ5
cGpoIj5DaGFuZ2UgeW91ciBlbWFpbCBhZGRyZXNzPC9hPjxiciAvPgoKPGEgc3R5bGU9ImNvbG9y
OiMwMDRGN0Y7IiBocmVmPSJodHRwOi8vOTRjLmJwdWdpamV3LmNuLz9qbGFkZWFibz04NmExN2Zj
ZTdkZjEwZTZjMTU4ZmRkMGUmZ2VraXplbj01MzYxNDk4OTQ4OTAwOTQ3MTM1OTg4MDkmb3VyaG5o
Y3RmPXFjY29oeWphenh2cGdsbnJ5cGpoIj5VcGRhdGUgeW91ciBwcm9maWxlPC9hPiB8IDxhIHN0
eWxlPSJjb2xvcjojMDA0RjdGOyIgaHJlZj0iaHR0cDovLzk0Yy5icHVnaWpldy5jbi8/anphbGFj
eWM9ODZhMTdmY2U3ZGYxMGU2YzE1OGZkZDBlJnlxamN5Ym89NTM2MTQ5ODk0ODkwMDk0NzEzNTk4
ODA5Jm91cmhuaGN0Zj1xY2NvaHlqYXp4dnBnbG5yeXBqaCI+Q29udGFjdCBVczwvYT48L3A+Cgo8
cCBzdHlsZT0iZm9udC1mYW1pbHk6J0x1Y2lkYSBHcmFuZGUnLCBBcmlhbCwgSGVsdmV0aWNhLCBW
ZXJkYW5hLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTFweDsgcGFkZGluZzowOyI+CiAgICAgICAg
ICAgICAgICAgIEhhdmluZyB0cm91YmxlIHZpZXdpbmcgdGhpcyBlLW1haWw/CiAgICAgICAgICAg
ICAgICAgIDxiciAvPgoKPGEgc3R5bGU9ImNvbG9yOiM2NjY7IiBocmVmPSJodHRwOi8vOTRjLmJw
dWdpamV3LmNuLz9yZWx1bm9nPTg2YTE3ZmNlN2RmMTBlNmMxNThmZGQwZSZxZ2F3dT01MzYxNDk4
OTQ4OTAwOTQ3MTM1OTg4MDkmb3VyaG5oY3RmPXFjY29oeWphenh2cGdsbnJ5cGpoIj5odHRwOi8v
OTRjLmJwdWdpamV3LmNuLz9xcXhxcmFjPTg2YTE3ZmNlN2RmMTBlNmMxNThmZGQwZSZwdWx1dnlk
PTUzNjE0OTg5NDg5MDA5NDcxMzU5ODgwOSZvdXJobmhjdGY9cWNjb2h5amF6eHZwZ2xucnlwamg8
L2E+PC9wPgo8L3RkPjwvdHI+CjwvdGFibGU+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K
--===============7909439271231364799==--
From hibernate-commits at lists.jboss.org Wed Sep 2 09:14:22 2009
Content-Type: multipart/mixed; boundary="===============3461988016353536879=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17466 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Wed, 02 Sep 2009 09:14:22 -0400
Message-ID: <200909021314.n82DEMo3010174@svn01.web.mwc.hst.phx2.redhat.com>
--===============3461988016353536879==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-02 09:14:22 -0400 (Wed, 02 Sep 2009)
New Revision: 17466
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/custo=
mconstraints.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/getti=
ngstarted.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/customconstraints.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/cust=
omconstraints.xml 2009-09-02 03:06:15 UTC (rev 17465)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/cust=
omconstraints.xml 2009-09-02 13:14:22 UTC (rev 17466)
@@ -64,9 +64,9 @@
Let's write a constraint annotation, that can be used to expre=
ss
that a given string shall either be upper case or lower case. We'll
apply it later on to ensure, that the licensePlate
- field of the Car class from the Getting started chapter =
is
- always an upper-case string.
+ field of the Car class from is always an upper-case
+ string.
=
First we need a way to express the two case modes. We might use
String constants, but a better way to go is to
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/gettingstarted.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/gett=
ingstarted.xml 2009-09-02 03:06:15 UTC (rev 17465)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/gett=
ingstarted.xml 2009-09-02 13:14:22 UTC (rev 17466)
@@ -29,25 +29,25 @@
Getting started
=
This chapter will show you how to get started with Hibernate Valid=
ator
- - the reference implementation (RI) of the Bean Validation API. Be sure =
to
- fulfill the following prerequisites in order to proceed:
+ - the reference implementation (RI) of Bean Validation. For the following
+ quickstart you need:
=
- As the Bean Validation API expresses constraints by the means =
of
- annotations, Java version 5 or later must be installed
+ A JDK >=3D 5
=
- As Apache Maven will
- be used as build tool in the following, Maven must be installed and a
- functioning internet connection is required to allow Maven to downlo=
ad
- all dependent libraries
+ Apache Maven=
para>
=
- Once Maven is installed you should configure your remote
- repository by adding the following to your
+ A functioning Internet connection (Maven has to download all
+ required libraries)
+
+
+
+ A properly configured remote repository. Add the following to =
your
settings.xml: <repositories&=
gt;
<repository>
<id>jboss</id>
@@ -81,9 +81,11 @@
=
When presented with the list of available archetypes in the JBoss
Maven Repository select the
- hibernate-validator-quickstart-archetype and conf=
irm
- the properties. Maven will create your project in the directory
- beanvalidation-gettingstarted. Change into this directory and run:
+ hibernate-validator-quickstart-archetype. After
+ downloading all dependencies confirm the settings by just pressing ent=
er.
+ Maven will create your project in the directory
+ beanvalidation-gettingstarted. Change into this
+ directory and run:
=
mvn testYou should see some
compiling and testing action taking place. Time to look at the actual
@@ -93,30 +95,35 @@
Applying constraints to a model class
=
- Open the project in the IDE of your choice (for Eclipse, you may
- type mvn eclipse:eclipse to create a standard Eclipse project
- configuration OR you may use the M2Eclipse plugin. NetBe=
ans
- has great Maven support too, as described here) and =
open
- the class Car:
+ Open the project in the IDE of your choice and have a look at the
+ class Car:
=
- package com.mycompany;
+
+ Eclipse users can type mvn eclipse:eclipse to create a standard
+ Eclipse project configuration or they use the M2Eclipse plugin. Net=
Beans
+ and Intellij have great built-in Maven support.
+
=
+
+ Class Car annotated with constraints
+
+ package com.mycompany;
+
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
=
public class Car {
=
- @NotNull
+ @NotNull
private String manufacturer;
=
- @NotNull
- @Size(min =3D 2, max =3D 14)
+ @NotNull
+ @Size(min =3D 2, max =3D 14)
private String licensePlate;
=
- @Min(2)
+ @Min(2)
private int seatCount;
=
public Car(String manufacturer, String licencePlate, int seatCount) {
@@ -127,12 +134,10 @@
}
=
//getters and setters ...
-
-}
-
- @NotNull, @Size and
- @Min are so-called constraint annotions, that we
- use to declare constraints, which shall be applied to the fields of a
+}
+ @NotNull, @Size
+ and @Min are so-called constraint annotations, =
that
+ we use to declare constraints, which shall be applied to the fields of=
a
Car instance:
=
@@ -150,12 +155,15 @@
=
- To perform a validation of these constraints, we use the
- Validator interface defined by the specificatio=
n.
- Let's try it in a test for our Car class:
+ To perform a validation of these constraints, we use a
+ Validator instance. Let's have a look at the
+ CarTest class:
=
- package com.mycompany;
+
+ Class CarTest showing validation examples
=
+ package com.mycompany;
+
import static org.junit.Assert.*;
=
import java.util.Set;
@@ -187,8 +195,7 @@
validator.validate(car);
=
assertEquals(1, constraintViolations.size());
- assertEquals(
- "may not be null", constraintViolations.iterator().next().getM=
essage());
+ assertEquals("may not be null", constraintViolations.iterator().ne=
xt().getMessage());
}
=
@Test
@@ -200,8 +207,7 @@
validator.validate(car);
=
assertEquals(1, constraintViolations.size());
- assertEquals(
- "size must be between 2 and 14", constraintViolations.iterator=
().next().getMessage());
+ assertEquals("size must be between 2 and 14", constraintViolations=
.iterator().next().getMessage());
}
=
@Test
@@ -213,8 +219,7 @@
validator.validate(car);
=
assertEquals(1, constraintViolations.size());
- assertEquals(
- "must be greater than or equal to 2", constraintViolations.ite=
rator().next().getMessage());
+ assertEquals("must be greater than or equal to 2", constraintViola=
tions.iterator().next().getMessage());
}
=
@Test
@@ -227,20 +232,21 @@
=
assertEquals(0, constraintViolations.size());
}
-}
+}
+
=
In the setUp() method we get a
- Validator object from the
+ Validator instance from the
ValidatorFactory. A
Validator instance is thread-safe and may be re=
used
multiple times, therefore we store it as field of our test class. We c=
an
- use the validator now to validate the different car objects in the test
+ use the validator now to validate the different car instances in the t=
est
methods.
=
The validate() method returns a set of
ConstraintViolation objects, which we can itera=
te
- through in order to see which validation errors occured. The first thr=
ee
- test methods show some expected constraint violations:
+ in order to see which validation errors occurred. The first three test
+ methods show some expected constraint violations:
=
@@ -259,21 +265,20 @@
=
- If the object could be validated successfully (as in
- carIsValid()),
+ If the object could be validated successfully,
validate() returns an empty set.
=
Note that we only use classes from the package
- javax.validation, which stems from the Bean Validat=
ion
- standard API. As we don't reference any classes of the RI directly, it
- would be no problem to switch to another implementation of the API, sh=
ould
- that need arise.
+ javax.validation from the Bean Validation API. As we
+ don't reference any classes of the RI directly, it would be no problem=
to
+ switch to another implementation of the API, should that need
+ arise.
=
Where to go next?
=
That concludes our 5 minute tour through the world of the Bean
- Validation RI.
+ Validation RI.
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-02 03:06:15 UTC (rev 17465)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-02 13:14:22 UTC (rev 17466)
@@ -25,16 +25,39 @@
- Object validation
+ Basic validation
=
+ In this chapter we will see in more detail how to use Bean Validat=
ion
+ to validate constraints for a given entity model. We will also learn whi=
ch
+ default constraints the specification provides and which additional
+ constraints are only provided by Hibernate Validator. Let's start with h=
ow
+ to add constraints to an entity.
+
Annotating your model
=
- Using the Bean Validation API validation constraints are express=
ed
- via Java 5 annotations. In this section we show how to annotate your
- object model with Bean Validation constraint annotations.
+ Constraints in Bean Validation are expressed via Java annotation=
s.
+ In this section we show how to annotate an object model with these
+ annotations. We have to differentiate between three different type of
+ constraint annotations - class-, field- and property-level
+ annotations.
=
+
+ Not all constraints can be placed on any of these levels. In
+ fact all the default constraints defined by Bean Validation cannot=
be
+ places at class level. The java.lang.annotation.Target annotation
+ placed on the constraint annotation itself determines on which
+ elements a constraint can be placed. See also
+
+
+ Class-level
+ annotations
+
+ TODO
+
+
+ Field level annotations
=
One way for expressing constraints is to annotate the fields o=
f a
@@ -116,12 +139,6 @@
=
- Class-level annotations
-
- TODO
-
-
- Annotated interfaces and super-classes
=
When validating an object that implements an interface or exte=
nds
--===============3461988016353536879==--
From hibernate-commits at lists.jboss.org Wed Sep 2 09:14:43 2009
Content-Type: multipart/mixed; boundary="===============1226638039117992140=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17467 -
validator/trunk/hibernate-validator/src/main/docbook/en-US.
Date: Wed, 02 Sep 2009 09:14:42 -0400
Message-ID: <200909021314.n82DEg4Z010234@svn01.web.mwc.hst.phx2.redhat.com>
--===============1226638039117992140==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-02 09:14:42 -0400 (Wed, 02 Sep 2009)
New Revision: 17467
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/master=
.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml 2=
009-09-02 13:14:22 UTC (rev 17466)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml 2=
009-09-02 13:14:42 UTC (rev 17467)
@@ -70,11 +70,11 @@
the same validation logic is implemented in each layer, proving time
consuming and error-prone. To avoid duplication of these validations in
each layer, developers often bundle validation logic directly into the
- domain model, cluttering domain classes with validation code that is, =
in
- fact, metadata about the class itself.
+ domain model, cluttering domain classes with validation code which in =
fact
+ is metadata about the class itself.
=
JSR 303 - Bean Validation - defines a metadata model and API for
- JavaBean validation. The default metadata source is annotations, with =
the
+ entity validation. The default metadata source is annotations, with the
ability to override and extend the meta-data through the use of XML. T=
he
API is not tied to a specific application tier or programming model. I=
t is
specifically not tied to either the web tier or the persistence tier, =
and
@@ -98,9 +98,18 @@
=
-
-
-
-
-
+
+
+
+
+
+
+
+
+
--===============1226638039117992140==--
From hibernate-commits at lists.jboss.org Wed Sep 2 09:24:18 2009
Content-Type: multipart/mixed; boundary="===============8782459661655523874=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17468 - in validator/trunk:
hibernate-validator and 3 other directories.
Date: Wed, 02 Sep 2009 09:24:18 -0400
Message-ID: <200909021324.n82DOIPU012425@svn01.web.mwc.hst.phx2.redhat.com>
--===============8782459661655523874==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-02 09:24:17 -0400 (Wed, 02 Sep 2009)
New Revision: 17468
Modified:
validator/trunk/
validator/trunk/hibernate-validator-archetype/
validator/trunk/hibernate-validator-legacy/
validator/trunk/hibernate-validator-tck-runner/
validator/trunk/hibernate-validator/
Log:
Updated svn ignore patterns
Property changes on: validator/trunk
___________________________________________________________________
Name: svn:ignore
- target
build
*.iml
*.ipr
test_output
+ target
*.iml
*.ipr
.settings
.classpath
.project
.DS_Store
._*
Property changes on: validator/trunk/hibernate-validator
___________________________________________________________________
Name: svn:ignore
- target
build
*.iml
*.ipr
test_output
+ target
*.iml
*.ipr
.classpath
.project
.settings
._*
.DS_Store
Property changes on: validator/trunk/hibernate-validator-archetype
___________________________________________________________________
Name: svn:ignore
- target
build
*.iml
*.ipr
test_output
+ target
*.iml
*.ipr
.settings
.classpath
.project
Property changes on: validator/trunk/hibernate-validator-legacy
___________________________________________________________________
Name: svn:ignore
- target
build
*.iml
*.ipr
test_output
+ target
*.iml
*.ipr
.settings
.classpath
.project
._*
Property changes on: validator/trunk/hibernate-validator-tck-runner
___________________________________________________________________
Name: svn:ignore
- target
build
*.iml
*.ipr
test_output
+ target
*.iml
*.ipr
.settings
.classpath
.project
--===============8782459661655523874==--
From hibernate-commits at lists.jboss.org Wed Sep 2 10:24:00 2009
Content-Type: multipart/mixed; boundary="===============7835014869498380620=="
MIME-Version: 1.0
From: Billy Hysepar
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] General plan
Date: Wed, 02 Sep 2009 10:23:58 -0400
Message-ID: <6274CN.54314249.60731114615817RHFKGLOIBPZAAMQ686@cfc-8a546c80467>
--===============7835014869498380620==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
--===============7835014869498380620==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVu
dD0iZW4tdXMiPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgo8dGl0bGU+TmV3c2xldHRlciAtIFNlcHRlbWJl
ciAyMDA5PC90aXRsZT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KPCEtLQpzcGFuLmFwcGxlLXN0
eWxlLXNwYW4KCXt9Ci0tPgo8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keSBiZ2NvbG9yPSIjRTZFQ0VD
Ij4KCiAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW46MTBweCA1cHg7IHdpZHRoOiA3NTBweDsg
dGV4dC1hbGlnbjogY2VudGVyOyI+CgoJCQk8Yj4KCQkJPGZvbnQgc2l6ZT0iMSIgZmFjZT0iVmVy
ZGFuYSIgY29sb3I9IiM5OTk5OTkiPgoJCQk8YSBocmVmPSJodHRwOi8vMjI3NS5scGFkdWN1bS5j
bi8/dWNxbGlnPTYxODc0NDI0OWVhMGM1MTIyNjkxOWQmanNpY2lhdXpqdz0zMDU0MjIxMjU5NjA3
MzExMTQ2MTU4JnV0cmhmPWdsb2licHphYW1xanIiPlJlYWQgdGhpcyBOZXdzbGV0dGVyIE9ubGlu
ZTwvYT48YnI+CgkJCVlvdSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgYXM6IGhpYmVybmF0ZS1j
b21taXRzQGxpc3RzLmpib3NzLm9yZzxicj4KCQkJT3ZlciAzNjAsMDAwIFN1YnNjcmliZXJzIGFu
ZCBHcm93aW5nPGJyPgoJCQk8L2ZvbnQ+PGZvbnQgZmFjZT0iVmVyZGFuYSI+PGZvbnQgc2l6ZT0i
MSI+PGZvbnQgY29sb3I9IiMwMDAwMDAiPgoJICAgICAgICA8YSBocmVmPSJodHRwOi8vYjcyMjcu
bHBhZHVjdW0uY24vP3VoanN1c2p5PTYxODc0NDI0OWVhMGM1MTIyNjkxOWQmcW5qaXhxYWJlej0z
MDU0MjIxMjU5NjA3MzExMTQ2MTU4JnV0cmhmPWdsb2licHphYW1xanIiPjxmb250IGNvbG9yPSIj
OTk5OTk5Ij5TdWJzY3JpYmU8L2ZvbnQ+PC9hPjwvZm9udD48Zm9udCBjb2xvcj0iIzk5OTk5OSI+
CgkJCXwKCQkJPC9mb250PgoKCSAgICAgICAgPGEgaHJlZj0iaHR0cDovL2I3MjI3LmxwYWR1Y3Vt
LmNuLz9hbG9yZXNhcnVmPTYxODc0NDI0OWVhMGM1MTIyNjkxOWQma2pqZnF0aXdlPTMwNTQyMjEy
NTk2MDczMTExNDYxNTgmdXRyaGY9Z2xvaWJwemFhbXFqciI+CgkgICAgICAgIDxmb250IGNvbG9y
PSIjOTk5OTk5Ij5VbnN1YnNjcmliZTwvZm9udD48L2E+PGZvbnQgY29sb3I9IiM5OTk5OTkiPiB8
CgkgICAgICAgIDwvZm9udD4KCSAgICAgICAgPC9mb250PgoJICAgICAgICA8YSBocmVmPSJodHRw
Oi8vYjcyMjcubHBhZHVjdW0uY24vP2lyb2xlbW92aj02MTg3NDQyNDllYTBjNTEyMjY5MTlkJnFh
dGFseWt1YT0zMDU0MjIxMjU5NjA3MzExMTQ2MTU4JnV0cmhmPWdsb2licHphYW1xanIiPgoJICAg
ICAgICA8Zm9udCBzaXplPSIxIiBjb2xvcj0iIzk5OTk5OSI+Q2hhbmdlIEFkZHJlc3M8L2ZvbnQ+
PC9hPjwvZm9udD48L2I+PHAgc3R5bGU9Im1hcmdpbjoxMHB4IDVweDsgIiBhbGlnbj0ibGVmdCI+
CgkJCTx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSI3NTEiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFk
ZGluZz0iMCI+CgkJCQk8dHI+CgkJCQkJPHRkIGNvbHNwYW49IjMiPgoJCQkJCSZuYnNwOzwvdGQ+
CgoJCQkJPC90cj4KCQkJCTx0cj4KCQkJCTx0ZCBiZ2NvbG9yPSIjNzQ5Mjk0IiBib3JkZXJjb2xv
cj0iI0ZGRkZGRiIgc3R5bGU9ImJvcmRlci1zdHlsZTpub25lOyBib3JkZXItd2lkdGg6bWVkaXVt
OyAiIGFsaWduPSJsZWZ0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjUlIj4KCQkJCTxwIHN0eWxlPSJt
YXJnaW4tbGVmdDogNXB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KCQkJCTxmb250IGZhY2U9IlZl
cmRhbmEiIHNpemU9IjIiIGNvbG9yPSIjRkZGRkZGIj5TZXB0ZW1iZXIgMjAwOTwvZm9udD48L3Rk
PgoJCQkJPHRkIGJnY29sb3I9IiM3NDkyOTQiIGJvcmRlcmNvbG9yPSIjRkZGRkZGIiBzdHlsZT0i
Ym9yZGVyLXN0eWxlOm5vbmU7IGJvcmRlci13aWR0aDptZWRpdW07ICIgYWxpZ249ImxlZnQiIGhl
aWdodD0iMjAiIHdpZHRoPSI1MSUiPgoJCQkJPHAgYWxpZ249ImNlbnRlciI+CgkJCQk8YSBocmVm
PSJodHRwOi8vYjcyMjcubHBhZHVjdW0uY24vP2licWRhZ29xPTYxODc0NDI0OWVhMGM1MTIyNjkx
OWQmb2dpZHU9MzA1NDIyMTI1OTYwNzMxMTE0NjE1OCZ1dHJoZj1nbG9pYnB6YWFtcWpyIj4KCgkJ
CQk8Zm9udCBjb2xvcj0iI0ZGRkZGRiIgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+UHJpbnRlciBG
cmllbmRseQoJCQkJcGRmPC9mb250PjwvYT48L3RkPgoJCQkJPHRkIGJnY29sb3I9IiM3NDkyOTQi
IGJvcmRlcmNvbG9yPSIjRkZGRkZGIiBzdHlsZT0iYm9yZGVyLXN0eWxlOm5vbmU7IGJvcmRlci13
aWR0aDptZWRpdW07ICIgYWxpZ249ImxlZnQiIGhlaWdodD0iMjAiPgoJCQkJPHAgYWxpZ249InJp
Z2h0IiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1cHgiPgoJCQkJPGZvbnQgZmFjZT0iVmVyZGFuYSIg
c2l6ZT0iMiIgY29sb3I9IiNGRkZGRkYiPlZvbC4gMiBJc3N1ZSA5PC9mb250PjwvdGQ+CgkJICAJ
CTwvdHI+CgkJCQk8dHI+CgkJCQk8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgYm9yZGVyY29sb3I9IiNG
RkZGRkYiIHN0eWxlPSJib3JkZXItc3R5bGU6bm9uZTsgYm9yZGVyLXdpZHRoOm1lZGl1bTsgIiBh
bGlnbj0ibGVmdCIgaGVpZ2h0PSIyMCIgY29sc3Bhbj0iMyI+CgkJPGRpdiBhbGlnbj0ibGVmdCI+
CgoJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNw
YWNpbmc9IjAiIHN0eWxlPSJib3JkZXItbGVmdC13aWR0aDogMHB4OyBib3JkZXItcmlnaHQtd2lk
dGg6IDBweDsgYm9yZGVyLXRvcC13aWR0aDogMHB4OyIgYWxpZ249ImxlZnQiPgoJCQk8dHI+CgkJ
CQk8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgYm9yZGVyY29sb3I9IiNGRkZGRkYiIHN0eWxlPSJib3Jk
ZXItc3R5bGU6bm9uZTsgYm9yZGVyLXdpZHRoOm1lZGl1bTsgIiBhbGlnbj0ibGVmdCIgaGVpZ2h0
PSIyMCIgd2lkdGg9IjI1JSIgdmFsaWduPSJ0b3AiPgoJCQkJPGZvbnQgZmFjZT0iVmVyZGFuYSI+
CgkJCQk8cCBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWFyZ2luOiAxMHB4IDVweCI+CgkJCQkJCTxi
Pjxmb250IGNvbG9yPSIjMDAwMDAwIiBzaXplPSIxIj4KCQkJCQkJPGEgaHJlZj0iaHR0cDovL2I3
MjI3LmxwYWR1Y3VtLmNuLz9laWJ5ZT02MTg3NDQyNDllYTBjNTEyMjY5MTlkJnV3amlxbz0zMDU0
MjIxMjU5NjA3MzExMTQ2MTU4JnV0cmhmPWdsb2licHphYW1xanIiPgoJCQkJCQlQREYgRmlsZTwv
YT48L2ZvbnQ+PC9iPjxmb250IGZhY2U9IlZlcmRhbmEiIHNpemU9IjEiPjxicj4KCQkJCSAgICAg
ICAgICAgIDxiPgoJCQkJICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2I3MjI3LmxwYWR1Y3Vt
LmNuLz9vbWpydW49NjE4NzQ0MjQ5ZWEwYzUxMjI2OTE5ZCZqaWJhaGF1PTMwNTQyMjEyNTk2MDcz
MTExNDYxNTgmdXRyaGY9Z2xvaWJwemFhbXFqciI+CgkJCQkJCVByZXZpb3VzIE5ld3NsZXR0ZXJz
PC9hPjwvYj48YnI+CgoJCQkJICAgICAgICAgICAgPGI+PHNwYW4gbGFuZz0iZW4tdXMiPjxpPgoJ
CQkJICAgICAgICAgICAgPGJyPgoJCQkJICAgICAgICAgICAgV2UgZW5jb3VyYWdlIHlvdSB0byBw
YXNzIHRoaXMgbmV3c2xldHRlciBhbG9uZyB0bwoJCQkJCQlmcmllbmRzLjxicj4KCQkJCQkJPC9p
Pjwvc3Bhbj48L2I+PGJyPgoJCQkJCQlXZSBoYXZlIGEgc3RyaWN0IHByaXZhY3kgcG9saWN5IGFu
ZCBkbyBub3Qgc2hhcmUgeW91cgoJCQkJCQllLW1haWwgPGJyPmFkZHJlc3Mgd2l0aCBhbnlvbmUg
ZXhjZXB0IGFzIG5lZWRlZCBmb3IgdGhlCgkJCQkJCW5ld3NsZXR0ZXIgcHJvZHVjdGlvbiBwcm9j
ZXNzLjwvZm9udD48L2ZvbnQ+PC90ZD4KCQkJCTx0ZCBiZ2NvbG9yPSIjRkZGRkZGIiBib3JkZXJj
b2xvcj0iI0ZGRkZGRiIgc3R5bGU9ImJvcmRlci1zdHlsZTpub25lOyBib3JkZXItd2lkdGg6bWVk
aXVtOyAiIGFsaWduPSJsZWZ0IiBoZWlnaHQ9IjIwIiB2YWxpZ249InRvcCIgd2lkdGg9Ijc1JSI+
CgkJCQkJCTxwIHN0eWxlPSJtYXJnaW46IDEwcHggNXB4IiBhbGlnbj0icmlnaHQiPgoKCQkJCQkJ
PGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+CgkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9iNzIy
Ny5scGFkdWN1bS5jbi8/YXR1c3F1aWQ9NjE4NzQ0MjQ5ZWEwYzUxMjI2OTE5ZCZpemFla2lzPTMw
NTQyMjEyNTk2MDczMTExNDYxNTgmdXRyaGY9Z2xvaWJwemFhbXFqciI+CgkJCQkJCURpc2N1c3Mg
VGhpcyBOZXdzbGV0dGVyIFdpdGggT3RoZXJzPC9hPjwvZm9udD48L3A+CgkJCQkJPHAgc3R5bGU9
Im1hcmdpbjogMTBweCA1cHg7IGxpbmUtaGVpZ2h0OjE1MCUiPjxiPgoJCQkJCTxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTogVmVyZGFuYSI+V2hlbiB5b3VyIGJlZCBlbnRodXNpYXNtCgkJCQkJaXMg
YXQgbmVhci16ZXJvIGxldmVsLCB5b3UgbmVlZCBzb21ldGhpbmcgdG8gYm9vc3QgaXQhPC9zcGFu
PjwvYj48L3A+CgkJCQkJPHAgc3R5bGU9Im1hcmdpbjogMTBweCA1cHg7IGxpbmUtaGVpZ2h0OjE1
MCUiPgoJCQkJCTxpbWcgYWx0PSJzcGFjZXIuZ2lmIiBzcmM9Imh0dHA6Ly9iNzIyNy5scGFkdWN1
bS5jbi9zcGFjZXIuZ2lmIj48L3A+CgkJCQkJCQkJPHAgc3R5bGU9Im1hcmdpbjogMTBweCA1cHg7
IGxpbmUtaGVpZ2h0OjE1MCUiPgoJCQkJCQkJCTxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVy
ZGFuYSI+CgkJCQkJCQkJPGZvbnQgc2l6ZT0iMiI+V2UgaGF2ZSB0aGUgbW9zdCB0aW1lLXRlc3Rl
ZAoJCQkJCQkJCWVmZmVjdGl2ZSBib29zdGVycyBhdmFpbGFibGUgZm9yIG9yZGVyaW5nIG9uIG91
cgoJCQkJCQkJCXNpdGUuIFRoZSBvbmx5IHR3byB0aGluZ3MgeW91IGxvc2UgYXJlOjxicj4tIFlv
dQoJCQkJCQkJCWxvc2UgeW91ciAkMSBmb3IgZXZlcnkgcGlsdWxlIHlvdSBidXkgKGNvc3RzCgkJ
CQkJCQkJbGlrZSBhIGN1cCBvZiBjb2ZmZWUhKTxicj4tIFlvdSBzYXkgZ29vZGJ5ZSB0bwoJCQkJ
CQkJCXlvdXIgcHJvYmxlbXMgd2l0aCBsYWRpZXMuPGJyPjwvZm9udD48L3NwYW4+PC9wPgoJCQkJ
CQkJCTxwIHN0eWxlPSJtYXJnaW46IDEwcHggNXB4OyBsaW5lLWhlaWdodDoxNTAlOyB0ZXh0LWFs
aWduOiBjZW50ZXI7Ij4KCQkJCQkJCQk8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7
IGNvbG9yOiAjQTdCNTgwOyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiBsYXJnZTsiPgoJ
CQkJCQkJCVlvdSBzaG91bGQgdHJ5IGl0LCBtYW4hPC9zcGFuPjwvcD4KCQkJCQkJPHAgc3R5bGU9
Im1hcmdpbjogMTBweCA1cHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxiPgoJCQkJCQkJCQkJPGZv
bnQgc2l6ZT0iMSIgZmFjZT0iVmVyZGFuYSI+CgkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9hOWVhLmxw
YWR1Y3VtLmNuLz96dXhqdz02MTg3NDQyNDllYTBjNTEyMjY5MTlkJmRxYWhhZmlsZW09MzA1NDIy
MTI1OTYwNzMxMTE0NjE1OCZ1dHJoZj1nbG9pYnB6YWFtcWpyIj4KCQkJCQkJPHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZTogbGFyZ2UiPk1PUkU8L3NwYW4+PC9hPjwvZm9udD48L2I+PC9wPgoJCQkJCTxo
ciBjb2xvcj0iI0E3QjU4MCIgc2l6ZT0iMSIgd2lkdGg9Ijk1JSI+CgoJCQkJCTwvdGQ+CgkJICA8
L3RyPgoJCQk8dHI+CgkJCQk8dGQgYmdjb2xvcj0iIzc0OTI5NCIgYm9yZGVyY29sb3I9IiNGRkZG
RkYiIHN0eWxlPSJib3JkZXItc3R5bGU6bm9uZTsgYm9yZGVyLXdpZHRoOm1lZGl1bTsgIiBhbGln
bj0ibGVmdCIgaGVpZ2h0PSIyMCIgd2lkdGg9IjI1JSIgdmFsaWduPSJ0b3AiPgoJCQkJJm5ic3A7
PC90ZD4KCQkJCTx0ZCBiZ2NvbG9yPSIjNzQ5Mjk0IiBib3JkZXJjb2xvcj0iI0ZGRkZGRiIgc3R5
bGU9ImJvcmRlci1zdHlsZTpub25lOyBib3JkZXItd2lkdGg6bWVkaXVtOyAiIGFsaWduPSJsZWZ0
IiBoZWlnaHQ9IjIwIiB2YWxpZ249InRvcCIgd2lkdGg9Ijc1JSI+CgoJCQkJCQkmbmJzcDs8L3Rk
PgoJCSAgPC90cj4KCQkJPC90YWJsZT4KCSAgCTwvZGl2PgoJICAJCQk8cD4mbmJzcDs8L3RkPgoJ
CQkJPC90cj4KCQkJPC90YWJsZT4KCgk8L2JvZHk+Cgo8L2h0bWw+Cg==
--===============7835014869498380620==--
From hibernate-commits at lists.jboss.org Wed Sep 2 11:47:48 2009
Content-Type: multipart/mixed; boundary="===============8920997148655850734=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17469 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Wed, 02 Sep 2009 11:47:48 -0400
Message-ID: <200909021547.n82Flm9I007335@svn01.web.mwc.hst.phx2.redhat.com>
--===============8920997148655850734==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-02 11:47:47 -0400 (Wed, 02 Sep 2009)
New Revision: 17469
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/custo=
mconstraints.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/defin=
econstraints.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/getti=
ngstarted.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/customconstraints.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/cust=
omconstraints.xml 2009-09-02 13:24:17 UTC (rev 17468)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/cust=
omconstraints.xml 2009-09-02 15:47:47 UTC (rev 17469)
@@ -25,7 +25,7 @@
- Custom constraints
+ Creating custom constraints
=
Though the Bean Validation API defines a whole bunch of standard
constraint annotations such as @NotNull,
@@ -251,10 +251,10 @@
Using the constraint
=
Now that our first custom constraint is completed, we can use =
it
- in the Car class from the Getting started chapter =
to
- specify that the licensePlate field shall only
- contain upper-case strings:
+ in the Car class from the chapter to specify that the
+ licensePlate field shall only contain upper-case
+ strings:
=
package com.mycompany;
=
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/defineconstraints.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/defi=
neconstraints.xml 2009-09-02 13:24:17 UTC (rev 17468)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/defi=
neconstraints.xml 2009-09-02 15:47:47 UTC (rev 17469)
@@ -1,4 +1,4 @@
-
+
-
-
-
+
Defining constraints
=
@@ -38,7 +37,7 @@
element.
=
-
+ Built in constraints
=
Hibernate Validator comes with some built-in constraints, which
@@ -491,4 +490,4 @@
The name property will be checked for nullity when the Dog bean =
is
validated.
-
\ No newline at end of file
+
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/gettingstarted.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/gett=
ingstarted.xml 2009-09-02 13:24:17 UTC (rev 17468)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/gett=
ingstarted.xml 2009-09-02 15:47:47 UTC (rev 17469)
@@ -105,7 +105,7 @@
and Intellij have great built-in Maven support.
=
-
+ Class Car annotated with constraints
=
package com.mycompany;
@@ -127,7 +127,6 @@
private int seatCount;
=
public Car(String manufacturer, String licencePlate, int seatCount) {
-
this.manufacturer =3D manufacturer;
this.licensePlate =3D licencePlate;
this.seatCount =3D seatCount;
@@ -188,7 +187,6 @@
=
@Test
public void manufacturerIsNull() {
-
Car car =3D new Car(null, "DD-AB-123", 4);
=
Set<ConstraintViolation<Car>> constraintViolations =3D
@@ -200,7 +198,6 @@
=
@Test
public void licensePlateTooShort() {
-
Car car =3D new Car("Morris", "D", 4);
=
Set<ConstraintViolation<Car>> constraintViolations =3D =
@@ -212,7 +209,6 @@
=
@Test
public void seatCountTooLow() {
-
Car car =3D new Car("Morris", "DD-AB-123", 1);
=
Set<ConstraintViolation<Car>> constraintViolations =3D
@@ -224,7 +220,6 @@
=
@Test
public void carIsValid() {
-
Car car =3D new Car("Morris", "DD-AB-123", 2);
=
Set<ConstraintViolation<Car>> constraintViolations =3D
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-02 13:24:17 UTC (rev 17468)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-02 15:47:47 UTC (rev 17469)
@@ -25,7 +25,7 @@
- Basic validation
+ Validation step by step
=
In this chapter we will see in more detail how to use Bean Validat=
ion
to validate constraints for a given entity model. We will also learn whi=
ch
@@ -34,7 +34,7 @@
to add constraints to an entity.
=
- Annotating your model
+ Defining constraints
=
Constraints in Bean Validation are expressed via Java annotation=
s.
In this section we show how to annotate an object model with these
@@ -42,30 +42,83 @@
constraint annotations - class-, field- and property-level
annotations.
=
-
- Not all constraints can be placed on any of these levels. In
- fact all the default constraints defined by Bean Validation cannot=
be
- places at class level. The java.lang.annotation.Target annotation
- placed on the constraint annotation itself determines on which
- elements a constraint can be placed. See also
-
+
+ Not all constraints can be placed on any of these levels. In f=
act
+ all the default constraints defined by Bean Validation cannot be pla=
ces
+ at class level. The java.lang.annotation.Target annotation placed on=
the
+ constraint annotation itself determines on which elements a constrai=
nt
+ can be placed. See also
+
=
Class-level
- annotations
+ constraints
=
- TODO
+ When a constraint annotation is placed on class level the class
+ instance itself passed to the
+ ConstraintValidator. Class level constraints =
are
+ useful if it is necessary to inspect more than a single property of =
the
+ class to validate it or if a correlation between different state
+ variables has to be evaluated. In the following example we add the
+ properties horsePower and
+ kiloWatt to the class Car.
+ We also add the constraint ValidCar to the class itself. We will lat=
er
+ see how we can actually create this custom constraint (see ). For now we can just ass=
ume
+ that this constraints will for example ensure that the value for
+ kiloWatt is 0.7456 *
+ horsePower.
+
+
+ Class Car with added horsePower and killoWatt
+ properties
+
+ package com.mycompany;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+@ValidCar
+public class Car {
+
+ @NotNull
+ private String manufacturer;
+
+ @NotNull
+ @Size(min =3D 2, max =3D 14)
+ private String licensePlate;
+
+ @Min(2)
+ private int seatCount;
+
+ private int horsePower;
+
+ private double kiloWatt;
+ =
+ public Car(String manufacturer, String licencePlate, int seatCount) {
+ this.manufacturer =3D manufacturer;
+ this.licensePlate =3D licencePlate;
+ this.seatCount =3D seatCount;
+ }
+
+ //getters and setters ...
+}
+
=
- Field level annotations
+ Field-level constraints
=
- One way for expressing constraints is to annotate the fields o=
f a
- class with constraint annotations. The following listing shows a sim=
ple
- example:
+ Constraints can also be expressed by annotating a field of a
+ class. The following listing shows a simple example:
=
- package com.mycompany;
+
+ Example for field level constraints
=
+ package com.mycompany;
+
import javax.validation.constraints.NotNull;
=
public class Car {
@@ -74,24 +127,32 @@
private String manufacturer;
=
public Car(String manufacturer) {
-
this.manufacturer =3D manufacturer;
}
}
+
+
+ When using field level constraints field access strategy is us=
ed
+ to access the value to be value. This means the bean validation prov=
ider
+ accesses the instance variable directly.
=
- Property level annotations
+ Property-level constraints
=
If your model class adheres to the JavaBeans
- standard (meaning basically, there are getter and setter methods for=
the
- properties of the class), it is also possible to annotate the proper=
ties
- of a bean class instead of its fields. Note that the property's gett=
er
- method has to be annotated, not its setter method:
+ standard, it is also possible to annotate the properties of a bean c=
lass
+ instead of its fields.
+ The property's getter method has to be annotated, not its
+ setter.
+
=
- package com.mycompany;
+
+ Example for property level constraints
=
+ package com.mycompany;
+
import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.NotNull;
=
@@ -100,8 +161,7 @@
private String manufacturer;
=
private boolean isRegistered;
- =
- =
+ =
public Car(String manufacturer, boolean isRegistered) {
super();
this.manufacturer =3D manufacturer;
@@ -126,20 +186,21 @@
this.isRegistered =3D isRegistered;
}
}
+
=
- Generally it is considered a good practice to stick either with
- field or with property annotation within one mo=
del
- class for the sake of readability. It is not recommended to annotate=
a
- field and the accompanying getter method as this
- would cause the field to be validated twice.
+ When using property level constraints property access strategy=
is
+ used to access the value to be validated. This means the bean valida=
tion
+ provider accesses the state via the property accessor method.
=
- TODO: Make it explcit that where the difference lies between f=
iled
- and property level annotations. Depending where I place the annotati=
on
- the value to be validated gets accessed in different ways!
+ Generally it is recommended to stick either to field
+ or property annotation within one class. It is =
not
+ recommended to annotate a field and the
+ accompanying getter method as this would cause the field to be valid=
ated
+ twice.
=
- Annotated interfaces and super-classes
+ Constraint inheritance
=
When validating an object that implements an interface or exte=
nds
another class, all constraint annotations on the implemented interfa=
ce
@@ -147,33 +208,11 @@
on the validated object itself. To make things clearer let's have a =
look
at the following example:
=
- //class Car
-package com.mycompany;
+
+ Example for constraint inheritance using RentalCar
=
-import javax.validation.constraints.NotNull;
+ package com.mycompany;
=
-public class Car {
-
- private String manufacturer;
- =
- public Car(String manufacturer) {
- this.manufacturer =3D manufacturer;
- }
-
- @NotNull
- public String getManufacturer() {
- return manufacturer;
- }
-
- public void setManufacturer(String manufacturer) {
- this.manufacturer =3D manufacturer;
- }
-
-}
-
-//class RentalCar
-package com.mycompany;
-
import javax.validation.constraints.NotNull;
=
public class RentalCar extends Car {
@@ -193,16 +232,17 @@
public void setRentalStation(String rentalStation) {
this.rentalStation =3D rentalStation;
}
-
}
+
=
- Our well-known class Car is now extende=
d by
- RentalCar with an additional property,
- rentalStation. If an instance of
- RentalCar is validated now, not only the
- @NotNull constraint at the
- rentalStation property would be validated, but =
also
- the constraint at manufacturer from the parent
+ Our well-known class Car from the getting started section is =
now
+ extended by RentalCar with the additional
+ property rentalStation. If an instance of
+ RentalCar is validated, not only the
+ @NotNull constraint on
+ rentalStation would be validated, but also the
+ constraint at manufacturer from the parent
class.
=
The same would hold true, if Car was an
@@ -218,7 +258,7 @@
=
- Validating object graphs
+ Object graphs
=
The Bean Validation API does not only allow to validate single
objects but also complete object graphs. To do so just annotate a fi=
eld
@@ -228,7 +268,10 @@
@Valid will be validated as well (as will be
their children etc.). The following shows a simple example:
=
- //class Person
+
+ Class Person
+
+
package com.mycompany;
=
import javax.validation.constraints.NotNull;
@@ -250,12 +293,14 @@
public void setName(String name) {
this.name =3D name;
}
- =
-}
+}
+
=
-//class car
-package com.mycompany;
+
+ Adding a driver to the car
=
+ package com.mycompany;
+
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
=
@@ -266,13 +311,12 @@
private Person driver;
=
public Car(Person driver) {
-
this.driver =3D driver;
}
=
//getters and setters ...
-
}
+
=
If an instance of Car is validated, the
referenced Person object will be validated as
@@ -291,14 +335,13 @@
=
- of type java.lang.Iterable (and
- therfore its direct or indirect derivations
- Collection, List a=
nd
- Set)
+ implement java.lang.Iterable
+ (especially Collection,
+ List and Set)
=
- of type java.util.Map
+ implement java.util.Map
=
@@ -306,8 +349,11 @@
cause each contained element to be validated, when the parent object=
is
validated.
=
- package com.mycompany;
+
+ Car with a list of passengers
=
+ package com.mycompany;
+
import java.util.ArrayList;
import java.util.List;
=
@@ -322,40 +368,78 @@
=
@NotNull
@Valid
- private List<Person> passengers =3D new ArrayList<=
;Person>();
+ private List<Person> passengers =3D new ArrayList<Person>(=
);
=
- public Car(List<Person> passengers) {
-
+ public Car(List<Person> passengers) {
this.passengers =3D passengers;
}
=
//getters and setters ...
-
}
+
=
If a Car instance is validated now, a
- ConstraintValidation will be raised, if any of
+ ConstraintValidation will be created, if any =
of
the Person objects contained in the
- passengers list has a null
- name.
+ passengers list has a null name.
+ null values are getting ignored when
+ validating object graphs.
+
=
- Validating your model
+ Validating constraints
=
The Validator interface is the main entry
- point to the Bean Validation API. In the following we first will show =
how
- to obtain Validator instances using the
- bootstrapping mechanism that the API provides. Afterwards you'll learn=
how
- to use the different methods of the Validator
- interfaces followed by an overview of the information that
- ConstraintViolation instances offer.
+ point to Bean Validation. In the following we first will show how to
+ obtain an Validator instance using the different
+ bootstrapping mechanisms. Afterwards we will learn how to use the
+ different methods of the Validator
+ interface.
=
- Obtaining Validator instances
+ Obtaining a Validator instance
=
- TODO: DefaultFactory, customization, note on thread safety
+ The first step towards validating a class instance is to get h=
old
+ of a Validator instance. The road to this
+ instance leads via the Validation class and a
+ ValidatorFactory. The by far easiest way is to
+ use the static
+ Validation.buildDefaultValidatorFactory()
+ method:ValidatorFactory factory =3D Validation.build=
DefaultValidatorFactory();
+Validator validator =3D factory.getValidator();You can al=
so use
+ the method Validation.byDefaultProvider() w=
hich
+ will allow you to configure several aspects of the created Validator
+ instance:Configuration<?> config =3D Validatio=
n.byDefaultProvider().configure();
+config.messageInterpolator(new MyMessageInterpolator())
+ .traversableResolver( new MyTraversableResolver())
+ .constraintValidatorFactory(new MyConstraintValidatorFactory());
+
+ValidatorFactory factory =3D config.buildValidatorFactory();
+Validator validator =3D factory.getValidator();
+We will learn more about
+ MessageInterpolator and
+ TraversableResolver in later chapters.
+
+ Last but not least you can ask for a Configuration object of a
+ specific Bean Validation provider. This is useful if you have more t=
han
+ one Bean Validation provider in your classpath. In this situation you
+ can make an explicit choice about which implementation to use. In the
+ case of Hibernate Validator the Validator creation looks
+ like:ValidatorConfiguration configuration =3D Valida=
tion.byProvider( HibernateValidator.class )
+config.messageInterpolator(new MyMessageInterpolator())
+ .traversableResolver( new MyTraversableResolver())
+ .constraintValidatorFactory(new MyConstraintValidatorFactory());
+
+ValidatorFactory factory =3D config.buildValidatorFactory();
+Validator validator =3D factory.getValidator();
+
+
+ The generated Validator instance is
+ thread safe and can be cached.
+ Now that we have a Validator instanc=
e,
+ let's see how we can use it to validate class instances.
=
@@ -449,8 +533,10 @@
=
- Validation groups
+ Using groups
=
+
+
Group sequences
=
@@ -458,7 +544,223 @@
=
-
-
+
+ Built-in constraints
+
+ Hibernate Validator comes with some built-in constraints, which
+ covers most basic data checks. As we'll see later, you're not limited =
to
+ them, you can literally in a minute write your own constraints.
+
+
+ Built-in constraints
+
+
+
+
+
+
+ Annotation
+
+ Apply on
+
+ Runtime checking
+
+ Hibernate Metadata impact
+
+
+
+
+
+ @Length(min=3D, max=3D)
+
+ property (String)
+
+ check if the string length match the range
+
+ Column length will be set to max
+
+
+
+ @Max(value=3D)
+
+ property (numeric or string representation of a
+ numeric)
+
+ check if the value is less than or equals to max
+
+ Add a check constraint on the column
+
+
+
+ @Min(value=3D)
+
+ property (numeric or string representation of a
+ numeric)
+
+ check if the value is more than or equals to min
+
+ Add a check constraint on the column
+
+
+
+ @NotNull
+
+ property
+
+ check if the value is not null
+
+ Column(s) are not null
+
+
+
+ @NotEmpty
+
+ property
+
+ check if the string is not null nor empty. Check if the
+ connection is not null nor empty
+
+ Column(s) are not null (for String)
+
+
+
+ @Past
+
+ property (date or calendar)
+
+ check if the date is in the past
+
+ Add a check constraint on the column
+
+
+
+ @Future
+
+ property (date or calendar)
+
+ check if the date is in the future
+
+ none
+
+
+
+ @Pattern(regex=3D"regexp", flag=3D) or @Patterns(
+ {@Pattern(...)} )
+
+ property (string)
+
+ check if the property match the regular expression give=
n a
+ match flag (see java.util.regex.Pattern
+ )
+
+ none
+
+
+
+ @Range(min=3D, max=3D)
+
+ property (numeric or string representation of a
+ numeric)
+
+ check if the value is between min and max
+ (included)
+
+ Add a check constraint on the column
+
+
+
+ @Size(min=3D, max=3D)
+
+ property (array, collection, map)
+
+ check if the element size is between min and max
+ (included)
+
+ none
+
+
+
+ @AssertFalse
+
+ property
+
+ check that the method evaluates to false (useful for
+ constraints expressed in code rather than annotations)
+
+ none
+
+
+
+ @AssertTrue
+
+ property
+
+ check that the method evaluates to true (useful for
+ constraints expressed in code rather than annotations)
+
+ none
+
+
+
+ @Valid
+
+ property (object)
+
+ perform validation recursively on the associated object=
. If
+ the object is a Collection or an array, the elements are valid=
ated
+ recursively. If the object is a Map, the value elements are
+ validated recursively.
+
+ none
+
+
+
+ @Email
+
+ property (String)
+
+ check whether the string is conform to the email address
+ specification
+
+ none
+
+
+
+ @CreditCardNumber
+
+ property (String)
+
+ check whether the string is a well formated credit card
+ number (derivative of the Luhn algorithm)
+
+ none
+
+
+
+ @Digits
+
+ property (numeric or string representation of a
+ numeric)
+
+ check whether the property is a number having up to
+ integerDigits integer digits and
+ fractionalDigits fractonal digits
+
+ define column precision and scale
+
+
+
+ @EAN
+
+ property (string)
+
+ check whether the string is a properly formated EAN or
+ UPC-A code
+
+ none
+
+
+
+
--===============8920997148655850734==--
From hibernate-commits at lists.jboss.org Wed Sep 2 14:50:51 2009
Content-Type: multipart/mixed; boundary="===============5302990977050221221=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17470 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Wed, 02 Sep 2009 14:50:51 -0400
Message-ID: <200909021850.n82IopCd009617@svn01.web.mwc.hst.phx2.redhat.com>
--===============5302990977050221221==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-02 14:50:50 -0400 (Wed, 02 Sep 2009)
New Revision: 17470
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-02 15:47:47 UTC (rev 17469)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-02 18:50:50 UTC (rev 17470)
@@ -446,97 +446,174 @@
Validator methods
=
The Validator interface contains three
- methods that can be used to validate entire objects or only single
- object properties.
+ methods that can be used to validate entire object instances or only
+ single properties of an instance.
=
All of these methods return a
- Set<ConstraintViolation>, which will be
+ Set<ConstraintViolation>. The set will =
be
empty, if the validation succeeded. Otherwise a
ConstraintViolation object for each violated
- constraint will be contained.
+ constraint will be added to the set.
=
All the validation methods have a var-args parameter which can=
be
used to specify, which validation groups shall be considered when
- performing the validation. If the parameter is not specified (as in =
the
- following examples) the default validation group will be used. We wi=
ll
- go into more detail on the topic of validation groups in the following
- section.
+ performing the validation. If the parameter is not specified the def=
ault
+ validation group (javax.validation.Default) w=
ill
+ be used. We will go into more detail on the topic of validation grou=
ps
+ in
=
- validate()
+ validate
=
Use the validate() method to perform
- validation of all constraints of a given object. The following lis=
ting
- shows an example:
+ validation of all constraints of a given entity instance. The
+ following listing shows an example:
=
- ValidatorFactory factory =3D Validation.buildDefau=
ltValidatorFactory();
+
+ Usage of
+ Validator.validate()
+
+ ValidatorFactory factory =3D Validation.buildDef=
aultValidatorFactory();
Validator validator =3D factory.getValidator();
=
Car car =3D new Car(null);
=
-Set<ConstraintViolation<Car>> constraintViolations =3D
- validator.validate(car);
+Set<ConstraintViolation<Car>> constraintViolations =3D validat=
or.validate(car);
=
assertEquals(1, constraintViolations.size());
-assertEquals(
- "may not be null", constraintViolations.iterator().next().getMessage()=
);
+assertEquals("may not be null", constraintViolations.iterator().next().get=
Message());
+
=
- validateProperty()
+ validateProperty
=
With help of the validateProperty()=
a
- single named property of a given object can be validated:
+ single named property of a given object can be validated. The prop=
erty
+ name is the JavaBeans property name. @Valid is not honored by this
+ method.
=
- Validator validator =3D Validation.buildDefaultVal=
idatorFactory().getValidator();
+
+ Usage of
+ Validator.validateProperty()
=
+ Validator validator =3D Validation.buildDefaultV=
alidatorFactory().getValidator();
+
Car car =3D new Car(null);
=
-Set<ConstraintViolation<Car>> constraintViolations =3D
- validator.validateProperty(car, "manufacturer");
+Set<ConstraintViolation<Car>> constraintViolations =3D validat=
or.validateProperty(car, "manufacturer");
=
assertEquals(1, constraintViolations.size());
-assertEquals(
- "may not be null", constraintViolations.iterator().next().getMessage()=
);
+assertEquals("may not be null", constraintViolations.iterator().next().get=
Message());
+
+ Validator.validateProperty is for
+ example used in the integration of Bean Validation into JSF
+ 2.
+
=
- validateValue()
+ validateValue
=
Using the validateValue() method you
can check, whether a single property of a given class can be valid=
ated
successfully, if the property had the specified value:
=
- Validator validator =3D Validation.buildDefaultVal=
idatorFactory().getValidator();
+
+ Usage of
+ Validator.validateValue()
=
-Set<ConstraintViolation<Car>> constraintViolations =3D
- validator.validateValue(Car.class, "manufacturer", null);
+ Validator validator =3D Validation.buildDefaultV=
alidatorFactory().getValidator();
=
+Set<ConstraintViolation<Car>> constraintViolations =3D validat=
or.validateValue(Car.class, "manufacturer", null);
+
assertEquals(1, constraintViolations.size());
-assertEquals(
- "may not be null", constraintViolations.iterator().next().getMessage()=
);
-
+assertEquals("may not be null", constraintViolations.iterator().next().get=
Message());
=
-
- getConstraintsForClass()
-
- TODO
+ @Valid is not honored by this method.
+
=
- Working with ConstraintViolations
+ ConstraintViolations explained
=
- TODO: Message interpolation?
+ Now it is time to have a closer look at what a failing validat=
ion
+ returns - a ConstraintViolation. Using the
+ different methods of a ConstraintViolation
+ instance a lot of useful information about the reason of the validat=
ion
+ failure can be determined.
+
+
+ The various ConstraintViolation
+ methods
+
+
+
+
+ Method
+
+ Usage
+
+
+
+ getMessage()
+
+ The interpolated error message.
+
+
+
+ getMessageTemplate()
+
+ The non-interpolated error message.
+
+
+
+ getRootBean()
+
+ The root bean being validated.
+
+
+
+ getRootBeanClass()
+
+ The class of the root bean being validated.
+
+
+
+ getLeafBean()
+
+ If a bean constraint, the bean instance the constrain=
t is
+ applied on. If a property constraint, the bean instance host=
ing
+ the property the constraint is applied on.
+
+
+
+ getPropertyPath()
+
+ The property path to the value from root bean.
+
+
+
+ getInvalidValue()
+
+ The value failing to pass the constraint.
+
+
+
+ getConstraintDescriptor()
+
+ Constraint metadata reported to fail.
+
+
+
+
=
Using groups
=
-
-
Group sequences
=
--===============5302990977050221221==--
From hibernate-commits at lists.jboss.org Wed Sep 2 15:30:35 2009
Content-Type: multipart/mixed; boundary="===============6434418291911128141=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17471 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Wed, 02 Sep 2009 15:30:35 -0400
Message-ID: <200909021930.n82JUZtW017436@svn01.web.mwc.hst.phx2.redhat.com>
--===============6434418291911128141==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-02 15:30:35 -0400 (Wed, 02 Sep 2009)
New Revision: 17471
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-02 18:50:50 UTC (rev 17470)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-02 19:30:35 UTC (rev 17471)
@@ -614,6 +614,17 @@
Using groups
=
+ Groups allow you to restrict the set of constraints applied duri=
ng
+ validation. This allows for example for wizard like validation where f=
or
+ each step of the wizard only a specified subset of all defined constra=
ints
+ get validated. The groups targeted are passed as var-args parameters to
+ validate,
+ validateProperty and
+ validateValue. All constraints belonging to t=
he
+ targeted group are applied during the Section 3.5. When more than one
+ group is requested, the order in which the groups are evaluated is not
+ deterministic.
+
Group sequences
=
@@ -625,7 +636,7 @@
Built-in constraints
=
Hibernate Validator comes with some built-in constraints, which
- covers most basic data checks. As we'll see later, you're not limited =
to
+ covers some basic data checks. As we'll see later, you're not limited =
to
them, you can literally in a minute write your own constraints.
=
--===============6434418291911128141==--
From hibernate-commits at lists.jboss.org Thu Sep 3 07:58:51 2009
Content-Type: multipart/mixed; boundary="===============3080881985353539973=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17472 -
validator/trunk/hibernate-validator.
Date: Thu, 03 Sep 2009 07:58:51 -0400
Message-ID: <200909031158.n83BwpW2018592@svn01.web.mwc.hst.phx2.redhat.com>
--===============3080881985353539973==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-03 07:58:50 -0400 (Thu, 03 Sep 2009)
New Revision: 17472
Modified:
validator/trunk/hibernate-validator/pom.xml
Log:
HV-220 Changed the jdocbook plugin version to the latet version to get new =
Hibernate styles
Modified: validator/trunk/hibernate-validator/pom.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/pom.xml 2009-09-02 19:30:35 UTC (re=
v 17471)
+++ validator/trunk/hibernate-validator/pom.xml 2009-09-03 11:58:50 UTC (re=
v 17472)
@@ -164,19 +164,19 @@
org.jboss.maven.pluginsmaven-jdocbook-plugin
- 2.1.0
+ 2.2.0trueorg.hibernatehibernate-jdocbook-style
- 1.0.2
+ 2.0.0jdocbook-stylemaster.xml
- ${basedir}/src/main/docbook/en-US
+ ${basedir}/src/main/docbook
en-US${basedir}/src/main/docbook/en-US/image=
s
@@ -184,24 +184,27 @@
pdf
- classpath:/xslt/hibernate/=
pdf/main-pdf.xsl
- hibernate-validator-guide.pdf
+ classpath:/xslt/org/hibern=
ate/jdocbook/xslt/pdf.xsl
+ hibernate_reference.pdfhtml_single
- classpath:/xslt/hibernate/=
html/main-single.xsl
+ classpath:/xslt/org/hibern=
ate/jdocbook/xslt/xhtml-single.xslindex.htmlhtml
- classpath:/xslt/hibernate/=
html/main-chunk.xsl
+ classpath:/xslt/org/hibern=
ate/jdocbook/xslt/xhtml.xslindex.htmltrue
+ saxon
+
+
+ 1.72.0-
- true
@@ -216,6 +219,11 @@
+ org.jboss.maven.plugins
+ maven-jdocbook-style-plugin
+ 2.0.0
+
+ maven-assembly-plugin
--===============3080881985353539973==--
From hibernate-commits at lists.jboss.org Thu Sep 3 07:59:19 2009
Content-Type: multipart/mixed; boundary="===============7300975260394772326=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17473 - in
validator/trunk/hibernate-validator/src/main/docbook/en-US: modules and 1
other directory.
Date: Thu, 03 Sep 2009 07:59:18 -0400
Message-ID: <200909031159.n83BxIEX018650@svn01.web.mwc.hst.phx2.redhat.com>
--===============7300975260394772326==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-03 07:59:18 -0400 (Thu, 03 Sep 2009)
New Revision: 17473
Removed:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/check=
constraints.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/exten=
dedri.xml
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/integ=
ration.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlco=
nfiguration.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/master=
.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml 2=
009-09-03 11:58:50 UTC (rev 17472)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml 2=
009-09-03 11:59:18 UTC (rev 17473)
@@ -103,13 +103,4 @@
=
-
-
-
-
-
-
Deleted: validator/trunk/hibernate-validator/src/main/docbook/en-US/modules=
/checkconstraints.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/chec=
kconstraints.xml 2009-09-03 11:58:50 UTC (rev 17472)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/chec=
kconstraints.xml 2009-09-03 11:59:18 UTC (rev 17473)
@@ -1,235 +0,0 @@
-
-
-
-
-
-
- Using the Validator framework
-
- Hibernate Validator is intended to be used to implement multi-laye=
red
- data validation, where constraints are expressed in a single place (the
- annotated domain model) and checked in various different layers of the
- application.
-
- This chapter will cover Hibernate Validator usage for different
- layers
-
-
- Database schema-level validation
-
- Out of the box, Hibernate Annotations will translate the constra=
ints
- you have defined for your entities into mapping metadata. For example,=
if
- a property of your entity is annotated @NotNull, its
- columns will be declared as not null in the DDL sch=
ema
- generated by Hibernate.
-
- Using hbm2ddl, domain model constraints will be expressed into t=
he
- database schema.
-
- If, for some reason, the feature needs to be disabled, set
- hibernate.validator.apply_to_ddl to
- false.
-
-
-
- ORM integration
-
- Hibernate Validator integrates with both Hibernate and all pure =
Java
- Persistence providers
-
-
- Hibernate event-based validation
-
- Hibernate Validator has two built-in Hibernate event listeners.
- Whenever a PreInsertEvent or
- PreUpdateEvent occurs, the listeners will verify =
all
- constraints of the entity instance and throw an exception if any
- constraint is violated. Basically, objects will be checked before any
- inserts and before any updates made by Hibernate. This includes chan=
ges
- applied by cascade! This is the most convenient and the easiest way =
to
- activate the validation process. On constraint violation, the event =
will
- raise a runtime InvalidStateException which
- contains an array of InvalidValues describing each
- failure.
-
- If Hibernate Validator is present in the classpath, Hibernate
- Annotations (or Hibernate EntityManager) will use it transparently. =
If,
- for some reason, you want to disable this integration, set
- hibernate.validator.autoregister_listeners to
- false
-
-
- If the beans are not annotated with validation annotations,
- there is no runtime performance cost.
-
-
- In case you need to manually set the event listeners for Hiber=
nate
- Core, use the following configuration in
- hibernate.cfg.xml:
-
- <hibernate-configuration>
- ...
- <event type=3D"pre-update">
- <listener =
- class=3D"org.hibernate.validator.event.ValidateEventListener"/&g=
t;
- </event>
- <event type=3D"pre-insert">
- <listener =
- class=3D"org.hibernate.validator.event.ValidateEventListener"/&g=
t;
- </event>
-</hibernate-configuration>
-
-
-
- Java Persistence event-based validation
-
- Hibernate Validator is not tied to Hibernate for event based
- validation: a Java Persistence entity listener is available. Wheneve=
r an
- listened entity is persisted or updated, Hibernate Validator will ve=
rify
- all constraints of the entity instance and throw an exception if any
- constraint is violated. Basically, objects will be checked before any
- inserts and before any updates made by the Java Persistence provider.
- This includes changes applied by cascade! On constraint violation, t=
he
- event will raise a runtime InvalidStateException
- which contains an array of InvalidValues describi=
ng
- each failure.
-
- Here is how to make a class validatable:
-
- @Entity
-(a)EntityListeners( JPAValidateListener.class )
-public class Submarine {
- ...
-}
-
-
- Compared to the Hibernate event, the Java Persistence list=
ener
- has two drawbacks. You need to define the entity listener on eve=
ry
- validatable entity. The DDL generated by your provider will not
- reflect the constraints.
-
-
-
-
-
- Application-level validation
-
- Hibernate Validator can be applied anywhere in your application
- code.
-
- ClassValidator personValidator =3D new ClassValidator(=
Person.class );
-ClassValidator addressValidator =3D new ClassValidator( Address.class, Res=
ourceBundle.getBundle("messages", Locale.ENGLISH) );
-
-InvalidValue[] validationMessages =3D addressValidator.getInvalidValues(ad=
dress);
-
- The first two lines prepare the Hibernate Validator for class
- checking. The first one relies upon the error messages embedded in
- Hibernate Validator (see ), the second one uses=
a
- resource bundle for these messages. It is considered a good practice to
- execute these lines once and cache the validator instances.
-
- The third line actually validates the Address
- instance and returns an array of InvalidValues. Your
- application logic will then be able to react to the failure.
-
- You can also check a particular property instead of the whole be=
an.
- This might be useful for property per property user interaction
-
- ClassValidator addressValidator =3D new ClassValidator=
( Address.class, ResourceBundle.getBundle("messages", Locale.ENGLISH) );
-
-//only get city property invalid values
-InvalidValue[] validationMessages =3D addressValidator.getInvalidValues(ad=
dress, "city");
-
-//only get potential city property invalid values
-InvalidValue[] validationMessages =3D addressValidator.getPotentialInvalid=
Values("city", "Paris")
-
-
-
- Presentation layer validation
-
- When working with JSF and JBoss Seam,=
one
- can triggers the validation process at the presentation layer using Se=
am's
- JSF tags <s:validate> and
- <s:validateAll/>, letting the constraints be
- expressed on the model, and the violations presented in the view
-
- <h:form>
- <div>
- <h:messages/>
- </div>
- <s:validateAll>
- <div>
- Country:
- <h:inputText value=3D"#{location.country}" required=3D"true=
"/>
- </div>
- <div>
- Zip code:
- <h:inputText value=3D"#{location.zip}" required=3D"true"/&g=
t;
- </div>
- <div>
- <h:commandButton/>
- </div>
- </s:validateAll>
-</h:form>
-
- Going even further, and adding Ajax4JSF
- to the loop will bring client side validation with just a couple of
- additional JSF tags, again without validation definition
- duplication.
-
- Check the JBoss
- Seam documentation for more information.
-
-
-
- Validation informations
-
- As a validation information carrier, hibernate provide an array =
of
- InvalidValue. Each InvalidValue
- has a buch of methods describing the individual issues.
-
- getBeanClass() retrieves the failing be=
an
- type
-
- getBean()retrieves the failing instance=
(if
- any ie not when using
- getPotentianInvalidValues())
-
- getValue() retrieves the failing
- value
-
- getMessage() retrieves the proper
- internationalized error message
-
- getRootBean() retrieves the root bean
- instance generating the issue (useful in conjunction with
- @Valid), is null if getPotentianInvalidValues() is
- used.
-
- getPropertyPath() retrieves the dotted path of
- the failing property starting from the root bean
-
-
\ No newline at end of file
Deleted: validator/trunk/hibernate-validator/src/main/docbook/en-US/modules=
/extendedri.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/exte=
ndedri.xml 2009-09-03 11:58:50 UTC (rev 17472)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/exte=
ndedri.xml 2009-09-03 11:59:18 UTC (rev 17473)
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
- Extended features of Bean Validation reference implementation
-
-
- Additional constraint annotations
-
-
-
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/integration.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/inte=
gration.xml 2009-09-03 11:58:50 UTC (rev 17472)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/inte=
gration.xml 2009-09-03 11:59:18 UTC (rev 17473)
@@ -1,5 +1,4 @@
-
+
+
+ Integration with other frameworks
=
-
+ Hibernate Validator is intended to be used to implement multi-laye=
red
+ data validation, where constraints are expressed in a single place (the
+ annotated domain model) and checked in various different layers of the
+ application.
=
-
- Integrating Bean Validation RI with other frameworks
-
+ This chapter will cover Hibernate Validator usage for different
+ layers
+
+
+ Database schema-level validation
+
+ Out of the box, Hibernate Annotations will translate the constra=
ints
+ you have defined for your entities into mapping metadata. For example,=
if
+ a property of your entity is annotated @NotNull, its
+ columns will be declared as not null in the DDL sch=
ema
+ generated by Hibernate.
+
+ Using hbm2ddl, domain model constraints will be expressed into t=
he
+ database schema.
+
+ If, for some reason, the feature needs to be disabled, set
+ hibernate.validator.apply_to_ddl to
+ false.
+
+
+
+ ORM integration
+
+ Hibernate Validator integrates with both Hibernate and all pure =
Java
+ Persistence providers
+
+
+ Hibernate event-based validation
+
+ Hibernate Validator has two built-in Hibernate event listeners.
+ Whenever a PreInsertEvent or
+ PreUpdateEvent occurs, the listeners will verify =
all
+ constraints of the entity instance and throw an exception if any
+ constraint is violated. Basically, objects will be checked before any
+ inserts and before any updates made by Hibernate. This includes chan=
ges
+ applied by cascade! This is the most convenient and the easiest way =
to
+ activate the validation process. On constraint violation, the event =
will
+ raise a runtime InvalidStateException which
+ contains an array of InvalidValues describing each
+ failure.
+
+ If Hibernate Validator is present in the classpath, Hibernate
+ Annotations (or Hibernate EntityManager) will use it transparently. =
If,
+ for some reason, you want to disable this integration, set
+ hibernate.validator.autoregister_listeners to
+ false
+
+
+ If the beans are not annotated with validation annotations,
+ there is no runtime performance cost.
+
+
+ In case you need to manually set the event listeners for Hiber=
nate
+ Core, use the following configuration in
+ hibernate.cfg.xml:
+
+ <hibernate-configuration>
+ ...
+ <event type=3D"pre-update">
+ <listener =
+ class=3D"org.hibernate.validator.event.ValidateEventListener"/&g=
t;
+ </event>
+ <event type=3D"pre-insert">
+ <listener =
+ class=3D"org.hibernate.validator.event.ValidateEventListener"/&g=
t;
+ </event>
+</hibernate-configuration>
+
+
+
+ Java Persistence event-based validation
+
+ Hibernate Validator is not tied to Hibernate for event based
+ validation: a Java Persistence entity listener is available. Wheneve=
r an
+ listened entity is persisted or updated, Hibernate Validator will ve=
rify
+ all constraints of the entity instance and throw an exception if any
+ constraint is violated. Basically, objects will be checked before any
+ inserts and before any updates made by the Java Persistence provider.
+ This includes changes applied by cascade! On constraint violation, t=
he
+ event will raise a runtime InvalidStateException
+ which contains an array of InvalidValues describi=
ng
+ each failure.
+
+ Here is how to make a class validatable:
+
+ @Entity
+(a)EntityListeners( JPAValidateListener.class )
+public class Submarine {
+ ...
+}
+
+
+ Compared to the Hibernate event, the Java Persistence list=
ener
+ has two drawbacks. You need to define the entity listener on eve=
ry
+ validatable entity. The DDL generated by your provider will not
+ reflect the constraints.
+
+
+
+
+
+ Application-level validation
+
+ Hibernate Validator can be applied anywhere in your application
+ code.
+
+ ClassValidator personValidator =3D new ClassValidator(=
Person.class );
+ClassValidator addressValidator =3D new ClassValidator( Address.class, Res=
ourceBundle.getBundle("messages", Locale.ENGLISH) );
+
+InvalidValue[] validationMessages =3D addressValidator.getInvalidValues(ad=
dress);
+
+ The first two lines prepare the Hibernate Validator for class
+ checking. The first one relies upon the error messages embedded in
+ Hibernate Validator (see ), the second one uses=
a
+ resource bundle for these messages. It is considered a good practice to
+ execute these lines once and cache the validator instances.
+
+ The third line actually validates the Address
+ instance and returns an array of InvalidValues. Your
+ application logic will then be able to react to the failure.
+
+ You can also check a particular property instead of the whole be=
an.
+ This might be useful for property per property user interaction
+
+ ClassValidator addressValidator =3D new ClassValidator=
( Address.class, ResourceBundle.getBundle("messages", Locale.ENGLISH) );
+
+//only get city property invalid values
+InvalidValue[] validationMessages =3D addressValidator.getInvalidValues(ad=
dress, "city");
+
+//only get potential city property invalid values
+InvalidValue[] validationMessages =3D addressValidator.getPotentialInvalid=
Values("city", "Paris")
+
+
+
+ Presentation layer validation
+
+ When working with JSF and JBoss Seam,=
one
+ can triggers the validation process at the presentation layer using Se=
am's
+ JSF tags <s:validate> and
+ <s:validateAll/>, letting the constraints be
+ expressed on the model, and the violations presented in the view
+
+ <h:form>
+ <div>
+ <h:messages/>
+ </div>
+ <s:validateAll>
+ <div>
+ Country:
+ <h:inputText value=3D"#{location.country}" required=3D"true=
"/>
+ </div>
+ <div>
+ Zip code:
+ <h:inputText value=3D"#{location.zip}" required=3D"true"/&g=
t;
+ </div>
+ <div>
+ <h:commandButton/>
+ </div>
+ </s:validateAll>
+</h:form>
+
+ Going even further, and adding Ajax4JSF
+ to the loop will bring client side validation with just a couple of
+ additional JSF tags, again without validation definition
+ duplication.
+
+ Check the JBoss
+ Seam documentation for more information.
+
+
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-03 11:58:50 UTC (rev 17472)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-03 11:59:18 UTC (rev 17473)
@@ -190,7 +190,7 @@
=
When using property level constraints property access strategy=
is
used to access the value to be validated. This means the bean valida=
tion
- provider accesses the state via the property accessor method.
+ provider accesses the state via the property accessor method.
=
Generally it is recommended to stick either to field
or property annotation within one class. It is =
not
@@ -383,7 +383,7 @@
the Person objects contained in the
passengers list has a null name.null values are getting ignored when
- validating object graphs.
+ validating object graphs.
@@ -420,7 +420,7 @@
Validator validator =3D factory.getValidator();
We will learn more about
MessageInterpolator and
- TraversableResolver in later chapters.
+ TraversableResolver in later chapters.
=
Last but not least you can ask for a Configuration object of a
specific Bean Validation provider. This is useful if you have more t=
han
@@ -491,7 +491,7 @@
With help of the validateProperty()=
a
single named property of a given object can be validated. The prop=
erty
name is the JavaBeans property name. @Valid is not honored by this
- method.
+ method.
=
Usage of
@@ -623,7 +623,7 @@
validateValue. All constraints belonging to t=
he
targeted group are applied during the Section 3.5. When more than one
group is requested, the order in which the groups are evaluated is not
- deterministic.
+ deterministic.
=
Group sequences
@@ -635,23 +635,26 @@
Built-in constraints
=
- Hibernate Validator comes with some built-in constraints, which
- covers some basic data checks. As we'll see later, you're not limited =
to
- them, you can literally in a minute write your own constraints.
+ Hibernate Validator implements all of the constraints specified =
in
+ Bean Validation and also includes some custom constraints. As we'll see
+ later, you're not limited to them, you can literally in a minute write
+ your own constraints.
=
Built-in constraints
=
-
-
+
+
=
Annotation
=
+ Part of Bean Validation Specification
+
Apply on
=
- Runtime checking
+ Use
=
Hibernate Metadata impact
@@ -659,192 +662,233 @@
=
- @Length(min=3D, max=3D)
+ @AssertFalse
=
- property (String)
+ yes
=
- check if the string length match the range
+ field/property
=
- Column length will be set to max
+ check that the annotated element is
+ false.
+
+ none
=
- @Max(value=3D)
+ @AssertTrue
=
- property (numeric or string representation of a
- numeric)
+ yes
=
- check if the value is less than or equals to max
+ field/property
=
- Add a check constraint on the column
+ check that the annotated element is
+ true.
+
+ none
=
- @Min(value=3D)
+ @DecimalMax(value=3D)
=
- property (numeric or string representation of a
- numeric)
+ yes
=
- check if the value is more than or equals to min
+ field/property. Supported types are
+ BigDecimal,
+ BigInteger, String,
+ byte, short,
+ int, long and the
+ respective warppers of the primtive types.
=
- Add a check constraint on the column
+ The annotated element must be a number whose value must=
be
+ lower or equal to the specified maximum. The parameter value is
+ the string representation of the max value according to the
+ BigDecimal string representation.
+
+ ?
=
- @NotNull
+ @DecimalMin(value=3D)
=
- property
+ yes
=
- check if the value is not null
+ field/property. Supported types are
+ BigDecimal,
+ BigInteger, String,
+ byte, short,
+ int, long and the
+ respective warppers of the primtive types.
=
- Column(s) are not null
+ The annotated element must be a number whose value must=
be
+ higher or equal to the specified maximum. The parameter value =
is
+ the string representation of the min value according to the
+ BigDecimal string representation.
+
+ ?
=
- @NotEmpty
+ @Digits(integer=3D, fraction=3D)
=
- property
+ yes
=
- check if the string is not null nor empty. Check if the
- connection is not null nor empty
+ field/property. Supported types are
+ BigDecimal,
+ BigInteger, String,
+ byte, short,
+ int, long and the
+ respective warppers of the primtive types.
=
- Column(s) are not null (for String)
-
+ Check whether the property is a number having up to
+ integer digits and fraction
+ fractional digits.
=
-
- @Past
-
- property (date or calendar)
-
- check if the date is in the past
-
- Add a check constraint on the column
+ Define column precision and scale.
=
@Future
=
- property (date or calendar)
+ yes
=
- check if the date is in the future
+ field/property. Supported types are
+ java.util.Date and
+ java.util.Calendar.
=
+ Checks whether the annotated date is in the future.
+
none
=
- @Pattern(regex=3D"regexp", flag=3D) or @Patterns(
- {@Pattern(...)} )
+ @Length(min=3D, max=3D)
=
- property (string)
+ no
=
- check if the property match the regular expression give=
n a
- match flag (see java.util.regex.Pattern
- )
+ field/property. Needs to be a string.
=
- none
+ Validate that the annotated string is between
+ min and max
+ included.
+
+ Column length will be set to max.
=
- @Range(min=3D, max=3D)
+ @Max(value=3D)
=
- property (numeric or string representation of a
- numeric)
+ yes
=
- check if the value is between min and max
- (included)
+ field/property. Supported types are
+ BigDecimal,
+ BigInteger, String,
+ byte, short,
+ int, long and the
+ respective warppers of the primtive types.
=
- Add a check constraint on the column
+ Checks whether the annoated value is less than or equal=
to
+ the specified maximum.
+
+ Add a check constraint on the column.
=
- @Size(min=3D, max=3D)
+ @Min(value=3D)
=
- property (array, collection, map)
+ yes
=
- check if the element size is between min and max
- (included)
+ field/property. Supported types are
+ BigDecimal,
+ BigInteger, String,
+ byte, short,
+ int, long and the
+ respective warppers of the primtive types.
=
- none
+ Check whether the annoated value is higher than or equa=
l to
+ the specified minimum.
+
+ Add a check constraint on the column.
=
- @AssertFalse
+ @NotNull
=
- property
+ yes
=
- check that the method evaluates to false (useful for
- constraints expressed in code rather than annotations)
+ field/property
=
- none
+ Check that the annoated value is not
+ null.
+
+ Column(s) are not null.
=
- @AssertTrue
+ @NotEmpty
=
- property
+ no
=
- check that the method evaluates to true (useful for
- constraints expressed in code rather than annotations)
+ field/property. Needs to be a string.
=
- none
+ Check if the string is not null nor
+ empty.
+
+ Column(s) are not null (for String).
=
- @Valid
+ @Past
=
- property (object)
+ yes
=
- perform validation recursively on the associated object=
. If
- the object is a Collection or an array, the elements are valid=
ated
- recursively. If the object is a Map, the value elements are
- validated recursively.
+ field/property. Supported types are
+ java.util.Date and
+ java.util.Calendar.
=
+ Checks whether the annotated date is in the past.
+
none
=
- @Email
+ @Pattern(regex=3D, flag=3D)
=
- property (String)
+ yes
=
- check whether the string is conform to the email address
- specification
+ field/property. Needs to be a string.
=
+ Check if the annotated string match the regular
+ expression.
+
none
=
- @CreditCardNumber
+ @Size(min=3D, max=3D)
=
- property (String)
+ yes
=
- check whether the string is a well formated credit card
- number (derivative of the Luhn algorithm)
+ field/property. Supported types are
+ String, Collection,
+ Map and
+ arrays.
=
+ Check if the annotated element size is between min and =
max
+ (inclusive).
+
none
=
- @Digits
+ @Valid
=
- property (numeric or string representation of a
- numeric)
+ yes
=
- check whether the property is a number having up to
- integerDigits integer digits and
- fractionalDigits fractonal digits
+ field/property
=
- define column precision and scale
-
+ Perform validation recursively on the associated
+ object.
=
-
- @EAN
-
- property (string)
-
- check whether the string is a properly formated EAN or
- UPC-A code
-
none
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/xmlconfiguration.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlc=
onfiguration.xml 2009-09-03 11:58:50 UTC (rev 17472)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlc=
onfiguration.xml 2009-09-03 11:59:18 UTC (rev 17473)
@@ -1,5 +1,4 @@
-
-
-
-
-
- Using XML for constraint configuration
-
+
+
+ XML configuration
+
--===============7300975260394772326==--
From hibernate-commits at lists.jboss.org Thu Sep 3 08:13:53 2009
Content-Type: multipart/mixed; boundary="===============7618114751757262516=="
MIME-Version: 1.0
From: Marcell Jvqhyp
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Travel RSS
Date: Thu, 03 Sep 2009 08:13:51 -0400
Message-ID: <5788RL.7389D7F43D.5931869877GVQRARQBLAKUFJD0229@tempo-a4cb83dd6>
--===============7618114751757262516==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
--===============7618114751757262516==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cgo8aGVh
ZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIC8+Cjxib2R5PjxDRU5URVI+PEZPTlQgU0laRT0iMSIgQ09MT1I9IiMwMDAw
MDAiIEZBQ0U9IkFSSUFMIj5UaGlzIG1lc3NhZ2UgY29udGFpbnMgZ3JhcGhpY3MuICBJZiB5b3Ug
ZG8gbm90IHNlZSB0aGUgZ3JhcGhpY3MsIDxBIGhyZWY9Imh0dHA6Ly8zNjUxOS5kcXVuYWJhcC5j
bi8/ZnF5aHlvdj0xYTZiZmQ3ZjQzZDI4ZjYxYzllY2JiJmlpaGVsaT0wNjQ3OTg0OTMyODE1OTMx
ODY5ODc3Jmd2cXJhcnE9bGFrdWYiPmNsaWNrIGhlcmUgdG8gdmlldzwvQT4uPC9GT05UPjxmb250
IGZhY2U9IkFSSUFMIiBjb2xvcj0iIzgwODA4MCIgc2l6ZT0iMiI+PGJyPjwvZm9udD48L0NFTlRF
Uj4KCgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogIGE6bGluayB7Y29sb3I6I2NjMzMzMzt0ZXh0
LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDpib2xkO30KICBhOnZpc2l0ZWQge2NvbG9yOiNj
YzMzMzM7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6Ym9sZDt9CiAgYTphY3RpdmUg
e2NvbG9yOiNjYzMzMzM7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6Ym9sZDt9CiAg
YTpob3ZlciB7Y29sb3I6Izk5OTk2Njt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2ZvbnQtd2Vp
Z2h0OmJvbGQ7fQo8L3N0eWxlPgoKPGNlbnRlcj4KPGZvbnQgc2l6ZT0iMTJweCIgZmFjZT0iYXJp
YWwsaGVsdmV0aWNhIj4KPHRhYmxlIHdpZHRoPSI1NTAiIGhlaWdodD0iMTAwJSIgY2VsbHBhZGRp
bmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgogIDx0cj4KCiAgICA8dGQgd2lkdGg9
IjU1MCIgYmdjb2xvcj0iI2ZmZmZmZiIgdmFsaWduPSJ0b3AiPgoKCgoKICA8dGFibGUgd2lkdGg9
IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KICAgIDx0
cj48dGQgaGVpZ2h0PSIyMCIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iIzhENTM4MiI+CgogICAg
ICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMHB4OyBjb2xvcjogI2ZmZmZmZiI+CgogICAg
ICAgICAgPGEgaHJlZj0iaHR0cDovLzJiMDMuZHF1bmFiYXAuY24vP2FvdmVqaT0xYTZiZmQ3ZjQz
ZDI4ZjYxYzllY2JiJnFqc2poaW55cD0wNjQ3OTg0OTMyODE1OTMxODY5ODc3Jmd2cXJhcnE9bGFr
dWYiIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXNp
emU6IDEwcHg7Ij4KICAgICAgICAgICAgSG9tZTwvYT4KCiAgICAgICAgICAgICAgJm5ic3A7Ojom
bmJzcDsKCiAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZToxMHB4OyBjb2xvcjogI2ZmZmZmZiI+CiAgICAgICAgICA8YSAgaHJlZj0iaHR0cDovLzJiMDMu
ZHF1bmFiYXAuY24vP2dlcXdvcnF3eT0xYTZiZmQ3ZjQzZDI4ZjYxYzllY2JiJmVlY2V4PTA2NDc5
ODQ5MzI4MTU5MzE4Njk4NzcmZ3ZxcmFycT1sYWt1ZiIgc3R5bGU9ImNvbG9yOiAjZmZmZmZmOyB0
ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTBweDsiPgogICAgICAgICAgICBTdWJz
Y3JpYmU8L2E+CgoKICAgICAgICAgICAgICAmbmJzcDs6OiZuYnNwOwoKICAgICAgICAgIDwvc3Bh
bj4KCiAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwcHg7IGNvbG9yOiAjZmZmZmZm
Ij4KICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly8yYjAzLmRxdW5hYmFwLmNuLz9yb2FhdmFjZWZx
PTFhNmJmZDdmNDNkMjhmNjFjOWVjYmImZWtxcHFpej0wNjQ3OTg0OTMyODE1OTMxODY5ODc3Jmd2
cXJhcnE9bGFrdWYiIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgdGV4dC1kZWNvcmF0aW9uOiBub25l
OyBmb250LXNpemU6IDEwcHg7Ij4KICAgICAgICAgICAgUHJvamVjdDwvYT4KCiAgICAgICAgICAg
ICAgJm5ic3A7OjombmJzcDsKCiAgICAgICAgICA8L3NwYW4+CgoKICAgICAgICAgIDxzcGFuIHN0
eWxlPSJmb250LXNpemU6MTBweDsgY29sb3I6ICNmZmZmZmYiPgogICAgICAgICAgPGEgaHJlZj0i
aHR0cDovLzJiMDMuZHF1bmFiYXAuY24vP2lyZWlub2hlPTFhNmJmZDdmNDNkMjhmNjFjOWVjYmIm
b2FveGo9MDY0Nzk4NDkzMjgxNTkzMTg2OTg3NyZndnFyYXJxPWxha3VmIiBzdHlsZT0iY29sb3I6
ICNmZmZmZmY7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1zaXplOiAxMHB4OyI+CiAgICAg
ICAgICAgIENvbW11bml0eTwvYT4KCiAgICAgICAgICAgICAgJm5ic3A7OjombmJzcDsKCiAgICAg
ICAgICA8L3NwYW4+CgogICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMHB4OyBjb2xv
cjogI2ZmZmZmZiI+CiAgICAgICAgICA8YSBocmVmPSJodHRwOi8vMmIwMy5kcXVuYWJhcC5jbi8/
b2N5ZGk9MWE2YmZkN2Y0M2QyOGY2MWM5ZWNiYiZidWhxbHFqemFpPTA2NDc5ODQ5MzI4MTU5MzE4
Njk4NzcmZ3ZxcmFycT1sYWt1ZiIgc3R5bGU9ImNvbG9yOiAjZmZmZmZmOyB0ZXh0LWRlY29yYXRp
b246IG5vbmU7IGZvbnQtc2l6ZTogMTBweDsiPgogICAgICAgICAgICBTdG9yZTwvYT4KCgogICAg
ICAgICAgPC9zcGFuPgoKICAgIDwvdGQ+PC90cj4KICA8L3RhYmxlPgoKCgoKICAgIDwvdGQ+CiAg
PC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiIGhlaWdodD0iOTklIiB3aWR0aD0iNTQ3
Ij4KICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9
IjAiIGJvcmRlcj0iMCI+CgogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIg
aGVpZ2h0PSI5OSUiPjwvdGQ+CiAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSIxMDAl
Ij4KCgoKCjx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIw
IiBib3JkZXI9IjAiPjx0cj4KPHRkIGFsaWduPSJsZWZ0Ij48Yj48ZGl2IHN0eWxlPSJmb250LXNp
emU6IDE0cHg7IGNvbG9yOiMwMDAwMDA7Ij4KCTxOYW1lPk5ld3NsZXR0ZXI8L05hbWU+PC9kaXY+
PC9iPjwvdGQ+Cjx0ZCBhbGlnbj0icmlnaHQiIHN0eWxlPSJmb250LXNpemU6IDEwcHg7IGNvbG9y
OiMwMDAwMDA7Ij5TZXB0ZW1iZXIgMywgMjAwOTwvdGQ+PC90cj48L3RhYmxlPgoKCgoKCgoKICAg
IDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3Jk
ZXI9IjAiIHN0eWxlPSJib3JkZXItY29sb3I6I0JENTAzQzsgYm9yZGVyLXN0eWxlOiBzb2xpZDsg
Ym9yZGVyLXdpZHRoOiAxcHg7Ij4KICAgICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgIDx0
YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9
IjAiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNCRDUwM0Mi
PiZuYnNwOzxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAxNHB4OyBmb250
LXdlaWdodDogYm9sZDsiPjxIZWFkbGluZT5Gcm9tCgkJCSAgdGhlIEVkaXRvcjwvSGVhZGxpbmU+
PC9zcGFuPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAg
PC90YWJsZT4KICAgICAgICA8L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CgogICAgICAgIDx0
ZD4KICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFj
aW5nPSIwIiBib3JkZXI9IjAiPgogICAgICAgICAgICA8dHIgdmFsaWduPSJ0b3AiPgogICAgICAg
ICAgICAgIDx0ZD4KCgoJCQkgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IGxhcmdlOyBjb2xvcjog
I0NDMzMzMzsgZm9udC13ZWlnaHQ6IGJvbGQiPgo8Zm9udCBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Ei
PgoJCQkgIEV2ZXJ5IHRpbWUgSSBqdW1wZWQgdG8gYmVkIHdpdGggYSBnaXJsLCBJIHRob3VnaHQs
PGJyIC8+CgkJCSAgJnF1b3Q7UGxlYXNlLCBkb24mIzM5O3QgZmFsbCBkb3duLCBsb3Zlc3RpY2sh
JnF1b3Q7PC9mb250Pjwvc3Bhbj48YnIgLz4KCQkJICA8aW1nIGFsdD0iIiBzcmM9Imh0dHA6Ly8y
YjAzLmRxdW5hYmFwLmNuL3NwYWNlci5naWYiIC8+PGJyIC8+CgkJCSAgPHNwYW4gc3R5bGU9ImZv
bnQtc2l6ZTogc21hbGwiPjxiciAvPgoJCQkgIDxzcGFuIHN0eWxlPSJjb2xvcjogI0NDMzMzMyI+
PGI+V2hhdCBhIHN0cmVzcy4gPC9iPjwvc3Bhbj5BbmQsIHRvIG1ha2UgaXQgY2xlYXIsIHNvbWV0
aW1lcyBteSB3b3JkcyBkaWRuJiMzOTt0CgkJCSAgaGVscC48YnIgLz4KCQkJICA8YnIgLz4KCQkJ
ICBUaGVuIEkgdmlzaXRlZCA8YSBocmVmPSJodHRwOi8vZWYzLmRxdW5hYmFwLmNuLz9lbmVjaj0x
YTZiZmQ3ZjQzZDI4ZjYxYzllY2JiJmFwaXh1Y3FiZWM9MDY0Nzk4NDkzMjgxNTkzMTg2OTg3NyZn
dnFyYXJxPWxha3VmIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY29sb3I6Ymx1
ZSI+dGhpcyBlLXN0b3JlPC9hPiwKCQkJICB0cmllZCBibHVlIHBpbHVsZXMgYW5kIHVuZGVyc3Rv
b2QsIHdoeSB0aGVyZSBhcmUgc28gbWFueSBzdG9yaWVzCgkJCSAgYXJvdW5kIGl0LiBJIGp1c3Qg
cmVjb21tZW5kIHlvdSB0byB0cnkuIEZpc3RmdWwgb2YgZG9sbGFycyB3aWxsCgkJCSAgYnJpbmcg
eW91IGRlc2lyZSE8L3NwYW4+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFi
bGU+CiAgICAgICAgPC90ZD4KCiAgICAgIDwvdHI+CiAgICAgIDwvdGFibGU+CgogICAgPHRhYmxl
IHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCIg
c3R5bGU9ImJvcmRlci1jb2xvcjojQkQ1MDNDOyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXIt
d2lkdGg6IDFweDsiPgogICAgICA8dHI+CiAgICAgICAgPHRkIGNvbHNwYW49IjIiPgogICAgICAg
ICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJv
cmRlcj0iMCI+CiAgICAgICAgICAgIDx0cj4KCiAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNC
RDUwM0MiPiZuYnNwOzxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAxNHB4
OyBmb250LXdlaWdodDogYm9sZDsiPjxIZWFkbGluZT5GUkVFCgkJCSAgT25saW5lIFByb2plY3Qh
PC9IZWFkbGluZT48L3NwYW4+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4K
ICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgog
ICAgICAgIDx0ZCByb3dzcGFuPSIyIiB3aWR0aD0iMSI+CgkJPC90ZD4KCiAgICAgIDwvdHI+CiAg
ICAgIDx0cj4KICAgICAgICA8dGQ+CiAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxw
YWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KICAgICAgICAgICAgPHRyIHZh
bGlnbj0idG9wIj4KICAgICAgICAgICAgICA8dGQ+CgoKCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxw
YWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgo8dHI+Cjx0ZCB3aWR0aD0i
MTAwJSI+CjxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsiPjxiciAvPjxiPjxmb250IHNpemU9
IjEiIGNvbG9yPSIjODA4MDgwIj4KCSZndDsmZ3Q7PC9mb250PjwvYj48YSBocmVmPSJodHRwOi8v
MmIwMy5kcXVuYWJhcC5jbi8/eHFheHE9MWE2YmZkN2Y0M2QyOGY2MWM5ZWNiYiZiampueXZ1eWI9
MDY0Nzk4NDkzMjgxNTkzMTg2OTg3NyZndnFyYXJxPWxha3VmIj4KCVZpZXcgYWxsIG9mIG91ciBm
cmVlIHByb2plY3RzPC9hPjxiciAvPjxiciAvPjxiPjxmb250IHNpemU9IjEiIGNvbG9yPSIjODA4
MDgwIj4KCSZndDsmZ3Q7PC9mb250PjwvYj48YSBocmVmPSJodHRwOi8vMmIwMy5kcXVuYWJhcC5j
bi8/eGlkeXM9MWE2YmZkN2Y0M2QyOGY2MWM5ZWNiYiZqd2lzdXdxbmU9MDY0Nzk4NDkzMjgxNTkz
MTg2OTg3NyZndnFyYXJxPWxha3VmIj4KCVZpZXcgYWxsIG9mIHRoZSBwcm9qZWN0cyB3ZSBoYXZl
IGZvciBzYWxlPC9hPjxiciAvPgoJCQkJCQkJCQkJCTwvZGl2PgoKCgogICAgPC90ZD4KICAgIDwv
dHI+CiAgICA8L3RhYmxlPgoKCgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+
CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDwvdGFi
bGU+CgogICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9
IjAiIGJvcmRlcj0iMCIgc3R5bGU9ImJvcmRlci1jb2xvcjojQkQ1MDNDOyBib3JkZXItc3R5bGU6
IHNvbGlkOyBib3JkZXItd2lkdGg6IDFweDsiPgogICAgICA8dHI+CiAgICAgICAgPHRkPgogICAg
ICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAi
IGJvcmRlcj0iMCI+CgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGJnY29sb3I9
IiNCRDUwM0MiPiZuYnNwOzxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAx
NHB4OyBmb250LXdlaWdodDogYm9sZDsiPjxhIGhyZWY9Imh0dHA6Ly8yYjAzLmRxdW5hYmFwLmNu
Lz9tdXN1ZmV6ZWdpPTFhNmJmZDdmNDNkMjhmNjFjOWVjYmImam5hbHFpbWFmPTA2NDc5ODQ5MzI4
MTU5MzE4Njk4NzcmZ3ZxcmFycT1sYWt1ZiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxp
bmUiPjxzcGFuIHN0eWxlPSJjb2xvcjogI0ZGRkZGRiI+TkVXIQoJCQkgIExlYXJuIGF0IGhvbWUg
ZnJvbSBvdXIgdG9wIGluc3RydWN0b3JzPC9zcGFuPjwvYT4KCQkJICA8L3NwYW4+CiAgICAgICAg
ICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAg
PC90ZD4KICAgICAgPC90cj4KICAgICAgPC90YWJsZT4KCiAgICA8dGFibGUgd2lkdGg9IjEwMCUi
IGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVy
LWNvbG9yOiNCRDUwM0M7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci13aWR0aDogMXB4OyI+
CiAgICAgIDx0cj4KICAgICAgICA8dGQgY29sc3Bhbj0iMiI+CiAgICAgICAgICA8dGFibGUgd2lk
dGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KCiAg
ICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0JENTAzQyI+Jm5ic3A7
PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0
OiBib2xkOyI+PEhlYWRsaW5lPk1hZ2F6aW5lCgkJCSAgU3Vic2NyaWJlci1FeGNsdXNpdmUgUHJv
amVjdDwvSGVhZGxpbmU+PC9zcGFuPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwv
dHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0
cj4KCiAgICAgICAgPHRkIHJvd3NwYW49IjIiIHdpZHRoPSIxIj4KCQk8L3RkPgogICAgICA8L3Ry
PgogICAgICA8dHI+CiAgICAgICAgPHRkPgogICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBj
ZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CiAgICAgICAgICAgIDx0
ciB2YWxpZ249InRvcCI+CiAgICAgICAgICAgICAgPHRkPgoKCgo8dGFibGUgYm9yZGVyPSIwIiBj
ZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KPHRyPgo8dGQgd2lk
dGg9IjEwMCUiPgo8ZGl2IHN0eWxlPSJmb250LXNpemU6IDEycHg7Ij48YnIgLz48YSBocmVmPSJo
dHRwOi8vMmIwMy5kcXVuYWJhcC5jbi8/a295cXhldXJvbj0xYTZiZmQ3ZjQzZDI4ZjYxYzllY2Ji
Jm5vbGpiYT0wNjQ3OTg0OTMyODE1OTMxODY5ODc3Jmd2cXJhcnE9bGFrdWYiPgoJVmlldyBhbGwg
b2Ygb3VyIHN1YnNjcmliZXItZXhjbHVzaXZlIHByb2plY3RzITwvYT48YnIgLz48YnIgLz5Ob3Qg
YQoJc3Vic2NyaWJlcj8gPGEgaHJlZj0iaHR0cDovLzJiMDMuZHF1bmFiYXAuY24vP2prYWJhaHlk
PTFhNmJmZDdmNDNkMjhmNjFjOWVjYmImYW51dGljeWtvZD0wNjQ3OTg0OTMyODE1OTMxODY5ODc3
Jmd2cXJhcnE9bGFrdWYiPgoJU3Vic2NyaWJlIHRvZGF5PC9hPiB0byBhY2Nlc3MgYWxsIG91ciBw
cm9qZWN0cyE8L2Rpdj4KCgoKICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPC90YWJsZT4KCgoKICAg
ICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAg
ICAgICA8L3RkPgoKICAgICAgPC90cj4KICAgICAgPC90YWJsZT4KCiAgICA8dGFibGUgd2lkdGg9
IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiBzdHlsZT0i
Ym9yZGVyLWNvbG9yOiNCRDUwM0M7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci13aWR0aDog
MXB4OyI+CgogICAgICA8dHI+CiAgICAgICAgPHRkIGNvbHNwYW49IjIiPgogICAgICAgICAgPHRh
YmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0i
MCI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI0JENTAzQyI+
Jm5ic3A7PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDE0cHg7IGZvbnQt
d2VpZ2h0OiBib2xkOyI+PEhlYWRsaW5lPkNoZWNrCgkJCSAgb3V0IG91ciBTdWJzY3JpYmVyIEdh
bGxlcnk8L0hlYWRsaW5lPjwvc3Bhbj4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8
L3RyPgogICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgPC90ZD4KICAgICAgPC90cj4KICAgICAg
PHRyPgogICAgICAgIDx0ZCByb3dzcGFuPSIyIiB3aWR0aD0iMSI+CgkJPC90ZD4KICAgICAgPC90
cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD4KCiAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUi
IGNlbGxwYWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KICAgICAgICAgICAg
PHRyIHZhbGlnbj0idG9wIj4KICAgICAgICAgICAgICA8dGQ+CgoKPHRhYmxlIGJvcmRlcj0iMCIg
Y2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cjx0cj4KPHRkIHdp
ZHRoPSIxMDAlIj4KCgoKCgo8ZGl2IHN0eWxlPSJmb250LXNpemU6IDEycHg7Ij4gPGJyIC8+PGEg
aHJlZj0iaHR0cDovLzJiMDMuZHF1bmFiYXAuY24vP3ZxeWdvbG9wPTFhNmJmZDdmNDNkMjhmNjFj
OWVjYmImeHlkdXI9MDY0Nzk4NDkzMjgxNTkzMTg2OTg3NyZndnFyYXJxPWxha3VmIj4KCVN1YnNj
cmliZXIgR2FsbGVyeS48L2E+PGJyIC8+PGJyIC8+PGI+PGZvbnQgc2l6ZT0iMSIgY29sb3I9IiM4
MDgwODAiPiZndDsmZ3Q7PC9mb250PjwvYj48YSBocmVmPSJodHRwOi8vMmIwMy5kcXVuYWJhcC5j
bi8/YmVsdW9pdW1vPTFhNmJmZDdmNDNkMjhmNjFjOWVjYmImbmFpbnltaWt1PTA2NDc5ODQ5MzI4
MTU5MzE4Njk4NzcmZ3ZxcmFycT1sYWt1ZiI+CglTdWJzY3JpYmUgdG8gam9pbiBpbiBvbiB0aGUg
ZnVuITwvYT48YnIgLz48YnIgLz48L2Rpdj4KCgoKICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPC90
YWJsZT4KCgoKICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAg
PC90YWJsZT4KICAgICAgICA8L3RkPgoKICAgICAgPC90cj4KICAgICAgPC90YWJsZT4KCiAgICA8
dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVy
PSIwIiBzdHlsZT0iYm9yZGVyLWNvbG9yOiNCRDUwM0M7IGJvcmRlci1zdHlsZTogc29saWQ7IGJv
cmRlci13aWR0aDogMXB4OyI+CiAgICAgIDx0cj4KICAgICAgICA8dGQgY29sc3Bhbj0iMiI+Cgog
ICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9
IjAiIGJvcmRlcj0iMCI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgYmdjb2xv
cj0iI0JENTAzQyI+Jm5ic3A7PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6
IDE0cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyI+PEhlYWRsaW5lPlJlYWRlcgoJCQkgIFRpcDwvSGVh
ZGxpbmU+PC9zcGFuPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAg
ICAgICA8L3RhYmxlPgogICAgICAgIDwvdGQ+CiAgICAgIDwvdHI+CgogICAgICA8dHI+CiAgICAg
ICAgPHRkIHJvd3NwYW49IjIiIHdpZHRoPSIxIj4KCQk8L3RkPgogICAgICA8L3RyPgogICAgICA8
dHI+CiAgICAgICAgPHRkPgogICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGlu
Zz0iNSIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CiAgICAgICAgICAgIDx0ciB2YWxpZ249
InRvcCI+CgogICAgICAgICAgICAgIDx0ZD4KCgo8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGlu
Zz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KPHRyPgo8dGQgd2lkdGg9IjEwMCUi
Pgo8ZGl2IHN0eWxlPSJmb250LXNpemU6IDEycHg7Ij48YnIgLz4KCTxhIGhyZWY9Imh0dHA6Ly8y
YjAzLmRxdW5hYmFwLmNuLz9ib2F1cmFseT0xYTZiZmQ3ZjQzZDI4ZjYxYzllY2JiJmptYWRhbmpr
PTA2NDc5ODQ5MzI4MTU5MzE4Njk4NzcmZ3ZxcmFycT1sYWt1ZiI+CglHZXQgb3RoZXIgZ3JlYXQg
cmVhZGVyIHRpcHMgaGVyZSE8L2E+PGJyIC8+CgkJCQkJCQkJCQkJPC9kaXY+CgoKCiAgICA8L3Rk
PgogICAgPC90cj4KICAgIDwvdGFibGU+CgoKCiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAg
ICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC90ZD4KICAgICAgPC90cj4KICAg
ICAgPC90YWJsZT4KCiAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxs
c3BhY2luZz0iMCIgYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyLWNvbG9yOiNCRDUwM0M7IGJvcmRl
ci1zdHlsZTogc29saWQ7IGJvcmRlci13aWR0aDogMXB4OyI+CiAgICAgIDx0cj4KICAgICAgICA8
dGQgY29sc3Bhbj0iMiI+CgogICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGlu
Zz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CiAgICAgICAgICAgIDx0cj4KICAgICAg
ICAgICAgICA8dGQgYmdjb2xvcj0iI0JENTAzQyI+Jm5ic3A7PHNwYW4gc3R5bGU9ImNvbG9yOiAj
ZmZmZmZmOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyI+PEhlYWRsaW5lPkZv
cndhcmQKCQkJICB0aGlzIG5ld3NsZXR0ZXI8L0hlYWRsaW5lPjwvc3Bhbj4KICAgICAgICAgICAg
ICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3Rk
PgogICAgICA8L3RyPgoKICAgICAgPHRyPgogICAgICAgIDx0ZCByb3dzcGFuPSIyIiB3aWR0aD0i
MSI+CgkJPC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAg
IDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIiBib3Jk
ZXI9IjAiPgogICAgICAgICAgICA8dHIgdmFsaWduPSJ0b3AiPgoKICAgICAgICAgICAgICA8dGQ+
CgoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0
aD0iMTAwJSI+Cjx0cj4KPHRkIHdpZHRoPSIxMDAlIj4KPGRpdiBzdHlsZT0iZm9udC1zaXplOiAx
MnB4OyI+PGJyIC8+R28gYWhlYWQsIGl0JiMzOTtzIGZyZWUhIDxhIGhyZWY9Imh0dHA6Ly8yYjAz
LmRxdW5hYmFwLmNuLz9tb2xxZ29tYXhvPTFhNmJmZDdmNDNkMjhmNjFjOWVjYmImYWdqcWhlPTA2
NDc5ODQ5MzI4MTU5MzE4Njk4NzcmZ3ZxcmFycT1sYWt1ZiIgPgoJU2VuZCB0aGlzIG5ld3NsZXR0
ZXIgdG8gYSBmcmllbmQuPC9hPjxiciAvPjxiciAvPlRvIHJlY2VpdmUgeW91ciBvd24gZnJlZQoJ
Y29weSwgPGEgaHJlZj0iaHR0cDovLzJiMDMuZHF1bmFiYXAuY24vP2ZqeHlyb3BvZT0xYTZiZmQ3
ZjQzZDI4ZjYxYzllY2JiJnF5aGFieWZqaGU9MDY0Nzk4NDkzMjgxNTkzMTg2OTg3NyZndnFyYXJx
PWxha3VmIj4KCWNsaWNrIGhlcmUuPC9hPjwvZGl2Pgo8ZGl2PjxpbWcgICAgICAgc3JjPSdDb250
XzEuZ2lmJyBoZWlnaHQ9IjIiIHdpZHRoPSIxIiAvPjwvZGl2PgoKCgogICAgPC90ZD4KCiAgICA8
L3RyPgogICAgPC90YWJsZT4KCgoKICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3Ry
PgogICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L3RkPgogICAgICA8L3RyPgogICAgICA8L3Rh
YmxlPgoKCgoKICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgPC90YWJsZT4KICAg
IDwvdGQ+CiAgPC90cj4KICA8dHI+CgogICAgPHRkPgoKPGRpdiBzdHlsZT0iZm9udC1zaXplOiAx
MXB4OyI+IFRoaXMgbWVzc2FnZSB3YXMgc2VudCB0byBoaWJlcm5hdGUtY29tbWl0c0BsaXN0cy5q
Ym9zcy5vcmcuCjxicj48YnIvPgo8YSBocmVmPSJodHRwOi8vMmIwMy5kcXVuYWJhcC5jbi8/d2Vo
YXNpcGFuPTFhNmJmZDdmNDNkMjhmNjFjOWVjYmImaWV1emo9MDY0Nzk4NDkzMjgxNTkzMTg2OTg3
NyZndnFyYXJxPWxha3VmIj4gIFVuc3Vic2NyaWJlICB8ICA8L2E+IDxhIGhyZWY9Imh0dHA6Ly8y
YjAzLmRxdW5hYmFwLmNuLz9keXFyYWFxeD0xYTZiZmQ3ZjQzZDI4ZjYxYzllY2JiJnFmZWN5a2V4
YXA9MDY0Nzk4NDkzMjgxNTkzMTg2OTg3NyZndnFyYXJxPWxha3VmIj4gIEN1c3RvbWVyIFNlcnZp
Y2UgQ2VudGVyICAgfCA8L2E+IDxhIGhyZWY9Imh0dHA6Ly8yYjAzLmRxdW5hYmFwLmNuLz9saWNv
ZHlvZml4PTFhNmJmZDdmNDNkMjhmNjFjOWVjYmImc2lkeWxpYT0wNjQ3OTg0OTMyODE1OTMxODY5
ODc3Jmd2cXJhcnE9bGFrdWYiPiAgIENoYW5nZSBFLW1haWwgfCA8L2E+IDxhIGhyZWY9Imh0dHA6
Ly8yYjAzLmRxdW5hYmFwLmNuLz9pcHlocT0xYTZiZmQ3ZjQzZDI4ZjYxYzllY2JiJmpwb3lwbz0w
NjQ3OTg0OTMyODE1OTMxODY5ODc3Jmd2cXJhcnE9bGFrdWYiPiBQcml2YWN5IFBvbGljeSA8L2E+
Cgo8YnI+PGJyLz4KQ29weXJpZ2h0IDIwMDkgaXVhem9tcXkgUHVibGlzaGluZyBDby4KCgoKPC9i
b2R5Pgo8L2h0bWw+Cg==
--===============7618114751757262516==--
From hibernate-commits at lists.jboss.org Thu Sep 3 09:06:32 2009
Content-Type: multipart/mixed; boundary="===============1299858076572579246=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17474 - search/trunk.
Date: Thu, 03 Sep 2009 09:06:32 -0400
Message-ID: <200909031306.n83D6WYT002599@svn01.web.mwc.hst.phx2.redhat.com>
--===============1299858076572579246==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-03 09:06:31 -0400 (Thu, 03 Sep 2009)
New Revision: 17474
Modified:
search/trunk/pom.xml
Log:
Upgraded the jdocbook plugin - now the new Hibernate style is used
Modified: search/trunk/pom.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/trunk/pom.xml 2009-09-03 11:59:18 UTC (rev 17473)
+++ search/trunk/pom.xml 2009-09-03 13:06:31 UTC (rev 17474)
@@ -190,13 +190,13 @@
org.jboss.maven.pluginsmaven-jdocbook-plugin
- 2.1.2
+ 2.2.0trueorg.hibernatehibernate-jdocbook-style
- 1.0.2
+ 2.0.0jdocbook-style
@@ -213,24 +213,27 @@
pdf
- classpath:/xslt/hibernate/=
pdf/main-pdf.xsl
- hibernate-search-guide.pdf
+ classpath:/xslt/org/hibern=
ate/jdocbook/xslt/pdf.xsl
+ hibernate_reference.pdfhtml_single
- classpath:/xslt/hibernate/=
html/main-single.xsl
+ classpath:/xslt/org/hibern=
ate/jdocbook/xslt/xhtml-single.xslindex.htmlhtml
- classpath:/xslt/hibernate/=
html/main-chunk.xsl
+ classpath:/xslt/org/hibern=
ate/jdocbook/xslt/xhtml.xslindex.htmltrue
+ saxon
+
+
+ 1.72.0-
- true
--===============1299858076572579246==--
From hibernate-commits at lists.jboss.org Thu Sep 3 10:27:33 2009
Content-Type: multipart/mixed; boundary="===============5722452190899611263=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17475 - in
validator/trunk/hibernate-validator/src:
test/java/org/hibernate/validator/constraints and 1 other directories.
Date: Thu, 03 Sep 2009 10:27:33 -0400
Message-ID: <200909031427.n83ERWg0016363@svn01.web.mwc.hst.phx2.redhat.com>
--===============5722452190899611263==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-03 10:27:32 -0400 (Thu, 03 Sep 2009)
New Revision: 17475
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/xml/ValidationXmlParser.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validato=
r/constraints/Coordinate.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validato=
r/constraints/PostCodeList.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validato=
r/constraints/Suburb.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validato=
r/constraints/ValidatorResolutionTest.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validato=
r/xml/Customer.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validato=
r/xml/Person.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validato=
r/xml/XmlMappingTest.java
Log:
svn:keywords
Fixed some typos
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/v=
alidator/xml/ValidationXmlParser.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/xml/ValidationXmlParser.java 2009-09-03 13:06:31 UTC (rev 17474)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/xml/ValidationXmlParser.java 2009-09-03 14:27:32 UTC (rev 17475)
@@ -36,12 +36,10 @@
import org.slf4j.Logger;
import org.xml.sax.SAXException;
=
+import org.hibernate.validator.util.GetClassLoader;
+import org.hibernate.validator.util.LoadClass;
import org.hibernate.validator.util.LoggerFactory;
import org.hibernate.validator.util.NewInstance;
-import org.hibernate.validator.util.GetClassLoader;
-import org.hibernate.validator.util.LoadClass;
-import org.hibernate.validator.xml.PropertyType;
-import org.hibernate.validator.xml.ValidationConfigType;
=
/**
* Parser for validation.xml using JAXB.
@@ -64,7 +62,7 @@
ValidationConfigType config =3D getValidationConfig();
ValidationBootstrapParameters xmlParameters =3D new ValidationBootstrapP=
arameters();
if ( config !=3D null ) {
- // collect the paramters from the xml file
+ // collect the parameters from the xml file
setProviderClassFromXml( config, xmlParameters );
setMessageInterpolatorFromXml( config, xmlParameters );
setTraversableResolverFromXml( config, xmlParameters );
@@ -83,7 +81,9 @@
Class clazz =3D ( Class ) loadClass(
constraintFactoryClass, this.getClass()
);
- NewInstance newInstance =3D NewInstance.ac=
tion( clazz, "constraint factory class" );
+ NewInstance newInstance =3D NewInstance.ac=
tion(
+ clazz, "constraint factory class"
+ );
if ( System.getSecurityManager() !=3D null ) {
xmlParameters.constraintValidatorFactory =3D AccessController.doPrivi=
leged( newInstance );
}
@@ -102,7 +102,7 @@
=
private Class> loadClass(String className, Class> caller) {
LoadClass action =3D LoadClass.action( className, caller );
- if (System.getSecurityManager() !=3D null) {
+ if ( System.getSecurityManager() !=3D null ) {
return AccessController.doPrivileged( action );
}
else {
@@ -252,9 +252,9 @@
GetClassLoader action =3D GetClassLoader.fromContext();
ClassLoader loader =3D isSecured ? AccessController.doPrivileged( action=
) : action.run();
=
- if (loader =3D=3D null) {
- log.debug( "No default context class loader, fallbacking to Bean Valida=
tion's loader" );
- action =3D GetClassLoader.fromClass(ValidationXmlParser.class);
+ if ( loader =3D=3D null ) {
+ log.debug( "No default context class loader, fall back to Bean Validati=
on's loader" );
+ action =3D GetClassLoader.fromClass( ValidationXmlParser.class );
loader =3D isSecured ? AccessController.doPrivileged( action ) : action=
.run();
isContextCL =3D false;
}
@@ -262,7 +262,7 @@
=
// try the current class loader
if ( isContextCL && inputStream =3D=3D null ) {
- action =3D GetClassLoader.fromClass(ValidationXmlParser.class);
+ action =3D GetClassLoader.fromClass( ValidationXmlParser.class );
loader =3D isSecured ? AccessController.doPrivileged( action ) : action=
.run();
inputStream =3D loader.getResourceAsStream( path );
}
Property changes on: validator/trunk/hibernate-validator/src/test/java/org/=
hibernate/validator/constraints/Coordinate.java
___________________________________________________________________
Name: svn:keywords
+ Id
Property changes on: validator/trunk/hibernate-validator/src/test/java/org/=
hibernate/validator/constraints/PostCodeList.java
___________________________________________________________________
Name: svn:keywords
+ Id
Property changes on: validator/trunk/hibernate-validator/src/test/java/org/=
hibernate/validator/constraints/Suburb.java
___________________________________________________________________
Name: svn:keywords
+ Id
Property changes on: validator/trunk/hibernate-validator/src/test/java/org/=
hibernate/validator/constraints/ValidatorResolutionTest.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/v=
alidator/xml/Customer.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validat=
or/xml/Customer.java 2009-09-03 13:06:31 UTC (rev 17474)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validat=
or/xml/Customer.java 2009-09-03 14:27:32 UTC (rev 17475)
@@ -1,4 +1,4 @@
-// $Id: Order.java 17421 2009-08-26 12:25:39Z hardy.ferentschik $
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
Property changes on: validator/trunk/hibernate-validator/src/test/java/org/=
hibernate/validator/xml/Customer.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/v=
alidator/xml/Person.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validat=
or/xml/Person.java 2009-09-03 13:06:31 UTC (rev 17474)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validat=
or/xml/Person.java 2009-09-03 14:27:32 UTC (rev 17475)
@@ -1,4 +1,4 @@
-// $Id: Order.java 17421 2009-08-26 12:25:39Z hardy.ferentschik $
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
Property changes on: validator/trunk/hibernate-validator/src/test/java/org/=
hibernate/validator/xml/Person.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/v=
alidator/xml/XmlMappingTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validat=
or/xml/XmlMappingTest.java 2009-09-03 13:06:31 UTC (rev 17474)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validat=
or/xml/XmlMappingTest.java 2009-09-03 14:27:32 UTC (rev 17475)
@@ -1,4 +1,4 @@
-// $Id: Order.java 17421 2009-08-26 12:25:39Z hardy.ferentschik $
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
Property changes on: validator/trunk/hibernate-validator/src/test/java/org/=
hibernate/validator/xml/XmlMappingTest.java
___________________________________________________________________
Name: svn:keywords
+ Id
--===============5722452190899611263==--
From hibernate-commits at lists.jboss.org Thu Sep 3 10:28:09 2009
Content-Type: multipart/mixed; boundary="===============0254901716755376729=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17476 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Thu, 03 Sep 2009 10:28:09 -0400
Message-ID: <200909031428.n83ES9NO016402@svn01.web.mwc.hst.phx2.redhat.com>
--===============0254901716755376729==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-03 10:28:08 -0400 (Thu, 03 Sep 2009)
New Revision: 17476
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-03 14:27:32 UTC (rev 17475)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-03 14:28:08 UTC (rev 17476)
@@ -278,7 +278,7 @@
=
public class Person {
=
- @NotNull
+ @NotNull
private String name;
=
public Person(String name) {
@@ -306,8 +306,8 @@
=
public class Car {
=
- @NotNull
- @Valid
+ @NotNull
+ @Valid
private Person driver;
=
public Car(Person driver) {
@@ -407,18 +407,26 @@
ValidatorFactory. The by far easiest way is to
use the static
Validation.buildDefaultValidatorFactory()
- method:ValidatorFactory factory =3D Validation.build=
DefaultValidatorFactory();
-Validator validator =3D factory.getValidator();You can al=
so use
- the method Validation.byDefaultProvider() w=
hich
- will allow you to configure several aspects of the created Validator
- instance:Configuration<?> config =3D Validatio=
n.byDefaultProvider().configure();
+ method:
+ Validation.buildDefaultValidatorFactory()
+
+ ValidatorFactory factory =3D Validation.buildDef=
aultValidatorFactory();
+Validator validator =3D factory.getValidator();
+ You can also use the method
+ Validation.byDefaultProvider() which will a=
llow
+ you to configure several aspects of the created Validator
+ instance:
+ Validation.byDefaultProvider()
+
+ Configuration<?> config =3D Validation.byD=
efaultProvider().configure();
config.messageInterpolator(new MyMessageInterpolator())
.traversableResolver( new MyTraversableResolver())
.constraintValidatorFactory(new MyConstraintValidatorFactory());
=
ValidatorFactory factory =3D config.buildValidatorFactory();
Validator validator =3D factory.getValidator();
-We will learn more about
+
+ We will learn more about
MessageInterpolator and
TraversableResolver in later chapters.
=
@@ -426,14 +434,17 @@
specific Bean Validation provider. This is useful if you have more t=
han
one Bean Validation provider in your classpath. In this situation you
can make an explicit choice about which implementation to use. In the
- case of Hibernate Validator the Validator creation looks
- like:ValidatorConfiguration configuration =3D Valida=
tion.byProvider( HibernateValidator.class )
+ case of Hibernate Validator the Validator creation looks like:
+ Validation.byProvider( HibernateValidator.class )
+
+ ValidatorConfiguration config =3D Validation.byP=
rovider( HibernateValidator.class ).configure;
config.messageInterpolator(new MyMessageInterpolator())
.traversableResolver( new MyTraversableResolver())
.constraintValidatorFactory(new MyConstraintValidatorFactory());
=
ValidatorFactory factory =3D config.buildValidatorFactory();
-Validator validator =3D factory.getValidator();
+Validator validator =3D factory.getValidator();
+
=
The generated Validator instance is
@@ -505,11 +516,10 @@
=
assertEquals(1, constraintViolations.size());
assertEquals("may not be null", constraintViolations.iterator().next().get=
Message());
+
=
- Validator.validateProperty is for
- example used in the integration of Bean Validation into JSF
- 2.
-
+ Validator.validateProperty is for
+ example used in the integration of Bean Validation into JSF 2.
=
@@ -529,9 +539,9 @@
=
assertEquals(1, constraintViolations.size());
assertEquals("may not be null", constraintViolations.iterator().next().get=
Message());
+
=
- @Valid is not honored by this method.
-
+ @Valid is not honored by this method.
=
@@ -549,13 +559,15 @@
methods
=
-
+
Method
=
Usage
+
=
+
getMessage()
=
@@ -616,19 +628,137 @@
=
Groups allow you to restrict the set of constraints applied duri=
ng
validation. This allows for example for wizard like validation where f=
or
- each step of the wizard only a specified subset of all defined constra=
ints
- get validated. The groups targeted are passed as var-args parameters to
+ each step only a specified subset of the defined constraints get
+ validated. The groups targeted are passed as var-args parameters to
validate,
validateProperty and
- validateValue. All constraints belonging to t=
he
- targeted group are applied during the Section 3.5. When more than one
- group is requested, the order in which the groups are evaluated is not
- deterministic.
+ validateValue. When more than one group is
+ requested, the order in which the groups are evaluated is not
+ deterministic. If no group is specified the default group
+ javax.validation.Default is assumed. Let's have=
a
+ look at a slightly extended Car with
+ Driver example.
=
+
+ Person
+
+ public class Person {
+ @NotNull
+ private String name;
+
+ public Person(String name) {
+ this.name =3D name;
+ }
+
+ // getters and setters ...
+}
+
+ Driver
+
+ public class Driver extends Person {
+ @Min(value =3D 18, message =3D "You have to be=
18 to drive a car", groups =3D DriverChecks.class)
+ public int age;
+
+ @AssertTrue(message =3D "You first have to pas=
s the driving test", groups =3D DriverChecks.class)
+ public boolean hasDrivingLicense;
+
+ public Driver(String name) {
+ super( name );
+ }
+
+ public void passedDrivingTest(boolean b) {
+ hasDrivingLicense =3D b;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age =3D age;
+ }
+}
+
+ Car
+
+ public class Car {
+ @NotNull
+ private String manufacturer;
+
+ @NotNull
+ @Size(min =3D 2, max =3D 14)
+ private String licensePlate;
+
+ @Min(2)
+ private int seatCount;
+
+ @AssertTrue(message =3D "The car has to pass t=
he vehicle inspection first", groups =3D CarChecks.class)
+ private boolean passedVehicleInspection;
+
+ @Valid
+ private Driver driver;
+
+ public Car(String manufacturer, String licencePlate, int seatCount) {
+ this.manufacturer =3D manufacturer;
+ this.licensePlate =3D licencePlate;
+ this.seatCount =3D seatCount;
+ }
+}
+
+ Drive away
+
+ public class GroupTest {
+
+ private static Validator validator;
+
+ @BeforeClass
+ public static void setUp() {
+ ValidatorFactory factory =3D Validation.buildDefaultValidatorFacto=
ry();
+ validator =3D factory.getValidator();
+ }
+
+ @Test
+ public void driveAway() {
+ // create a car and check that everything is ok with it.
+ Car car =3D new Car( "Morris", "DD-AB-123", 2 );
+ Set<ConstraintViolation<Car>> constraintViolations =3D=
validator.validate( car );
+ assertEquals( 0, constraintViolations.size() );
+
+ // but has it passed the vehicle inspection?
+ constraintViolations =3D validator.validate( car, CarChecks.class =
);
+ assertEquals( 1, constraintViolations.size() );
+ assertEquals("The car has to pass the vehicle inspection first", c=
onstraintViolations.iterator().next().getMessage());
+
+ // let's go to the vehicle inspection
+ car.setPassedVehicleInspection( true );
+ assertEquals( 0, validator.validate( car ).size() );
+
+ // now let's add a driver. He is 18, but has not passed the drivin=
g test yet
+ Driver john =3D new Driver( "John Doe" );
+ john.setAge( 18 );
+ car.setDriver( john );
+ constraintViolations =3D validator.validate( car, DriverChecks.cla=
ss );
+ assertEquals( 1, constraintViolations.size() );
+ assertEquals( "You first have to pass the driving test", constrain=
tViolations.iterator().next().getMessage() );
+
+ // ok, John passes the test
+ john.passedDrivingTest( true );
+ assertEquals( 0, validator.validate( car, DriverChecks.class ).siz=
e() );
+
+ // just checking that everything is in order now
+ assertEquals( 0, validator.validate( car, Default.class, CarChecks=
.class, DriverChecks.class ).size() );
+ }
+}
+
+
Group sequences
=
-
+ By default, constraints are evaluated in no particular order a=
nd
+ this regardless of which groups they belong to. It is however useful=
in
+ some situations to control the order of constraints evaluation. There
+ are often scenarios where a preliminary set of constraints should be
+ evaluated prior to other constraints. ...
=
@@ -636,11 +766,11 @@
Built-in constraints
=
Hibernate Validator implements all of the constraints specified =
in
- Bean Validation and also includes some custom constraints. As we'll see
- later, you're not limited to them, you can literally in a minute write
- your own constraints.
+ Bean Validation as well as some custom constraints. list all built-in constraints
+ available in Hibernate Validator.
=
-
+
Built-in constraints
=
@@ -666,7 +796,7 @@
=
yes
=
- field/property
+ field/property=C3=9F
=
check that the annotated element is
false.
@@ -688,7 +818,7 @@
=
- @DecimalMax(value=3D)
+ @DecimalMax
=
yes
=
@@ -704,11 +834,11 @@
the string representation of the max value according to the
BigDecimal string representation.
=
- ?
+
=
- @DecimalMin(value=3D)
+ @DecimalMin
=
yes
=
@@ -724,7 +854,7 @@
the string representation of the min value according to the
BigDecimal string representation.
=
- ?
+
=
@@ -775,7 +905,7 @@
=
- @Max(value=3D)
+ @Max
=
yes
=
@@ -793,7 +923,7 @@
=
- @Min(value=3D)
+ @Min
=
yes
=
@@ -894,5 +1024,17 @@
+
+
+ A word about message interpolation
+
+
+
=
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/xmlconfiguration.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlc=
onfiguration.xml 2009-09-04 07:39:20 UTC (rev 17478)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlc=
onfiguration.xml 2009-09-04 12:30:03 UTC (rev 17479)
@@ -26,4 +26,41 @@
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
XML configuration
+
+
+ validation.xml
+
+
+
+
+
+
+
+
+
+
+
Model view
+ validation-configuration-1.0.xsd
+
+
+
+
+ Constraints mapped in XML
+
+
+
+
+
+
+
+
+
+
+
Model view validation-mapping-1.0.xsd
+
+
--===============3762573102296824498==--
From hibernate-commits at lists.jboss.org Fri Sep 4 10:31:32 2009
Content-Type: multipart/mixed; boundary="===============0714471008830761985=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17480 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Fri, 04 Sep 2009 10:31:32 -0400
Message-ID: <200909041431.n84EVWNg004639@svn01.web.mwc.hst.phx2.redhat.com>
--===============0714471008830761985==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-04 10:31:32 -0400 (Fri, 04 Sep 2009)
New Revision: 17480
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/integ=
ration.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/integration.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/inte=
gration.xml 2009-09-04 12:30:03 UTC (rev 17479)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/inte=
gration.xml 2009-09-04 14:31:32 UTC (rev 17480)
@@ -49,28 +49,31 @@
=
If, for some reason, the feature needs to be disabled, set
hibernate.validator.apply_to_ddl to
- false.
+ false. See also
=
ORM integration
=
Hibernate Validator integrates with both Hibernate and all pure =
Java
- Persistence providers
+ Persistence providers.
=
Hibernate event-based validation
=
- Hibernate Validator has two built-in Hibernate event listeners.
- Whenever a PreInsertEvent or
- PreUpdateEvent occurs, the listeners will verify =
all
- constraints of the entity instance and throw an exception if any
- constraint is violated. Basically, objects will be checked before any
- inserts and before any updates made by Hibernate. This includes chan=
ges
- applied by cascade! This is the most convenient and the easiest way =
to
- activate the validation process. On constraint violation, the event =
will
- raise a runtime InvalidStateException which
- contains an array of InvalidValues describing each
+ Hibernate Validator has a built-in Hibernate event listener -
+ org.hibernate.cfg.beanvalidation.BeanValidationEventListe=
ner
+ - which is part of Hibernate Annotations. Whenever a
+ PreInsertEvent or PreUpdateEvent
+ occurs, the listener will verify all constraints of the entity insta=
nce
+ and throw an exception if any constraint is violated. Basically, obj=
ects
+ will be checked before any inserts and before any updates are made by
+ Hibernate. This includes changes applied by cascade! This is the most
+ convenient and the easiest way to activate the validation process. On
+ constraint violation, the event will raise a runtime
+ ConstraintViolationException which contains a=
set
+ of ConstraintViolations describing each
failure.
=
If Hibernate Validator is present in the classpath, Hibernate
@@ -92,11 +95,11 @@
...
<event type=3D"pre-update">
<listener =
- class=3D"org.hibernate.validator.event.ValidateEventListener"/&g=
t;
+ class=3D"org.hibernate.cfg.beanvalidation.BeanValidat=
ionEventListener"/>
</event>
<event type=3D"pre-insert">
<listener =
- class=3D"org.hibernate.validator.event.ValidateEventListener"/&g=
t;
+ class=3D"org.hibernate.cfg.beanvalidation.BeanValidat=
ionEventListener"/>
</event>
</hibernate-configuration>
@@ -133,40 +136,6 @@
=
- Application-level validation
-
- Hibernate Validator can be applied anywhere in your application
- code.
-
- ClassValidator personValidator =3D new ClassValidator(=
Person.class );
-ClassValidator addressValidator =3D new ClassValidator( Address.class, Res=
ourceBundle.getBundle("messages", Locale.ENGLISH) );
-
-InvalidValue[] validationMessages =3D addressValidator.getInvalidValues(ad=
dress);
-
- The first two lines prepare the Hibernate Validator for class
- checking. The first one relies upon the error messages embedded in
- Hibernate Validator (see ), the second one uses=
a
- resource bundle for these messages. It is considered a good practice to
- execute these lines once and cache the validator instances.
-
- The third line actually validates the Address
- instance and returns an array of InvalidValues. Your
- application logic will then be able to react to the failure.
-
- You can also check a particular property instead of the whole be=
an.
- This might be useful for property per property user interaction
-
- ClassValidator addressValidator =3D new ClassValidator=
( Address.class, ResourceBundle.getBundle("messages", Locale.ENGLISH) );
-
-//only get city property invalid values
-InvalidValue[] validationMessages =3D addressValidator.getInvalidValues(ad=
dress, "city");
-
-//only get potential city property invalid values
-InvalidValue[] validationMessages =3D addressValidator.getPotentialInvalid=
Values("city", "Paris")
-
-
- Presentation layer validation
=
When working with JSF and JBoss Seam,=
one
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-04 12:30:03 UTC (rev 17479)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-04 14:31:32 UTC (rev 17480)
@@ -633,17 +633,21 @@
Using groups
=
Groups allow you to restrict the set of constraints applied duri=
ng
- validation. This allows for example for wizard like validation where f=
or
- each step only a specified subset of the defined constraints get
- validated. The groups targeted are passed as var-args parameters to
+ validation. This allows for example for wizard like validation where in
+ each step only a specified subset of constraints get validated. The gr=
oups
+ targeted are passed as var-args parameters to
validate,
validateProperty and
validateValue. When more than one group is
requested, the order in which the groups are evaluated is not
deterministic. If no group is specified the default group
javax.validation.Default is assumed. Let's have=
a
- look at a slightly extended Car with
- Driver example.
+ look at an extended Car with
+ Driver example. First we have the class
+ Person which has a @NotNull
+ constraint on name. Since no group is specified for this
+ annoation its default groups is
+ javax.validation.Default.
=
Person
@@ -658,7 +662,16 @@
=
// getters and setters ...
}
-
+ Next we have the class Driver exten=
ding
+ Person. Here we are adding the properties
+ age and hasDrivingLicense. In
+ order to drive you must be at least 18 (@Min(18))
+ and you must have a driving license (@AssertTrue).
+ Both of consraints defined on these properties belong to the group
+ DriverChecks. As you can the group is just a si=
mple
+ interface. Using interfaces makes the group feature type safe and allo=
ws
+ for easy refactoring. It also means that groups can inherit from each
+ other by simple class inheritance.Driver
=
public class Driver extends Person {
@@ -685,6 +698,17 @@
}
}
+ The actual group interfaces
+
+ public interface DriverChecks {
+}
+
+public interface CarChecks {
+}
+ Last but not least we add the property
+ passedVehicleInspection to the
+ Car class indecating whether a car passed the r=
oad
+ worthy tests.Car
=
public class Car {
@@ -710,16 +734,17 @@
this.seatCount =3D seatCount;
}
}
-
- The actual group interfaces
-
- public interface DriverChecks {
-}
-
-
-public interface CarChecks {
-}
-
+ Overall three different groups are used in our example.
+ Person.name, Car.manufacturer,
+ Car.licenseplate and
+ Car.seatCount all belong to the
+ Default group. Driver.age =
and
+ Driver.hasDrivingLicense belong to
+ DriverChecks and last but not least
+ Car.passedVehicleInspection belongs to the group
+ CarChecks. The following example shows how pass=
ing
+ different group combinations to the Validator.validate method result in
+ different validation results.Drive away
=
public class GroupTest {
@@ -774,6 +799,12 @@
some situations to control the order of constraints evaluation. There
are often scenarios where a preliminary set of constraints should be
evaluated prior to other constraints. ...
+
+
+ Redefining the default group sequence of a class
+
+
+
=
@@ -849,7 +880,7 @@
the string representation of the max value according to the
BigDecimal string representation.
=
-
+ none
=
@@ -869,7 +900,7 @@
the string representation of the min value according to the
BigDecimal string representation.
=
-
+ none
=
--===============0714471008830761985==--
From hibernate-commits at lists.jboss.org Fri Sep 4 15:14:12 2009
Content-Type: multipart/mixed; boundary="===============6414020412121741601=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17481 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Fri, 04 Sep 2009 15:14:12 -0400
Message-ID: <200909041914.n84JECwU031503@svn01.web.mwc.hst.phx2.redhat.com>
--===============6414020412121741601==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-04 15:14:11 -0400 (Fri, 04 Sep 2009)
New Revision: 17481
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/integ=
ration.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlco=
nfiguration.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/integration.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/inte=
gration.xml 2009-09-04 14:31:32 UTC (rev 17480)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/inte=
gration.xml 2009-09-04 19:14:11 UTC (rev 17481)
@@ -103,7 +103,7 @@
</event>
</hibernate-configuration>
-
+
-
Presentation layer validation
=
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-04 14:31:32 UTC (rev 17480)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-04 19:14:11 UTC (rev 17481)
@@ -271,8 +271,7 @@
Class Person
=
-
-package com.mycompany;
+ package com.mycompany;
=
import javax.validation.constraints.NotNull;
=
@@ -743,8 +742,9 @@
DriverChecks and last but not least
Car.passedVehicleInspection belongs to the group
CarChecks. The following example shows how pass=
ing
- different group combinations to the Validator.validate method result in
- different validation results.
+ different group combinations to the
+ Validator.validate method result in different
+ validation results.Drive away
=
public class GroupTest {
@@ -789,8 +789,25 @@
assertEquals( 0, validator.validate( car, Default.class, CarChecks=
.class, DriverChecks.class ).size() );
}
}
-
+ First we create a car and validate it using no explicit gr=
oup.
+ There are no validation errors, even though the property
+ passedVehicleInspection is false. However, the
+ constraint defined on this property does not belong to the default
+ group.
=
+ Next we just validate the CarChecks group
+ which will fail until we make sure that the case passes the vehicle
+ inspection.
+
+ When we then add a driver to the car and validate against
+ DriverChecks we get again a constraint violation
+ due to the fact that the driver has not yet passed the driving test. O=
nly
+ after setting passedDrivingTest to true the
+ validation against DriverChecks will pass.
+
+ Last but not least, we show that all constraints are passing by
+ validating against all defined groups.
+
Group sequences
=
@@ -873,7 +890,7 @@
BigInteger, String,
byte, short,
int, long and the
- respective warppers of the primtive types.
+ respective warppers of the primtive types.
=
The annotated element must be a number whose value must=
be
lower or equal to the specified maximum. The parameter value is
@@ -913,7 +930,7 @@
BigInteger, String,
byte, short,
int, long and the
- respective warppers of the primtive types.
+ respective warppers of the primtive types.
=
Check whether the property is a number having up to
integer digits and fraction
@@ -1007,7 +1024,7 @@
field/property. Needs to be a string.
=
Check if the string is not null nor
- empty.
+ empty.
=
Column(s) are not null (for String).
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/xmlconfiguration.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlc=
onfiguration.xml 2009-09-04 14:31:32 UTC (rev 17480)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlc=
onfiguration.xml 2009-09-04 19:14:11 UTC (rev 17481)
@@ -30,7 +30,17 @@
validation.xml
=
-
+ The key to enable XML configuration for Hibernate Validator the =
the
+ file validation.xml. If this file exists in the
+ classpath the configuration specified in it will be considered when the
+ ValidationFactory gets created.
+ There can only be one validation.xml in=
the
+ classpath. If more than one is found an exception is thrown.
+ The sh=
ows a
+ model view of the validation-configuration xsd and shows a valid
+ validation.xml. Let's have a look at the different
+ settings.
@@ -44,6 +54,21 @@
--===============6414020412121741601==--
From hibernate-commits at lists.jboss.org Tue Sep 8 13:09:13 2009
Content-Type: multipart/mixed; boundary="===============8511832762772345428=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17493 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Tue, 08 Sep 2009 12:07:19 -0400
Message-ID: <200909081607.n88G7JgL008991@svn01.web.mwc.hst.phx2.redhat.com>
--===============8511832762772345428==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-08 12:07:18 -0400 (Tue, 08 Sep 2009)
New Revision: 17493
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlco=
nfiguration.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-08 13:44:27 UTC (rev 17492)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-08 16:07:18 UTC (rev 17493)
@@ -938,7 +938,7 @@
=
-
+ Redefining the default group sequence of a class
=
The @GroupSequence annotation also fulfills a second purpose. =
It
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/xmlconfiguration.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlc=
onfiguration.xml 2009-09-08 13:44:27 UTC (rev 17492)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlc=
onfiguration.xml 2009-09-08 16:07:18 UTC (rev 17493)
@@ -140,7 +140,6 @@
xmlns=3D"http://jboss.org/xml/ns/javax/validation/map=
ping">
<default-package>org.hibernate.validator.quickstart</default-=
package>
<bean class=3D"Car" ignore-annotations=3D"true">
- <class ignore-annotations=3D"true">
<field name=3D"manufacturer">
<constraint annotation=3D"javax.validation.constraints.NotN=
ull"/>
</field>
@@ -173,7 +172,7 @@
</group-sequence>
</class>
</bean>
- <constraint-definition annotation=3D"org.mycompany.CheckCase">
+ <constraint-definition annotation=3D"org.mycompany.CheckCase" inclu=
de-existing-validator=3D"false">
<validated-by include-existing-validators=3D"false">
<value>org.mycompany.CheckCaseValidator</value>
</validated-by>
@@ -181,8 +180,50 @@
</constraint-mappings>
=
- The mapping xml is closely related to the programmatic API. For =
this
- reason it should suffice to add some comments regarding the
- configuration.
+ The xml configurtion is closely mirroring the programmatic API. =
For
+ this reason it should suffice to just add some comments.
+ default-package is used for all fields where a
+ classname is expected. If the specified class is not fully qualified t=
he
+ configured default package will be used. Every mapping file can then h=
ave
+ several bean nodes, each describing the constrain=
ts
+ on the entity with the specified class name.
+ A given entity can only be configured once across all
+ configuration files. If the same class is configured more than onc=
e an
+ exception is thrown.
+ Settings ignore-annotations to true m=
eans
+ that constraint annotations placed on the configured bean are ignored.=
The
+ default for this value is true. ignore-annotation=
s is
+ also available for the nodes class,
+ fields and getter. If not
+ explicitly specified on these levels the configured
+ bean value applies. Otherwise do the nodes
+ class, fields and
+ getter determine on which level the constraints a=
re
+ placed (see ). T=
he
+ constraint node is then used to add a constraint =
on
+ the corresponding level. Each constraint definition must define the cl=
ass
+ via the annotation attribute. The constraint attributes required by the
+ Bean Validation specification (message,
+ groups and payload) have
+ dedicated nodes. All other constraint specific attributes are configur=
ed
+ using the the element node.
+
+ The class node also allows to reconfigure the default group sequ=
ence
+ (see ) via the
+ group-sequence node.
+
+ Last but not least, constraint annotations cannot be configured =
in
+ xml. However, the list of ConstraintValidators
+ associated to a given constraint can be altered via the
+ constraint-definition node. The
+ annotation attribute represents the constraint
+ annotation being altered. The validated-by elemen=
ts
+ represent the (ordered) list of ConstraintValidator
+ implementations associated to the constraint. If
+ include-existing-validator is set to
+ false, validators defined on the constraint
+ annotation are ignored. If set to true, the list =
of
+ ConstraintValidators described in XML are concatenated to the list of
+ validators described on the annotation.
--===============8511832762772345428==--
From hibernate-commits at lists.jboss.org Wed Sep 9 06:27:33 2009
Content-Type: multipart/mixed; boundary="===============0809892056140405441=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17494 -
beanvalidation/trunk/validation-tck/src/main/resources.
Date: Wed, 09 Sep 2009 06:27:33 -0400
Message-ID: <200909091027.n89ARXoL030937@svn01.web.mwc.hst.phx2.redhat.com>
--===============0809892056140405441==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-09 06:27:33 -0400 (Wed, 09 Sep 2009)
New Revision: 17494
Modified:
beanvalidation/trunk/validation-tck/src/main/resources/tck-audit.xml
Log:
add assertion for payload being ignored in composing constraints
Modified: beanvalidation/trunk/validation-tck/src/main/resources/tck-audit.=
xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-tck/src/main/resources/tck-audit.xml 20=
09-09-08 16:07:18 UTC (rev 17493)
+++ beanvalidation/trunk/validation-tck/src/main/resources/tck-audit.xml 20=
09-09-09 10:27:33 UTC (rev 17494)
@@ -970,6 +970,13 @@
getPayload returns the payloads the constraint hosts or =
an empty set if
none
+
+ Likewise, payload from the main constraint annotation is=
inherited by the
+ composing annotations.
+
+
+ Any payload definition on a composing annotation is igno=
red
+
=
=
--===============0809892056140405441==--
From hibernate-commits at lists.jboss.org Wed Sep 9 07:59:46 2009
Content-Type: multipart/mixed; boundary="===============4420707925291109086=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17495 -
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata.
Date: Wed, 09 Sep 2009 07:59:46 -0400
Message-ID: <200909091159.n89BxkGh012650@svn01.web.mwc.hst.phx2.redhat.com>
--===============4420707925291109086==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-09 07:59:45 -0400 (Wed, 09 Sep 2009)
New Revision: 17495
Modified:
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/t=
ck/tests/metadata/ConstraintDescriptorTest.java
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/t=
ck/tests/metadata/NotEmpty.java
Log:
Add tests for payload assertions in composing contraints
Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/j=
sr303/tck/tests/metadata/ConstraintDescriptorTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/tests/metadata/ConstraintDescriptorTest.java 2009-09-09 10:27:33 UTC (r=
ev 17494)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/tests/metadata/ConstraintDescriptorTest.java 2009-09-09 11:59:45 UTC (r=
ev 17495)
@@ -72,8 +72,10 @@
ConstraintDescriptor> descriptor =3D getConstraintDescriptor( Person.c=
lass, "firstName" );
Set> composingDescriptors =3D descriptor.getComp=
osingConstraints();
assertEquals( composingDescriptors.size(), 2, "Wrong number of composing=
constraints" );
+ boolean hasSize =3D false;
for ( ConstraintDescriptor> desc : composingDescriptors ) {
if ( desc.getAnnotation().annotationType().equals( Size.class ) ) {
+ hasSize =3D true;
Size sizeAnn =3D ( Size ) desc.getAnnotation();
assertEquals( sizeAnn.min(), 5, "The min parameter should reflect the =
overridden parameter" );
assertEquals(
@@ -86,6 +88,7 @@
fail( "Unexpected annotation." );
}
}
+ assertTrue(hasSize, "Size composed annotation not found");
}
=
@Test
@@ -150,6 +153,21 @@
}
=
@Test
+ @SpecAssertions({
+ @SpecAssertion(section =3D "5.5", id =3D "h"),
+ @SpecAssertion(section =3D "5.5", id =3D "i")
+ })
+ public void testComposingConstraintsPayload() {
+ ConstraintDescriptor> descriptor =3D getConstraintDescriptor( Person.c=
lass, "firstName" );
+ Set> composingDescriptors =3D descriptor.getComp=
osingConstraints();
+ assertEquals( composingDescriptors.size(), 2, "Wrong number of composing=
constraints" );
+ for ( ConstraintDescriptor> desc : composingDescriptors ) {
+ assertTrue( desc.getGroups().size() =3D=3D 1 );
+ assertEquals( desc.getPayload().iterator().next(), Severity.Info.class,=
"Wrong payload" );
+ }
+ }
+
+ @Test
@SpecAssertion(section =3D "5.5", id =3D "g")
public void testPayload() {
ConstraintDescriptor> descriptor =3D getConstraintDescriptor( Person.c=
lass, "firstName" );
Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/j=
sr303/tck/tests/metadata/NotEmpty.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/tests/metadata/NotEmpty.java 2009-09-09 10:27:33 UTC (rev 17494)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/tests/metadata/NotEmpty.java 2009-09-09 11:59:45 UTC (rev 17495)
@@ -38,7 +38,7 @@
@Target({ METHOD, FIELD })
@Retention(RUNTIME)
@ReportAsSingleViolation
-(a)NotNull
+(a)NotNull(payload=3D NotEmpty.UnusedPayload.class)
@Size
public @interface NotEmpty {
public abstract String message() default "cannot be empty";
@@ -49,4 +49,6 @@
=
@OverridesAttribute(constraint =3D Size.class, name =3D "min")
public abstract int min() default 5;
+
+ static class UnusedPayload implements Payload {}
}
\ No newline at end of file
--===============4420707925291109086==--
From hibernate-commits at lists.jboss.org Wed Sep 9 08:02:03 2009
Content-Type: multipart/mixed; boundary="===============7357947607268144303=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17496 -
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata.
Date: Wed, 09 Sep 2009 08:02:03 -0400
Message-ID: <200909091202.n89C23Hc013289@svn01.web.mwc.hst.phx2.redhat.com>
--===============7357947607268144303==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-09 08:02:02 -0400 (Wed, 09 Sep 2009)
New Revision: 17496
Modified:
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/t=
ck/tests/metadata/ConstraintDescriptorTest.java
Log:
Add tests for payload assertions in composing contraints
Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/j=
sr303/tck/tests/metadata/ConstraintDescriptorTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/tests/metadata/ConstraintDescriptorTest.java 2009-09-09 11:59:45 UTC (r=
ev 17495)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/tests/metadata/ConstraintDescriptorTest.java 2009-09-09 12:02:02 UTC (r=
ev 17496)
@@ -153,6 +153,20 @@
}
=
@Test
+ @SpecAssertion(section =3D "5.5", id =3D "g")
+ public void testPayload() {
+ ConstraintDescriptor> descriptor =3D getConstraintDescriptor( Person.c=
lass, "firstName" );
+ Set> payload =3D descriptor.getPayload();
+ assertTrue( payload.size() =3D=3D 1 );
+ assertEquals( payload.iterator().next(), Severity.Info.class, "Wrong pay=
load" );
+
+ descriptor =3D getConstraintDescriptor( Order.class, "orderNumber" );
+ payload =3D descriptor.getPayload();
+ assertTrue( payload !=3D null );
+ assertTrue( payload.size() =3D=3D 0 );
+ }
+
+ @Test
@SpecAssertions({
@SpecAssertion(section =3D "5.5", id =3D "h"),
@SpecAssertion(section =3D "5.5", id =3D "i")
@@ -167,20 +181,6 @@
}
}
=
- @Test
- @SpecAssertion(section =3D "5.5", id =3D "g")
- public void testPayload() {
- ConstraintDescriptor> descriptor =3D getConstraintDescriptor( Person.c=
lass, "firstName" );
- Set> payload =3D descriptor.getPayload();
- assertTrue( payload.size() =3D=3D 1 );
- assertEquals( payload.iterator().next(), Severity.Info.class, "Wrong pay=
load" );
-
- descriptor =3D getConstraintDescriptor( Order.class, "orderNumber" );
- payload =3D descriptor.getPayload();
- assertTrue( payload !=3D null );
- assertTrue( payload.size() =3D=3D 0 );
- }
-
private ConstraintDescriptor> getConstraintDescriptor(Class> clazz, S=
tring property) {
Set> descriptors =3D getConstraintDescriptorsFor=
( clazz, property );
assertTrue( descriptors.size() =3D=3D 1, "There should only by one descr=
iptor." );
--===============7357947607268144303==--
From hibernate-commits at lists.jboss.org Wed Sep 9 08:36:01 2009
Content-Type: multipart/mixed; boundary="===============8272419957536194963=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17497 - in
validator/trunk/hibernate-validator/src/main/docbook/en-US: modules and 1
other directory.
Date: Wed, 09 Sep 2009 08:36:01 -0400
Message-ID: <200909091236.n89Ca15W018883@svn01.web.mwc.hst.phx2.redhat.com>
--===============8272419957536194963==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-09 08:36:01 -0400 (Wed, 09 Sep 2009)
New Revision: 17497
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/boots=
trapping.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/master=
.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml 2=
009-09-09 12:02:02 UTC (rev 17496)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/master.xml 2=
009-09-09 12:36:01 UTC (rev 17497)
@@ -111,9 +111,10 @@
=
Last but not least, a few pointers to further information. A gre=
at
source for examples is the Bean Validation TCK which can is available =
for
- anonymous access in the Hibernate SVN repository - https://=
svn.jboss.org/repos/hibernate/validator/trunk.
- Alternatively you can view the tests using fisheye and this url: http://fisheye=
.jboss.org/browse/Hibernate/beanvalidation/trunk/validation-tck/src/main/ja=
va/org/hibernate/jsr303/tck/tests.
+ anonymous access in the Hibernate SVN
+ repository. Alternatively you can view the tests using Hibernate's
+ fisheye installation.
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/bootstrapping.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/boot=
strapping.xml 2009-09-09 12:02:02 UTC (rev 17496)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/boot=
strapping.xml 2009-09-09 12:36:01 UTC (rev 17497)
@@ -27,23 +27,47 @@
Bootstrapping
=
-
+ We already discussed in
+ how to create a Validator instance using the
+ different methods in javax.validation.Validation.=
In
+ this chapter we will discuss the underlying mechanisms and have a closer
+ look at the different configuration possibilties available via the
+ Configuration object.
=
MessageInterpolator
=
-
+ The message interpolator is provided to the ValidatorFactory at
+ construction time using Configuration.messageInterpolator(). This mess=
age
+ interpolator is shared by all validators gener- ated by this
+ ValidatorFactory. It is recommended that MessageInterpolator
+ implementations delegate final interpolation to the Bean Validation
+ default MessageInterpolator to ensure standard Bean Validation
+ interpolation rules are followed. The default implementation is access=
ible
+ through Configuration.getDefaultMessageInterpolator().
=
TraversableResolver
=
-
+ The Bean Validation provider must not access the state of a
+ property, nor validate its constraints if the property is not traversa=
ble.
+ A property is traversable if TraversableResolver returns true for this
+ property.
=
ConstraintValidatorFactory
=
-
+ The default ConstraintValidatorFactory provided by the Bean
+ Validation provider implementation uses the pub- lic constraint no-arg
+ constructor. A custom ConstraintValidatorFactory can be provided for
+ example to benefit from dependency injection control in constraint
+ implementations. Any constraint implementation relying on Con-
+ straintValidatorFactory behaviors specific to an implementation
+ (dependency injection, no no-arg constructor and so on) are not consid=
ered
+ portable, hence great care should be given before walking that path.
+ ConstraintValidatorFactory should not cache instances as the state of =
each
+ instance can be altered in the ini- tialize method.
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-09 12:02:02 UTC (rev 17496)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-09 12:36:01 UTC (rev 17497)
@@ -416,7 +416,7 @@
Validator interface.
=
- Obtaining a Validator instance
+ Obtaining a Validator instance
=
The first step towards validating an entity instance is to get
hold of a Validator instance. The road to this
@@ -427,7 +427,7 @@
method:Validation.buildDefaultValidatorFactory()
=
- ValidatorFactory factory =3D Validation.buildDef=
aultValidatorFactory();
+ ValidatorFactory factory =3D Validation.buildDefaultValidatorFactory();
Validator validator =3D factory.getValidator();You can also use the method
Validation.byDefaultProvider() which will a=
llow
@@ -435,7 +435,8 @@
instance:Validation.byDefaultProvider()
=
- Configuration<?> config =3D Validation.byD=
efaultProvider().configure();
+ Configuration<?> config =3D Validation.byDefaultProvider().conf=
igure();
config.messageInterpolator(new MyMessageInterpolator())
.traversableResolver( new MyTraversableResolver())
.constraintValidatorFactory(new MyConstraintValidatorFactory());
@@ -455,7 +456,8 @@
case of Hibernate Validator the Validator creation looks like:Validation.byProvider( HibernateValidator.class )
=
- ValidatorConfiguration config =3D Validation.byP=
rovider( HibernateValidator.class ).configure;
+ ValidatorConfiguration config =3D Validation.byProvider( HibernateValidator.clas=
s ).configure();
config.messageInterpolator(new MyMessageInterpolator())
.traversableResolver( new MyTraversableResolver())
.constraintValidatorFactory(new MyConstraintValidatorFactory());
--===============8272419957536194963==--
From hibernate-commits at lists.jboss.org Wed Sep 9 10:24:31 2009
Content-Type: multipart/mixed; boundary="===============7628984484136211251=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17498 -
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/graphnavigation.
Date: Wed, 09 Sep 2009 10:24:31 -0400
Message-ID: <200909091424.n89EOVT3007413@svn01.web.mwc.hst.phx2.redhat.com>
--===============7628984484136211251==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-09 10:24:30 -0400 (Wed, 09 Sep 2009)
New Revision: 17498
Modified:
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/t=
ck/tests/validation/graphnavigation/GraphNavigationTest.java
Log:
improve tests
Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/j=
sr303/tck/tests/validation/graphnavigation/GraphNavigationTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/tests/validation/graphnavigation/GraphNavigationTest.java 2009-09-09 12=
:36:01 UTC (rev 17497)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/tests/validation/graphnavigation/GraphNavigationTest.java 2009-09-09 14=
:24:30 UTC (rev 17498)
@@ -229,6 +229,11 @@
Set> errors =3D validator.validate( p, Paren=
t.ProperOrder.class );
assertCorrectNumberOfViolations( errors, 1 );
assertCorrectPropertyPaths( errors, "child.name" );
+ =
+ p.getChild().setName( "Emmanuel" );
+ errors =3D validator.validate( p, Parent.ProperOrder.class );
+ assertCorrectNumberOfViolations( errors, 1 );
+ assertCorrectPropertyPaths( errors, "name" );
}
=
@Test
--===============7628984484136211251==--
From hibernate-commits at lists.jboss.org Wed Sep 9 10:26:29 2009
Content-Type: multipart/mixed; boundary="===============0589159106316211751=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17499 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Wed, 09 Sep 2009 10:26:24 -0400
Message-ID: <200909091426.n89EQOnV007887@svn01.web.mwc.hst.phx2.redhat.com>
--===============0589159106316211751==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-09 10:26:23 -0400 (Wed, 09 Sep 2009)
New Revision: 17499
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/boots=
trapping.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/custo=
mconstraints.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/defin=
econstraints.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/integ=
ration.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/intro=
duction.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/xmlco=
nfiguration.xml
Log:
HV-220
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/bootstrapping.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/boot=
strapping.xml 2009-09-09 14:24:30 UTC (rev 17498)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/boot=
strapping.xml 2009-09-09 14:26:23 UTC (rev 17499)
@@ -1,4 +1,5 @@
+
--===============8392196201963440451==--
From hibernate-commits at lists.jboss.org Fri Sep 18 05:06:48 2009
Content-Type: multipart/mixed; boundary="===============3855675244473487209=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17527 -
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/manytomany.
Date: Fri, 18 Sep 2009 05:06:48 -0400
Message-ID: <200909180906.n8I96mdQ029486@svn01.web.mwc.hst.phx2.redhat.com>
--===============3855675244473487209==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-18 05:06:47 -0400 (Fri, 18 Sep 2009)
New Revision: 17527
Modified:
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/many=
tomany/Company.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/many=
tomany/Group.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/many=
tomany/GroupWithSet.java
Log:
JBPAPP-1075 - Removed the @JoinColumn mappings. Thought not wrong per se th=
ey cause some wrong table creation scripts. Removing them circumvents this =
problem without affecting the test.
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotatio=
ns/manytomany/Company.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/man=
ytomany/Company.java 2009-09-17 21:26:25 UTC (rev 17526)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/man=
ytomany/Company.java 2009-09-18 09:06:47 UTC (rev 17527)
@@ -10,7 +10,8 @@
*/
@MappedSuperclass
public class Company implements Serializable {
- @Column(unique =3D true) private String name;
+ @Column
+ private String name;
=
public String getName() {
return name;
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotatio=
ns/manytomany/Group.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/man=
ytomany/Group.java 2009-09-17 21:26:25 UTC (rev 17526)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/man=
ytomany/Group.java 2009-09-18 09:06:47 UTC (rev 17527)
@@ -5,17 +5,14 @@
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
=
-import org.hibernate.annotations.Where;
-import org.hibernate.annotations.FilterDef;
import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
import org.hibernate.annotations.FilterJoinTable;
+import org.hibernate.annotations.Where;
import org.hibernate.annotations.WhereJoinTable;
=
/**
@@ -38,10 +35,6 @@
}
=
@ManyToMany(cascade =3D CascadeType.PERSIST)
- @JoinTable(name =3D "GROUPS_PERMISSIONS",
- joinColumns =3D @JoinColumn(name =3D "group_id", referencedColumnName =
=3D "id"),
- inverseJoinColumns =3D @JoinColumn(name =3D "permission", referencedCol=
umnName =3D "permission")
- )
@OrderBy("expirationDate")
@Where(clause =3D "1=3D1")
@WhereJoinTable(clause =3D "2=3D2")
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotatio=
ns/manytomany/GroupWithSet.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/man=
ytomany/GroupWithSet.java 2009-09-17 21:26:25 UTC (rev 17526)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/man=
ytomany/GroupWithSet.java 2009-09-18 09:06:47 UTC (rev 17527)
@@ -40,11 +40,6 @@
}
=
@ManyToMany(cascade =3D CascadeType.PERSIST)
- @JoinTable(name =3D "GROUPS_PERMISSIONS",
- uniqueConstraints =3D @UniqueConstraint(columnNames =3D {"group_id", "p=
ermission"}),
- joinColumns =3D @JoinColumn(name =3D "group_id", referencedColumnName =
=3D "id"),
- inverseJoinColumns =3D @JoinColumn(name =3D "permission", referencedCol=
umnName =3D "permission")
- )
@OrderBy("expirationDate")
@Where(clause =3D "1=3D1")
@WhereJoinTable(clause =3D "2=3D2")
--===============3855675244473487209==--
From hibernate-commits at lists.jboss.org Fri Sep 18 05:15:17 2009
Content-Type: multipart/mixed; boundary="===============1998516412146262247=="
MIME-Version: 1.0
From: Martina Weith
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Did you sleep with her?
Date: Fri, 18 Sep 2009 05:15:15 -0400
Message-ID: <200909180915.n8I9FFcK019461@lists01.dmz-a.mwc.hst.phx2.redhat.com>
--===============1998516412146262247==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
--===============1998516412146262247==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
PGh0bWw+CiAgPGJvZHk+CjxoZWFkPgo8dGl0bGU+VG9yb250byBTdGFyIE5ld3NsZXR0ZXI8L3Rp
dGxlPgo8L2hlYWQ+Cgo8Ym9keT4KCjx0YWJsZSB3aWR0aD0iNjQwIiBib3JkZXI9IjAiIGNlbGxz
cGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiIGlkPSJ0
ZF9lbWFpbENvbnRlbnQiIGFsaWduPSJjZW50ZXIiPgoKPCFET0NUWVBFIGh0bWwgUFVCTElDICIt
Ly9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3Jn
L1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgogIDx0ciBzdHlsZT0iY29s
b3I6IzAwMDAwMDsgZm9udC1zaXplOjExcHg7IGZvbnQtZmFtaWx5OlZlcmRhbmEsIEFyaWFsLCBI
ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Ij4KICAgIDx0ZCBzdHlsZT0icGFkZGluZzowIDEwcHggMTBw
eCAwOyB0ZXh0LWFsaWduOnJpZ2h0OyI+CiAgICAgICBXZWxjb21lISZuYnNwO0ZyaWRheSwgU2Vw
LiAxOCwgMjAwOTwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiIHN0
eWxlPSJmb250LXNpemU6MTFweDsgZm9udC1mYW1pbHk6VmVyZGFuYSwgQXJpYWwsIEhlbHZldGlj
YSwgc2Fucy1zZXJpZjsiPgoKCgkgIDxoMSBzdHlsZT0iY29sb3I6cmdiKDAsNTEsMTAyKTtmb250
LWZhbWlseTpBcmlhbCwgVmVyZGFuYSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0
OmJvbGQ7bWFyZ2luOjA7Zm9udC1zaXplOjI0cHg7cGFkZGluZzo1cHggMCAxMHB4IDA7Ij4KCSAg
ICA8YSBocmVmPSJodHRwOi8vZjI3ZjEuZnFheHVmaXAuY24vP2lzZW9xPXNqNzdkMjU0MDRYNjQz
OHoyMDkxTiZpd2F1Y2F4PTBuMWEzNm4zODdFNDI5MzQycXE3R3lXNFUmb3Z5cml3dT0xNkM2cjc5
Mzk4NTQ1Rms5djAzWDIxNTAiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdo
dDpib2xkO2NvbG9yOiMwMDMzNjY7Ij5Nb3JuaW5nIEhlYWRsaW5lczwvYT4KCSAgPC9oMT4KCTwv
dGQ+CiAgPC90cj4KCiA8dHIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImNvbG9yOiNmZmZmZmY7IHRl
eHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxMHB4OyBm
b250LWZhbWlseTpWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyI+CiAgIDx0
ZCBpZD0ibmF2IiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMzY5
OyBwYWRkaW5nOjVweCAwOyI+CgogICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly8yNTM2LmZxYXh1
ZmlwLmNuLz9pbml2ZXk9MTgxUTg4ZDExNTk0cWJyMjM3MzImcGlpY2VrPVAzNDREMjMwMzk3MU40
RTJCQTdqMDczYTgmcHVmeXp5Y3U9MVlwNjJxMDNRMDE2OU1kYmg5NDYzMTk1IiBzdHlsZT0idGV4
dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6I0ZGRkZGRjsiIHRhcmdldD0iX2JsYW5rIiA+CiAgICAg
ICAgICAgICAgTmV3cwogICAgICAgICAgIDwvYT4KICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsKCiAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovLzQ1ZWQ4LmZxYXh1ZmlwLmNuLz9rb2t5
bGk9OW84NTI3MVFUQzg2NHc5MENwMjM2MiZheWRlenU9TjI2NjFFNzk2ODE3NUc2MWExTDE5ODEz
Jm15bnV2YWg9OTgyNVoxSjUwTHMyNDVONkcxNjcyQzdZVSIgc3R5bGU9InRleHQtZGVjb3JhdGlv
bjpub25lO2NvbG9yOiNGRkZGRkY7IiB0YXJnZXQ9Il9ibGFuayIgPgoKICAgICAgICAgICAgICBC
dXNpbmVzcwogICAgICAgICAgIDwvYT4KICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsK
CiAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2JhMGNhYi5mcWF4dWZpcC5jbi8/bnlub2ZpYnU9
MzU2MTM5MjMyNUxwNjJKM1kyOHZjRyZkYWphcmk9NjI4NTQ1MTUzNTUyNjk3MTZlODcyMiZ1bWl0
eXR5ZD03NjQzMWkwdjE4R0Q3NTMyOTA4NzEwMzN5IiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5v
bmU7Y29sb3I6I0ZGRkZGRjsiIHRhcmdldD0iX2JsYW5rIiA+CiAgICAgICAgICAgICAgU3BvcnRz
CiAgICAgICAgICAgPC9hPgogICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwoKICAgICAg
ICAgICA8YSBocmVmPSJodHRwOi8vYjA2LmZxYXh1ZmlwLmNuLz9hbGFkZWFjZWk9eTM0RGs0MjI4
MTBkOTVXMTIxNFU0NDAmeWlmb3A9VDIyMzkwR2QyYzZuVTE3M1QzMjE4cSZlcWl4YWhlPXcwNDMx
NTA4STQ0NTUwUEQwUjcyY2FINjEiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjoj
RkZGRkZGOyIgdGFyZ2V0PSJfYmxhbmsiID4KICAgICAgICAgICAgICBFbnRlcnRhaW5tZW50CiAg
ICAgICAgICAgPC9hPgogICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwoKICAgICAgICAg
ICA8YSBocmVmPSJodHRwOi8vMGFlLmZxYXh1ZmlwLmNuLz95bG9kZXA9MDg4Mzg1MTg4MVd0bXMz
MEowNzA3ODU1QSZla3lvbG9vcj01N3o2NTU5NDg1MzA5WDExYTk4OTEmd2lqaXlodWlkPTYzODQx
NW85Mjc1Njg0MWs5dTc4MSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiNGRkZG
RkY7IiB0YXJnZXQ9Il9ibGFuayIgPgogICAgICAgICAgICAgIExpdmluZwogICAgICAgICAgIDwv
YT4KICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKCiAgICAgICAgICAgPGEgaHJlZj0i
aHR0cDovLzBiOWE3LmZxYXh1ZmlwLmNuLz9hbnlpcXlveHk9NDk0MTgyM3oxMnk0cjJ4OVZ2Nzkm
a2l6ZWh1Z3lxPTgxMDQ3NkozNTYyODI1OTYxRzE5MjdFOCZvbnlndWQ9NjA2NDJIcjE4UW5xZDE4
MWw0M2ZMYzgiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojRkZGRkZGOyIgdGFy
Z2V0PSJfYmxhbmsiID4KCiAgICAgICAgICAgICAgVHJhdmVsCiAgICAgICAgICAgPC9hPgogICAg
ICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwoKICAgICAgICAgICA8YSBocmVmPSJodHRwOi8v
YTA3Yi5mcWF4dWZpcC5jbi8/eWh1dGFwb2t5PTRJOWVCMTczMjMxOUlNUE5zeDE0NTU5MyZhdWd5
d3VxdT02UVo4NFM4bDY1Z240Nzc4djBGMiZlb3Z5bnV2eXk9OXQ1RjgyN044M28wNjI5Tlh6NDQi
IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojRkZGRkZGOyIgdGFyZ2V0PSJfYmxh
bmsiID4KICAgICAgICAgICAgICBEaXZlcnNpb25zCiAgICAgICAgICAgPC9hPgogICAgICAgICZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOwoKICAgPC90ZD4KIDwvdHI+CgoKICA8dHI+CiAgICA8dGQg
dmFsaWduPSJ0b3AiIHN0eWxlPSJwYWRkaW5nLXRvcDoxMHB4OyBjb2xvcjojMDAwMDAwOyBmb250
LXNpemU6MTFweDsgZm9udC1mYW1pbHk6VmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1z
ZXJpZjsiPgoKICAgICAgICAgICAgICAgIDxoMSBpZD0ibmV3cyIgc3R5bGU9ImZvbnQtZmFtaWx5
OkFyaWFsLCBWZXJkYW5hLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6Ym9sZDtt
YXJnaW46MDtmb250LXNpemU6MjRweDtwYWRkaW5nOjVweCAwIDEwcHggMDsiPgoKICAgICAgICAg
ICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly8wMGYuZnFheHVmaXAuY24vP3VqdXVjZWdldW49NDY1
N3ZXNDRCeThUaTE0QThyNktDT283OCZoZWdldT1ZMmk5V3UyNTk3NzdoYjBkNjkxNTg0SU40Jnd5
YmFjaXNhdT1tMDgyMkE4MjdrMGdiMjB5SjM2WTI0IiAgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJj
b2xvcjpyZ2IoMCw1MSwxMDIpO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij4KICAgICAgICAg
ICAgICAgICAgIDxmb250IGNvbG9yPSIjMDAzMzY2Ij4KICAgICAgICAgICAgICAgICAgICBUaGlz
IGlzIGxpYmVyYXRpb24gb2YgeW91ciBkZXNpcmUgZnJvbSB0aGUgY2hhaW5zIG9mIHN0cmVzcyE8
L2ZvbnQ+PC9hPjwvaDE+CiAgICAgICAgICAgICAgICA8cCAgc3R5bGU9InBhZGRpbmc6MDttYXJn
aW46MCAwIDVweCAwOyI+WW91JiMzOTtsbCBoYXZlIGJhY2sgeW91cgoJCQkJbmF0dXJhbCB2aWdv
ciwgYXJkb3IgYW5kIGZpcm1uZXNzIG9mIHlvdXIgJnF1b3Q7ZG93biB0aGVyZSZxdW90OyB0aGlu
Zy4KCQkJCURpZCBJIG1lbnRpb24gdGhhdCBpdCBhbGwgY2FuIGNhdXNlIG5vIGhhcm0gdG8geW91
PyBCZWNhdXNlIGl0CgkJCQlpcyBuYXR1cmFsISBCZWNhdXNlIGl0IHdhcyB0ZXN0ZWQgZm9yIHll
YXJzLiBCZWNhdXNlIGl0IGlzIGZvcgoJCQkJeW91LjwvcD4KCQkJCTxwICBzdHlsZT0icGFkZGlu
ZzowO21hcmdpbjowIDAgNXB4IDA7Ij4mbmJzcDs8L3A+CgkJCQk8cCAgc3R5bGU9InBhZGRpbmc6
MDttYXJnaW46MCAwIDVweCAwOyI+CgkJCQk8aW1nIHNyYz0iaHR0cDovLzkwYjI5NC5mcWF4dWZp
cC5jbi9zcGFjZXIuZ2lmIj48L3A+CgkJCQk8cCAgc3R5bGU9InBhZGRpbmc6MDttYXJnaW46MCAw
IDVweCAwOyI+Jm5ic3A7PC9wPgoKICAgICAgIDwvdGQ+CiAgIDwvdHI+CiAgPHRyIHN0eWxlPSJj
b2xvcjojMDAwMDAwOyBmb250LXNpemU6MTFweDsgZm9udC1mYW1pbHk6VmVyZGFuYSwgQXJpYWws
IEhlbHZldGljYSwgc2Fucy1zZXJpZjsiPgogICAgPHRkIHdpZHRoPSIzMTYiIHZhbGlnbj0idG9w
IiBhbGlnbj0ibGVmdCI+CgoKICAgICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6IzAwNjZBNDsg
Zm9udC1zaXplOjEycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7Ij4KCQlDbGljayA8dT48YSBocmVmPSJo
dHRwOi8vNDc2ZS5mcWF4dWZpcC5jbi8/ZWlsZWdpPTIyMTkwOTUyODZIODE2M1gwMWMwYzImaW5p
c296YXJ5YT05Mjc1OThWNTIxOVdOMzAwN2V2NHJ3MjgwJm9mYWlsaWtpPUg1NXNPMGJwMjAzMjY0
NDhNbjVRMnJKNUEiIHN0eWxlPSJjb2xvcjojMDA2NkE0O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxp
bmU7IiB0YXJnZXQ9Il9ibGFuayI+PGZvbnQgY29sb3I9IiMwMDY2QTQiLz5oZXJlPC9hPjwvdT4g
Zm9yIG1vcmUgTmV3cwoJCTwvcD4KICAgIDwvdGQ+CgogIDwvdHI+Cgo8IURPQ1RZUEUgaHRtbCBQ
VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3
dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KCiAgPHRyPgogICAgPHRkIGJnY29sb3I9IiMw
MDMzNjYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiMwMDMzNjY7IGZvbnQtc2l6ZTowcHg7IiBo
ZWlnaHQ9IjJweCI+Jm5ic3A7PC90ZD4KCiAgPC90cj4KICA8dHIgc3R5bGU9ImNvbG9yOiMwMDAw
MDA7IGZvbnQtc2l6ZToxMXB4OyBmb250LWZhbWlseTpWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNh
LCBzYW5zLXNlcmlmOyIgYmdjb2xvcj0iI0NGRENFNSI+CiAgICA8dGQgaWQ9Im5hdkJvdHRvbSIg
Y2xhc3M9ImJsdWUiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJwYWRkaW5nOjhweDsiPjxzdHJvbmc+
PGEgaHJlZj0iaHR0cDovLzZmOTVmYS5mcWF4dWZpcC5jbi8/bWlpcGlkdT1hVjMzMzF1NDU3RDQw
NTc0MzE1NTc3JmJhcHlzbz02RDUzOTlhMzk0MDk4ZzhNNDc4SzM5JmlodXppaj1BMTg5ODlYOXcx
MjIzbDNVODRBMCIgc3R5bGU9ImNvbG9yOnJnYigwLDUxLDEwMik7dGV4dC1kZWNvcmF0aW9uOnVu
ZGVybGluZTsiIHRhcmdldD0iX2JsYW5rIj48Zm9udCBjb2xvcj0iIzAwMzM2NiI+Q29udGVzdHM8
L2ZvbnQ+PC9hPiZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9Imh0dHA6Ly85MWYuZnFheHVmaXAu
Y24vP3Vxb2ppPTh3ODA5UDkxVUc3MzBMQzI4MTMxNW8xOE8maXBhYW89MTJoODc0NmoxNUYzeDMy
ODBsMzc4NTUmbGl4aWZvZnl0ZT0wMTMwODA2Mzl1NTg2OTc5NTk4YSIgdGFyZ2V0PSJfYmxhbmsi
IHN0eWxlPSJjb2xvcjpyZ2IoMCw1MSwxMDIpO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij48
Zm9udCBjb2xvcj0iIzAwMzM2NiI+SG9yb3Njb3BlczwvZm9udD48L2E+Jm5ic3A7Jm5ic3A7Jm5i
c3A7PGEgaHJlZj0iaHR0cDovL2I4OGI2OC5mcWF4dWZpcC5jbi8/b2NldWRpZz0wdDc5SDJFOHA3
Mjc4MzAzbjAxOTF2JmF4b2Fvdj0xTzI2STY4ODI0SjlCcTc5NDVvNTkwNVImeGlnYWhlb2p1bj05
ajNWMTA5MnAzNjFkNTk3MjUzMSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjpyZ2IoMCw1
MSwxMDIpO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij4KICAgIDxmb250IGNvbG9yPSIjMDAz
MzY2Ij5QaG90byBHYWxsZXJ5PC9mb250PjwvYT4mbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJo
dHRwOi8vOWI0Ny5mcWF4dWZpcC5jbi8/dXJ1dGloPWcwMnJQOExmMGQzMDM5MlA5N2FwNjRLNiZv
c2V0ZXdhenk9Nlg2ODAwNTUzODg5OTQwOHE0OTJRJm9rdWFmPXI3MDkxeTRXUDI1OTQ0SDI3MzND
YTEzRjMiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6cmdiKDAsNTEsMTAyKTt0ZXh0LWRl
Y29yYXRpb246dW5kZXJsaW5lOyI+PGZvbnQgY29sb3I9IiMwMDMzNjYiPlZpZGVvczwvZm9udD48
L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iaHR0cDovL2ZlODhmLmZxYXh1ZmlwLmNuLz9h
Z292YWw9eUk5c0MxMlI0ZmdCVjU3Tzg0SDU1MHA5NiZpZ3VseXQ9OTJNMUM0NzE5QjA1dTdwMDk4
NTM3NzMzJnB1c2FzaW1vPWUxMTc0MDcwNjQ2OTI2NVQzaGtBaGVJIiB0YXJnZXQ9Il9ibGFuayIg
c3R5bGU9ImNvbG9yOnJnYigwLDUxLDEwMik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsiPjxm
b250IGNvbG9yPSIjMDAzMzY2Ij5CbG9nczwvZm9udD48L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEg
aHJlZj0iaHR0cDovLzY3ODIxLmZxYXh1ZmlwLmNuLz95bWF3YXphZD13MjQ2bGdKZ1lhWDI2NWtQ
OTAzZ0YmaXRlbGV1c3k9NzhCMDM4MTA0YTg2MTM0MXk0MFE0MTg0Jnlyb3NpdT00OEgzNWo5WVl5
NDA2QjVtMWc4dSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjpyZ2IoMCw1MSwxMDIpO3Rl
eHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij48Zm9udCBjb2xvcj0iIzAwMzM2NiI+V2VhdGhlcjwv
Zm9udD4KICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJodHRwOi8vZDMwMjkuZnFh
eHVmaXAuY24vP29idWVvPTIwaUxDNDVNTTUzNzc5UVI4MnVWMSZ5am9pam90PTBIM3QwNTY2SDIz
ZjUxNjU2UVQ4MDQmYXBld3VrYWZlPTQ3MVYxMTg2ODdwNWVyRzVUOTQ2IiB0YXJnZXQ9Il9ibGFu
ayIgc3R5bGU9ImNvbG9yOnJnYigwLDUxLDEwMik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsi
Pjxmb250IGNvbG9yPSIjMDAzMzY2Ij5Dcm9zc3dvcmRzPC9mb250PjwvYT4mbmJzcDsmbmJzcDsm
bmJzcDs8YSBocmVmPSJodHRwOi8vZDJiNC5mcWF4dWZpcC5jbi8/dWtlaWp5ZXY9MTFEMDc2TTEw
NXdFNzE0MzhHNDljJnVlYWJ5PXk2MlNhMTE5ajA4aVIwMDUxTmc5aW5nRjYmeWV4eWlvPXpjNTFz
MjI4Nm9pME0yM2cyMDA1MyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjpyZ2IoMCw1MSwx
MDIpO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij48Zm9udCBjb2xvcj0iIzAwMzM2NiI+U3Vk
b2t1PC9mb250PjwvYT48L3N0cm9uZz48L3RkPgogIDwvdHI+CgoKCgoKCiA8dHI+CgogPHRkPiZu
YnNwOzwvdGQ+CiA8L3RyPgogPHRyIHN0eWxlPSJjb2xvcjojNjY2OyBmb250LXNpemU6OXB4OyBm
b250LWZhbWlseTpWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyI+CiAgIDx0
ZCBhbGlnbj0ibGVmdCI+PHAgc3R5bGU9InBhZGRpbmc6NXB4OyBtYXJnaW46NXB4IDVweCA1cHgg
NXB4OyBib3JkZXI6I0FEQURBRCAxcHggc29saWQ7Ij4gR2V0IHRoZXN0YXIuY29tIG9uIHlvdXIg
Y2VsbCBwaG9uZSwgc21hcnQgcGhvbmUgb3IgaVBob25lLiBPdXIgbW9iaWxlIHNlcnZpY2UgaGFz
IGZ1bGwtbGVuZ3RoIHZlcnNpb25zIG9mIHRvcCBzdG9yaWVzIGZyb20gdGhlc3Rhci5jb20gZm9y
bWF0dGVkIGZvciBzbWFsbCBzY3JlZW5zLiBGcm9tIHlvdXIgY2VsbCBwaG9uZSBvciBzbWFydCBw
aG9uZSwganVzdCBnbyB0bwogICA8YSBocmVmPSJodHRwOi8vNzlhMTYuZnFheHVmaXAuY24vP2hh
aGlneXE9MDg2Wjg3ODY4MDM2MTEzNDFZUGUmdW93aWl4ZWhlPUJtNDIydTZjdzA3OW8xMDRnMDdE
MXo1MyZyaWhhaG95b2w9NGhBOGMxMzM2SFk0MzRyMkV5YzAxNSIgdGFyZ2V0PSJfYmxhbmsiIHN0
eWxlPSJjb2xvcjpyZ2IoMCw1MSwxMDIpO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij4KICAg
PGZvbnQgY29sb3I9IiMwMDMzNjYiPnRoaXMgbGluazwvZm9udD48L2E+LiAgRnJvbSB5b3VyIGlQ
aG9uZSwgdmlzaXQKICAgPGEgaHJlZj0iaHR0cDovL2E5OWQ0Ny5mcWF4dWZpcC5jbi8/dGV6aXdl
PTRYbzM3NTQwMzA4M3IxM1NxNjc4M0hleCZoaW9sbz02cFMzejVPN05sRzA4NjEwVDhMNiZkb3dp
bXVjb3M9MzJyMDUwMjFvOTI1NlI3MUQ3cjI0MDcwIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNv
bG9yOnJnYigwLDUxLDEwMik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsiPgogICA8Zm9udCBj
b2xvcj0iIzAwMzM2NiI+dGhpcyBwYWdlPC9mb250PjwvYT4uIE5vIHN1YnNjcmlwdGlvbiBpcyBy
ZXF1aXJlZCBmb3IgdGhlIG1vYmlsZSBzZXJ2aWNlLiA8L3A+PC90ZD4KIDwvdHI+CgogPHRyPgog
ICA8dGQ+Jm5ic3A7PC90ZD4KIDwvdHI+CiA8dHIgc3R5bGU9ImNvbG9yOiM2NjY7IGZvbnQtc2l6
ZTo5cHg7IGZvbnQtZmFtaWx5OlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7
Ij4KICAgPHRkIGFsaWduPSJsZWZ0Ij48cCBzdHlsZT0icGFkZGluZzowO21hcmdpbjowIDAgNXB4
IDA7Ij5UbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbmV3c2xldHRlciwgY2xpY2sgPGEgaHJlZj0i
aHR0cDovLzUzYWRiLmZxYXh1ZmlwLmNuLz9pdXhpZT1QNzE3Mzk2NkhDN2EzQWU1MjdrOCZjb2pl
Y289NDg0NjhMcjQxODgzMlhObDBuNHI2MzEmZGVyYW90aXljaT0yNDFDMTRRcjc0djJtVm9GZXc1
MnM4MCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjpyZ2IoMCw1MSwxMDIpO3RleHQtZGVj
b3JhdGlvbjp1bmRlcmxpbmU7Ij48Zm9udCBjb2xvcj0iIzAwMzM2NiI+aGVyZTwvZm9udD48L2E+
LjwvcD4KICAgICA8cCBzdHlsZT0icGFkZGluZzowO21hcmdpbjowIDAgNXB4IDA7Ij5Db3B5cmln
aHQgVG9yb250byBTdGFyIE5ld3NwYXBlcnMgTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
RGlzdHJpYnV0aW9uLCB0cmFuc21pc3Npb24gb3IgcmVwdWJsaWNhdGlvbiBvZiBhbnkgbWF0ZXJp
YWwgZnJvbQoJIHVzJm5ic3A7aXMgc3RyaWN0bHkgcHJvaGliaXRlZCB3aXRob3V0IHRoZSBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24gb2YgVG9yb250bwoJIFN0YXIgTmV3c3BhcGVycyBMaW1pdGVk
LiBGb3IgaW5mb3JtYXRpb24gcGxlYXNlIGNvbnRhY3QgdXMgdXNpbmcgb3VyCgkgd2VibWFzdGVy
IGZvcm0uIFdlIG9ubGluZSBzaW5jZSAxOTk2LiAmbmJzcDtGb3IgZGV0YWlscyBhYm91dCBvdXIg
cHJpdmFjeSBwb2xpY3ksIHBsZWFzZSBjbGljayA8c3Ryb25nPjxhIGhyZWY9Imh0dHA6Ly82YmQx
LmZxYXh1ZmlwLmNuLz9sdWV5cGFjdT04ajgxREI3QjI5MjNoRjE3MnY4MzAmaHVva292dXh1aT1V
cmxTMTIxNzk1RDA5QnZZNTEwNjZ6OSZ1ZW15em9maXA9WTVBOTIzNHcxT0k4MllISEt2MnB2ZzEi
IHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6cmdiKDAsNTEsMTAyKTt0ZXh0LWRlY29yYXRp
b246dW5kZXJsaW5lOyI+PGZvbnQgY29sb3I9IiMwMDMzNjYiPmhlcmU8L2ZvbnQ+PC9hPjwvc3Ry
b25nPi48L3A+CgogICAgIDxwIHN0eWxlPSJwYWRkaW5nOjA7bWFyZ2luOjAgMCA1cHggMDsiPkNs
aWNrIDxhIGhyZWY9Imh0dHA6Ly84OTI4ZTAuZnFheHVmaXAuY24vP2p5dHljaXJ5aXY9bjQ1cjc4
MDI1RDk0ODE2VmZTNjVhMDUyOCZpc2F2aXA9OW8wMnVjNzc1QUsyOEpuODA1NDY5MjkmdXh5dm9v
enk9aDc0djcwNjhhNnM3dDM1NTM2MFQ0cTciIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6
cmdiKDAsNTEsMTAyKTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI+PGZvbnQgY29sb3I9IiMw
MDMzNjYiPmhlcmU8L2ZvbnQ+PC9hPiB0byBzaWduIHVwIGZvciBtb3JlIGdyZWF0IG5ld3NsZXR0
ZXJzLjwvcD4KCSA8L3RkPgogPC90cj4KCgoKPC90YWJsZT4KCjwvYm9keT4KCgo8L2JvZHk+Cjwv
aHRtbD4K
--===============1998516412146262247==--
From hibernate-commits at lists.jboss.org Fri Sep 18 12:01:54 2009
Content-Type: multipart/mixed; boundary="===============5362821137988425009=="
MIME-Version: 1.0
From: Karina Inman
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Thank you for setting the order No.475456
Date: Fri, 18 Sep 2009 13:01:10 -0400
Message-ID: <000d01ca3879$3d3a4e30$6400a8c0@regurgitatexp0>
--===============5362821137988425009==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Dear Customer!
Thank you for ordering at our online store.
Your order: Sony VAIO A1133651A, was sent at your address.
The tracking number of your postal parcel is indicated in the document atta=
ched to this letter.
Please, print out the postal label for receiving the parcel.
Internet Store.
--===============5362821137988425009==
Content-Type: application/zip
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="nz.zip"
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
UEsFBgAAAAABAAEANAAAAIUcAAAAAA==
--===============5362821137988425009==--
From hibernate-commits at lists.jboss.org Sat Sep 19 15:24:41 2009
Content-Type: multipart/mixed; boundary="===============4267064251105616119=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17528 - in
annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotations:
manytoone and 1 other directory.
Date: Sat, 19 Sep 2009 15:24:40 -0400
Message-ID: <200909191924.n8JJOeKn008396@svn01.web.mwc.hst.phx2.redhat.com>
--===============4267064251105616119==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-19 15:24:40 -0400 (Sat, 19 Sep 2009)
New Revision: 17528
Modified:
annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotation=
s/manytomany/Company.java
annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotation=
s/manytomany/Group.java
annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotation=
s/manytomany/GroupWithSet.java
annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotation=
s/manytoone/Frame.java
annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotation=
s/manytoone/ManyToOneTest.java
annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotation=
s/manytoone/Order.java
Log:
JBPAPP-1075 Annotations - Oracle/Sybase - Unique/Primary Key declared twice=
raises an error
Modified: annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/ann=
otations/manytomany/Company.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/Company.java 2009-09-18 09:06:47 UTC (rev 17527)
+++ annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/Company.java 2009-09-19 19:24:40 UTC (rev 17528)
@@ -10,7 +10,7 @@
*/
@MappedSuperclass
public class Company implements Serializable {
- @Column(unique =3D true) private String name;
+ @Column private String name;
=
public String getName() {
return name;
Modified: annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/ann=
otations/manytomany/Group.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/Group.java 2009-09-18 09:06:47 UTC (rev 17527)
+++ annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/Group.java 2009-09-19 19:24:40 UTC (rev 17528)
@@ -5,12 +5,9 @@
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
=
import org.hibernate.annotations.Where;
import org.hibernate.annotations.FilterDef;
@@ -38,11 +35,6 @@
}
=
@ManyToMany(cascade =3D CascadeType.PERSIST)
- @JoinTable(name =3D "GROUPS_PERMISSIONS",
- uniqueConstraints =3D @UniqueConstraint(columnNames =3D {"group_id", "p=
ermission"}),
- joinColumns =3D @JoinColumn(name =3D "group_id", referencedColumnName =
=3D "id"),
- inverseJoinColumns =3D @JoinColumn(name =3D "permission", referencedCol=
umnName =3D "permission")
- )
@OrderBy("expirationDate")
@Where(clause =3D "1=3D1")
@WhereJoinTable(clause =3D "2=3D2")
Modified: annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/ann=
otations/manytomany/GroupWithSet.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/GroupWithSet.java 2009-09-18 09:06:47 UTC (rev 17527)
+++ annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/GroupWithSet.java 2009-09-19 19:24:40 UTC (rev 17528)
@@ -40,11 +40,6 @@
}
=
@ManyToMany(cascade =3D CascadeType.PERSIST)
- @JoinTable(name =3D "GROUPS_PERMISSIONS",
- uniqueConstraints =3D @UniqueConstraint(columnNames =3D {"group_id", "p=
ermission"}),
- joinColumns =3D @JoinColumn(name =3D "group_id", referencedColumnName =
=3D "id"),
- inverseJoinColumns =3D @JoinColumn(name =3D "permission", referencedCol=
umnName =3D "permission")
- )
@OrderBy("expirationDate")
@Where(clause =3D "1=3D1")
@WhereJoinTable(clause =3D "2=3D2")
Modified: annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/ann=
otations/manytoone/Frame.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/Frame.java 2009-09-18 09:06:47 UTC (rev 17527)
+++ annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/Frame.java 2009-09-19 19:24:40 UTC (rev 17528)
@@ -21,7 +21,6 @@
private Long id;
@OneToMany( mappedBy =3D "frame" )
private Set lenses;
- @Column( unique =3D true )
private String name;
@Formula("lower(name)")
private String lowerName;
Modified: annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/ann=
otations/manytoone/ManyToOneTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/ManyToOneTest.java 2009-09-18 09:06:47 UTC (rev 17527)
+++ annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/ManyToOneTest.java 2009-09-19 19:24:40 UTC (rev 17528)
@@ -249,10 +249,6 @@
s.close();
}
=
- public void testManyToOneAndIdClass() throws Exception {
-
- }
-
public void testManyToOneNonPk() throws Exception {
Session s =3D openSession();
Transaction tx =3D s.beginTransaction();
Modified: annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/ann=
otations/manytoone/Order.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/Order.java 2009-09-18 09:06:47 UTC (rev 17527)
+++ annotations/branches/v3_3_1_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/Order.java 2009-09-19 19:24:40 UTC (rev 17528)
@@ -30,7 +30,7 @@
this.id =3D id;
}
=
- @Column(name=3D"order_nbr", unique =3D true)
+ @Column(name=3D"order_nbr")
public String getOrderNbr() {
return orderNbr;
}
--===============4267064251105616119==--
From hibernate-commits at lists.jboss.org Sat Sep 19 15:59:47 2009
Content-Type: multipart/mixed; boundary="===============8423725281278573107=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17529 - in
annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotations:
manytoone and 1 other directory.
Date: Sat, 19 Sep 2009 15:59:47 -0400
Message-ID: <200909191959.n8JJxlTY013297@svn01.web.mwc.hst.phx2.redhat.com>
--===============8423725281278573107==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: stliu
Date: 2009-09-19 15:59:46 -0400 (Sat, 19 Sep 2009)
New Revision: 17529
Modified:
annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotation=
s/manytomany/Company.java
annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotation=
s/manytomany/Group.java
annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotation=
s/manytomany/GroupWithSet.java
annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotation=
s/manytomany/ManyToManyTest.java
annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotation=
s/manytoone/Frame.java
annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotation=
s/manytoone/ManyToOneTest.java
annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotation=
s/manytoone/Order.java
Log:
JBPAPP-2789 CLONE -Annotations - Oracle/Sybase - Unique/Primary Key declare=
d twice raises an error
Modified: annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/ann=
otations/manytomany/Company.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/Company.java 2009-09-19 19:24:40 UTC (rev 17528)
+++ annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/Company.java 2009-09-19 19:59:46 UTC (rev 17529)
@@ -10,7 +10,7 @@
*/
@MappedSuperclass
public class Company implements Serializable {
- @Column(unique =3D true) private String name;
+ @Column private String name;
=
public String getName() {
return name;
Modified: annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/ann=
otations/manytomany/Group.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/Group.java 2009-09-19 19:24:40 UTC (rev 17528)
+++ annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/Group.java 2009-09-19 19:59:46 UTC (rev 17529)
@@ -5,12 +5,9 @@
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
=
import org.hibernate.annotations.Where;
import org.hibernate.annotations.FilterDef;
@@ -38,11 +35,6 @@
}
=
@ManyToMany(cascade =3D CascadeType.PERSIST)
- @JoinTable(name =3D "GROUPS_PERMISSIONS",
- uniqueConstraints =3D @UniqueConstraint(columnNames =3D {"group_id", "p=
ermission"}),
- joinColumns =3D @JoinColumn(name =3D "group_id", referencedColumnName =
=3D "id"),
- inverseJoinColumns =3D @JoinColumn(name =3D "permission", referencedCol=
umnName =3D "permission")
- )
@OrderBy("expirationDate")
@Where(clause =3D "1=3D1")
@WhereJoinTable(clause =3D "2=3D2")
Modified: annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/ann=
otations/manytomany/GroupWithSet.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/GroupWithSet.java 2009-09-19 19:24:40 UTC (rev 17528)
+++ annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/GroupWithSet.java 2009-09-19 19:59:46 UTC (rev 17529)
@@ -40,11 +40,6 @@
}
=
@ManyToMany(cascade =3D CascadeType.PERSIST)
- @JoinTable(name =3D "GROUPS_PERMISSIONS",
- uniqueConstraints =3D @UniqueConstraint(columnNames =3D {"group_id", "p=
ermission"}),
- joinColumns =3D @JoinColumn(name =3D "group_id", referencedColumnName =
=3D "id"),
- inverseJoinColumns =3D @JoinColumn(name =3D "permission", referencedCol=
umnName =3D "permission")
- )
@OrderBy("expirationDate")
@Where(clause =3D "1=3D1")
@WhereJoinTable(clause =3D "2=3D2")
Modified: annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/ann=
otations/manytomany/ManyToManyTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/ManyToManyTest.java 2009-09-19 19:24:40 UTC (rev 17528)
+++ annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytomany/ManyToManyTest.java 2009-09-19 19:59:46 UTC (rev 17529)
@@ -7,15 +7,12 @@
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.List;
import java.util.Set;
=
import org.hibernate.Hibernate;
import org.hibernate.JDBCException;
import org.hibernate.Session;
import org.hibernate.Transaction;
-import org.hibernate.dialect.HSQLDialect;
-import org.hibernate.test.annotations.RequiresDialect;
import org.hibernate.test.annotations.TestCase;
=
/**
@@ -81,7 +78,6 @@
s.close();
}
=
- @RequiresDialect(HSQLDialect.class)
public void testDefaultCompositePk() throws Exception {
Session s;
Transaction tx;
@@ -265,7 +261,8 @@
* =
* @throws Exception in case the test fails.
* =
- * This fails test fails for other databases (except HSQL) due to missing=
alias in order by clause:
+ * This test only works against databases which allow a mixed usage of
+ * table names and table aliases. The generated SQL for this test is:
* =
* select
* contractor0_.EMPLOYER_ID as EMPLOYER1_1_,
@@ -285,54 +282,54 @@
* =
* =
*/
- @RequiresDialect(HSQLDialect.class)
- public void testOrderByContractor() throws Exception {
- =
- Session s;
- Transaction tx;
- s =3D openSession();
- tx =3D s.beginTransaction();
- =
- // create some test entities
- Employer employer =3D new Employer();
- Contractor contractor1 =3D new Contractor();
- contractor1.setName( "Emmanuel" );
- contractor1.setHourlyRate(100.0f);
- Contractor contractor2 =3D new Contractor();
- contractor2.setName( "Hardy" );
- contractor2.setHourlyRate(99.99f);
- s.persist( contractor1 );
- s.persist( contractor2 );
- =
- // add contractors to employer
- List setOfContractors =3D new ArrayList();
- setOfContractors.add( contractor1 );
- setOfContractors.add( contractor2 );
- employer.setContractors( setOfContractors );
- =
- // add employer to contractors
- Collection employerListContractor1 =3D new ArrayList();
- employerListContractor1.add( employer );
- contractor1.setEmployers( employerListContractor1 );
- =
- Collection employerListContractor2 =3D new ArrayList();
- employerListContractor2.add( employer );
- contractor2.setEmployers( employerListContractor2 );
+// HHH-3577
+// public void testOrderByContractor() throws Exception {
+//
+// Session s;
+// Transaction tx;
+// s =3D openSession();
+// tx =3D s.beginTransaction();
+//
+// // create some test entities
+// Employer employer =3D new Employer();
+// Contractor contractor1 =3D new Contractor();
+// contractor1.setName( "Emmanuel" );
+// contractor1.setHourlyRate(100.0f);
+// Contractor contractor2 =3D new Contractor();
+// contractor2.setName( "Hardy" );
+// contractor2.setHourlyRate(99.99f);
+// s.persist( contractor1 );
+// s.persist( contractor2 );
+//
+// // add contractors to employer
+// List setOfContractors =3D new ArrayList();
+// setOfContractors.add( contractor1 );
+// setOfContractors.add( contractor2 );
+// employer.setContractors( setOfContractors );
+//
+// // add employer to contractors
+// Collection employerListContractor1 =3D new ArrayList();
+// employerListContractor1.add( employer );
+// contractor1.setEmployers( employerListContractor1 );
+//
+// Collection employerListContractor2 =3D new ArrayList();
+// employerListContractor2.add( employer );
+// contractor2.setEmployers( employerListContractor2 );
+//
+// s.flush();
+// s.clear();
+//
+// // assertions
+// employer =3D (Employer) s.get( Employer.class, employer.getId() );
+// assertNotNull( employer );
+// assertNotNull( employer.getContractors() );
+// assertEquals( 2, employer.getContractors().size() );
+// Contractor firstContractorFromDb =3D (Contractor) employer.getContract=
ors().iterator().next();
+// assertEquals( contractor2.getName(), firstContractorFromDb.getName() );
+// tx.rollback();
+// s.close();
+// }
=
- s.flush();
- s.clear();
-
- // assertions
- employer =3D (Employer) s.get( Employer.class, employer.getId() );
- assertNotNull( employer );
- assertNotNull( employer.getContractors() );
- assertEquals( 2, employer.getContractors().size() );
- Contractor firstContractorFromDb =3D (Contractor) employer.getContractor=
s().iterator().next();
- assertEquals( contractor2.getName(), firstContractorFromDb.getName() );
- tx.rollback();
- s.close();
- } =
-
public void testRemoveInBetween() throws Exception {
Session s;
Transaction tx;
@@ -423,7 +420,6 @@
s.close();
}
=
- @RequiresDialect(HSQLDialect.class)
public void testCompositePk() throws Exception {
Session s;
Transaction tx;
Modified: annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/ann=
otations/manytoone/Frame.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/Frame.java 2009-09-19 19:24:40 UTC (rev 17528)
+++ annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/Frame.java 2009-09-19 19:59:46 UTC (rev 17529)
@@ -21,7 +21,6 @@
private Long id;
@OneToMany( mappedBy =3D "frame" )
private Set lenses;
- @Column( unique =3D true )
private String name;
@Formula("lower(name)")
private String lowerName;
Modified: annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/ann=
otations/manytoone/ManyToOneTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/ManyToOneTest.java 2009-09-19 19:24:40 UTC (rev 17528)
+++ annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/ManyToOneTest.java 2009-09-19 19:59:46 UTC (rev 17529)
@@ -249,10 +249,6 @@
s.close();
}
=
- public void testManyToOneAndIdClass() throws Exception {
-
- }
-
public void testManyToOneNonPk() throws Exception {
Session s =3D openSession();
Transaction tx =3D s.beginTransaction();
Modified: annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/ann=
otations/manytoone/Order.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/Order.java 2009-09-19 19:24:40 UTC (rev 17528)
+++ annotations/branches/v3_4_0_GA_CP/src/test/org/hibernate/test/annotatio=
ns/manytoone/Order.java 2009-09-19 19:59:46 UTC (rev 17529)
@@ -30,7 +30,7 @@
this.id =3D id;
}
=
- @Column(name=3D"order_nbr", unique =3D true)
+ @Column(name=3D"order_nbr")
public String getOrderNbr() {
return orderNbr;
}
--===============8423725281278573107==--
From hibernate-commits at lists.jboss.org Tue Sep 22 13:19:24 2009
Content-Type: multipart/mixed; boundary="===============6784116822715571594=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17530 - in
core/trunk/annotations/src: test/java/org/hibernate/test/annotations/query
and 1 other directory.
Date: Tue, 22 Sep 2009 13:19:24 -0400
Message-ID: <200909221719.n8MHJOQ2021996@svn01.web.mwc.hst.phx2.redhat.com>
--===============6784116822715571594==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-22 13:19:24 -0400 (Tue, 22 Sep 2009)
New Revision: 17530
Added:
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/quer=
y/Darkness.java
Modified:
core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.=
java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/quer=
y/Night.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/quer=
y/QueryAndSQLTest.java
Log:
HHH-4364 support @NamedQuery on a @MappedSuperclass (Sharath Reddy)
Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/Annotation=
Binder.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder=
.java 2009-09-19 19:59:46 UTC (rev 17529)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder=
.java 2009-09-22 17:19:24 UTC (rev 17530)
@@ -429,6 +429,12 @@
//TODO: be more strict with secondarytable allowance (not for ids, not f=
or secondary table join columns etc)
InheritanceState inheritanceState =3D inheritanceStatePerClass.get( claz=
zToProcess );
AnnotatedClassType classType =3D mappings.getClassType( clazzToProcess );
+ =
+ //Queries declared in MappedSuperclass should be usable in Subclasses
+ if ( AnnotatedClassType.EMBEDDABLE_SUPERCLASS.equals( classType )) {
+ bindQueries(clazzToProcess, mappings );
+ }
+ =
if ( AnnotatedClassType.EMBEDDABLE_SUPERCLASS.equals( classType ) //will=
be processed by their subentities
|| AnnotatedClassType.NONE.equals( classType ) //to be ignored
|| AnnotatedClassType.EMBEDDABLE.equals( classType ) //allow embeddabl=
e element declaration
Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/=
query/Darkness.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/que=
ry/Darkness.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/que=
ry/Darkness.java 2009-09-22 17:19:24 UTC (rev 17530)
@@ -0,0 +1,13 @@
+package org.hibernate.test.annotations.query;
+
+import javax.persistence.MappedSuperclass;
+
+(a)org.hibernate.annotations.NamedQuery(
+ name =3D "night.olderThan", =
+ query =3D "select n from Night n where n.date <=3D :date"
+)
+
+(a)MappedSuperclass
+public class Darkness {
+
+}
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotatio=
ns/query/Night.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/que=
ry/Night.java 2009-09-19 19:59:46 UTC (rev 17529)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/que=
ry/Night.java 2009-09-22 17:19:24 UTC (rev 17530)
@@ -21,7 +21,7 @@
query =3D "select n from Night n where n.duration =3D :duration",
cacheable =3D true, cacheRegion =3D "nightQuery"
)
-public class Night {
+public class Night extends Darkness {
private Integer id;
private long duration;
private Date date;
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotatio=
ns/query/QueryAndSQLTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/que=
ry/QueryAndSQLTest.java 2009-09-19 19:59:46 UTC (rev 17529)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/que=
ry/QueryAndSQLTest.java 2009-09-22 17:19:24 UTC (rev 17530)
@@ -6,6 +6,7 @@
import java.util.GregorianCalendar;
import java.util.List;
=
+import org.hibernate.MappingException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
@@ -110,6 +111,17 @@
s.close();
}
=
+ public void testImportQueryFromMappedSuperclass() {
+ Session s =3D openSession();
+ try {
+ s.getNamedQuery( "night.olderThan" );
+ }
+ catch(MappingException ex) {
+ assertTrue("Query imported from MappedSuperclass", false);
+ }
+ s.close();
+ }
+ =
public void testSQLQueryWithManyToOne() {
Night n =3D new Night();
Calendar c =3D new GregorianCalendar();
--===============6784116822715571594==--
From hibernate-commits at lists.jboss.org Tue Sep 22 13:43:49 2009
Content-Type: multipart/mixed; boundary="===============1066957677396753839=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17531 - in
core/trunk/annotations/src: test/java/org/hibernate/test/annotations/entity
and 1 other directory.
Date: Tue, 22 Sep 2009 13:43:49 -0400
Message-ID: <200909221743.n8MHhn40026557@svn01.web.mwc.hst.phx2.redhat.com>
--===============1066957677396753839==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-22 13:43:48 -0400 (Tue, 22 Sep 2009)
New Revision: 17531
Added:
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/enti=
ty/FirstName.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/enti=
ty/LastName.java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/enti=
ty/Name.java
Modified:
core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.=
java
core/trunk/annotations/src/test/java/org/hibernate/test/annotations/enti=
ty/BasicHibernateAnnotationsTest.java
Log:
HHH-4232 TypeDef support when used on @Embeddable or @MappedSuperClass clas=
ses
Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/Annotation=
Binder.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder=
.java 2009-09-22 17:19:24 UTC (rev 17530)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder=
.java 2009-09-22 17:43:48 UTC (rev 17531)
@@ -429,12 +429,13 @@
//TODO: be more strict with secondarytable allowance (not for ids, not f=
or secondary table join columns etc)
InheritanceState inheritanceState =3D inheritanceStatePerClass.get( claz=
zToProcess );
AnnotatedClassType classType =3D mappings.getClassType( clazzToProcess );
- =
+
//Queries declared in MappedSuperclass should be usable in Subclasses
- if ( AnnotatedClassType.EMBEDDABLE_SUPERCLASS.equals( classType )) {
- bindQueries(clazzToProcess, mappings );
+ if ( AnnotatedClassType.EMBEDDABLE_SUPERCLASS.equals( classType ) ) {
+ bindQueries( clazzToProcess, mappings );
+ bindTypeDefs(clazzToProcess, mappings);
}
- =
+
if ( AnnotatedClassType.EMBEDDABLE_SUPERCLASS.equals( classType ) //will=
be processed by their subentities
|| AnnotatedClassType.NONE.equals( classType ) //to be ignored
|| AnnotatedClassType.EMBEDDABLE.equals( classType ) //allow embeddabl=
e element declaration
@@ -1942,6 +1943,9 @@
);
List classElements =3D new ArrayList();
XClass returnedClassOrElement =3D inferredData.getClassOrElement();
+
+ //embeddable elements can have type defs
+ bindTypeDefs(returnedClassOrElement, mappings);
addElementsOfAClass(
classElements,
subHolder,
Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotatio=
ns/entity/BasicHibernateAnnotationsTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/ent=
ity/BasicHibernateAnnotationsTest.java 2009-09-22 17:19:24 UTC (rev 17530)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/ent=
ity/BasicHibernateAnnotationsTest.java 2009-09-22 17:43:48 UTC (rev 17531)
@@ -143,6 +143,33 @@
=
}
=
+ //Test import of TypeDefs from MappedSuperclass and =
+ //Embedded classes =
+ public void testImportTypeDefinitions() throws Exception {
+ Name name =3D new Name();
+ name.setFirstName("SHARATH");
+ LastName lastName =3D new LastName();
+ lastName.setName("reddy");
+ name.setLastName(lastName);
+ Session s;
+ Transaction tx;
+ s =3D openSession();
+ tx =3D s.beginTransaction();
+ s.persist(name);
+ tx.commit();
+ s.close();
+ =
+ s =3D openSession();
+ tx =3D s.beginTransaction();
+ name =3D (Name) s.get( Name.class, name.getId() );
+ assertNotNull( name );
+ assertEquals( "sharath", name.getFirstName() );
+ assertEquals( "REDDY", name.getLastName().getName() );
+ s.delete(name);
+ tx.commit();
+ s.close();
+ }
+
public void testNonLazy() throws Exception {
Session s;
Transaction tx;
@@ -325,7 +352,8 @@
Tree.class,
Ransom.class,
ZipCode.class,
- Flight.class
+ Flight.class,
+ Name.class
};
}
=
Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/=
entity/FirstName.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/ent=
ity/FirstName.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/ent=
ity/FirstName.java 2009-09-22 17:43:48 UTC (rev 17531)
@@ -0,0 +1,33 @@
+package org.hibernate.test.annotations.entity;
+
+import javax.persistence.MappedSuperclass;
+
+import org.hibernate.annotations.Type;
+import org.hibernate.annotations.TypeDef;
+import org.hibernate.annotations.Parameter;
+
+
+(a)TypeDef(
+ name =3D "lowerCase",
+ typeClass =3D CasterStringType.class,
+ parameters =3D {
+ @Parameter(name =3D "cast", value =3D "lower")
+ }
+)
+
+(a)MappedSuperclass
+public class FirstName {
+
+ @Type(type=3D"lowerCase")
+ private String firstName;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String lowerCaseName) {
+ this.firstName =3D lowerCaseName;
+ }
+ =
+ =
+}
Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/=
entity/LastName.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/ent=
ity/LastName.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/ent=
ity/LastName.java 2009-09-22 17:43:48 UTC (rev 17531)
@@ -0,0 +1,33 @@
+package org.hibernate.test.annotations.entity;
+
+import javax.persistence.Embeddable;
+
+import org.hibernate.annotations.Parameter;
+import org.hibernate.annotations.Type;
+import org.hibernate.annotations.TypeDef;
+
+
+(a)TypeDef(
+ name =3D "upperCase",
+ typeClass =3D CasterStringType.class,
+ parameters =3D {
+ @Parameter(name =3D "cast", value =3D "upper")
+ }
+)
+
+(a)Embeddable
+public class LastName {
+ =
+ @Type(type=3D"upperCase")
+ private String lastName;
+
+ public String getName() {
+ return lastName;
+ }
+
+ public void setName(String lowerCaseName) {
+ this.lastName =3D lowerCaseName;
+ }
+ =
+ =
+}
Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/=
entity/Name.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/ent=
ity/Name.java (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/ent=
ity/Name.java 2009-09-22 17:43:48 UTC (rev 17531)
@@ -0,0 +1,35 @@
+package org.hibernate.test.annotations.entity;
+
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Transient;
+
+(a)Entity
+public class Name extends FirstName {
+
+ @Id
+ @GeneratedValue
+ private Integer id;
+
+ @Embedded
+ private LastName lastName;
+ =
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id =3D id;
+ }
+
+ public LastName getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(LastName val) {
+ this.lastName =3D val;
+ }
+
+}
--===============1066957677396753839==--
From hibernate-commits at lists.jboss.org Wed Sep 23 06:21:55 2009
Content-Type: multipart/mixed; boundary="===============1712937120211574388=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17532 -
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules.
Date: Wed, 23 Sep 2009 06:21:55 -0400
Message-ID: <200909231021.n8NALtYk031607@svn01.web.mwc.hst.phx2.redhat.com>
--===============1712937120211574388==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-23 06:21:55 -0400 (Wed, 23 Sep 2009)
New Revision: 17532
Modified:
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/custo=
mconstraints.xml
validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/using=
validator.xml
Log:
HV-220 custom constrains changes from Gunnar
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/customconstraints.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/cust=
omconstraints.xml 2009-09-22 17:43:48 UTC (rev 17531)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/cust=
omconstraints.xml 2009-09-23 10:21:55 UTC (rev 17532)
@@ -94,6 +94,7 @@
import java.lang.annotation.Target;
=
import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
=
@Target( { METHOD, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
@@ -101,9 +102,11 @@
@Documented
public @interface CheckCase {
=
- String message() default "{validator.checkcase}";
+ String message() default "{com.mycompany.constraints.checkcase}";
=
Class<?>[] groups() default {};
+
+ Class<? extends Payload>[] payload() default {};
=
CaseMode value();
=
@@ -127,11 +130,17 @@
default to an empty array of type
Class<?>.
+
+
+ an attribute "payload" that can be used by clients of the =
Bean
+ Validation API to asign custom payload objects to a constraint. =
This
+ attribute is not used by the API itself.
+
=
- Besides those two mandatory attributes we add another one allo=
wing
- for the required case mode to be specified. The name "value" is a
- special one, which can be omitted upon using the annotation, if it is
+ Besides those three mandatory attributes we add another one
+ allowing for the required case mode to be specified. The name "value=
" is
+ a special one, which can be omitted upon using the annotation, if it=
is
the only attribute specified, as e.g. in
@CheckCase(CaseMode.UPPER).
=
@@ -227,8 +236,7 @@
=
The passed-in ConstraintValidatorContext
could be used to raise any custom validation errors, but as we are f=
ine
- with the default behavior, we can ignore that parameter for now (TODO
- GM: example for usage).
+ with the default behavior, we can ignore that parameter for now.
=
@@ -241,7 +249,7 @@
src/main/resources with the following
content:
=
- validator.checkcase=3DCase mode must be {value}.
+ com.mycompany.constraints.checkcase=3DCase mode must=
be {value}.
=
If a validation error occurs, the validation runtime will use =
the
default value, that we specified for the message attribute of the
@@ -370,6 +378,7 @@
import java.lang.annotation.Target;
=
import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
=
@@ -382,10 +391,12 @@
@Documented
public @interface ValidLicensePlate {
=
- String message() default "{validator.validlicenseplate}";
+ String message() default "{com.mycompany.constraints.validlicenseplate=
}";
=
Class<?>[] groups() default {};
=
+ Class<? extends Payload>[] payload() default {};
+
}
=
To do so, we just have to annotate the constraint declaration wi=
th
@@ -396,8 +407,6 @@
declare a validator within the @Constraint meta
annotation.
=
- TODO GM: Specifying no validator does not yet work.
-
Using the new compound constraint at the
licensePlate field now is fully equivalent to the
previous version, where we declared the three constraints directly at =
the
@@ -427,10 +436,12 @@
@ReportAsSingleViolation
public @interface ValidLicensePlate {
=
- String message() default "{validator.validlicenseplate}";
+ String message() default "{com.mycompany.constraints.validlicenseplate=
}";
=
Class<?>[] groups() default {};
=
+ Class<? extends Payload>[] payload() default {};
+
}
Modified: validator/trunk/hibernate-validator/src/main/docbook/en-US/module=
s/usingvalidator.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-22 17:43:48 UTC (rev 17531)
+++ validator/trunk/hibernate-validator/src/main/docbook/en-US/modules/usin=
gvalidator.xml 2009-09-23 10:21:55 UTC (rev 17532)
@@ -261,7 +261,7 @@
rentalStation is validated, but also the constr=
aint
on manufacturer from the parent class.
=
- The same would holds true, if Car were =
an
+ The same would hold true, if Car were an
interface implemented by RentalCar.
=
Constraint annotations are aggregated if methods are overridde=
n.
@@ -372,12 +372,8 @@
import java.util.List;
=
import javax.validation.Valid;
-import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
=
-import org.hibernate.validator.constraints.NotEmpty;
-
public class Car {
=
@NotNull
--===============1712937120211574388==--
From hibernate-commits at lists.jboss.org Wed Sep 23 07:50:24 2009
Content-Type: multipart/mixed; boundary="===============4072707926864434408=="
MIME-Version: 1.0
From: Cajka Gillian
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] I missed ya
Date: Wed, 23 Sep 2009 07:50:23 -0400
Message-ID:
--===============4072707926864434408==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
--===============4072707926864434408==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFk
PgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2Vz
dCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJCTxz
dHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhvdmVy
IHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJCTxzdHlsZT4uZGln
ZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhvdmVyIHsgdGV4dC1k
ZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0
ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9u
OnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29y
YXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu
ZTsgIH08L3N0eWxlPgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9u
ZTsgIH0gLmRpZ2VzdCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0
eWxlPgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRp
Z2VzdCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJ
CTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhv
dmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgo8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4K
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9aXNvLTg4NTktMSIgLz4KPHRpdGxlPkRhaWx5IEhlYWRsaW5lczwvdGl0bGU+Cgk8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28t
ODg1OS0xIiAvPgo8L2hlYWQ+Cgo8Ym9keSBsaW5rPSIjMDAzMDVEIiBhbGluaz0iIzAwMzA1RCIg
dmxpbms9IiMwMDMwNUQiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7IGZvbnQ6IDEx
cHgvMTJweCBBcmlhbCxTYW5zLVNlcmlmOyBtYXJnaW46MCAwIDAgMDsiPgoKPCEtLSBIZWFkZXIg
LS0+Cjx0YWJsZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGOyBtYXJnaW4tYm90dG9t
Oi00cHg7IiB3aWR0aD0iODAwcHgiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cjx0
cj4KCTx0ZCB2YWxpZ249InRvcCI+CgkmbmJzcDs8L3RkPgo8L3RyPgo8L3RhYmxlPgo8IS0tIC8v
SGVhZGVyIC0tPgoKPCEtLSBOYXYgLS0+Cjx0YWJsZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjoj
MDAzMDVkOyIgd2lkdGg9IjgwMHB4IiBjZWxscGFkZGluZz0iNiIgY2VsbHNwYWNpbmc9IjAiPgo8
dHI+CgoJPHRkIHZhbGlnbj0idG9wIj4KCTxhIHRpdGxlPSJIT01FIiBzdHlsZT0iY29sb3I6I2Fi
YzRkNjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTJweDsgcGFkZGluZy1sZWZ0OjEy
cHg7IGRpc3BsYXk6aW5saW5lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsiIGhyZWY9Imh0dHA6Ly9l
ZGVlNjUuaHJ1dG90b2MuY24vP2dhbz1GQUFBMzBFMDcwNjk1REFFREVFNiY/d2o9OTY2NjIwOTA0
MDM1Mzg2OTg5ODMiPkhPTUU8L2E+Cgk8YSB0aXRsZT0iTkVXUyIgc3R5bGU9ImNvbG9yOiNhYmM0
ZDY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IHBhZGRpbmctbGVmdDoxMnB4
OyBkaXNwbGF5OmlubGluZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBocmVmPSJodHRwOi8vMDIz
ZGIuaHJ1dG90b2MuY24vP3plPUZBQUEzMEUwNzA2OTVEQUVERUU2Jj92dWk9OTY2NjIwOTA0MDM1
Mzg2OTg5ODMiPk5FV1M8L2E+Cgk8YSB0aXRsZT0iU1BPUlRTIiBzdHlsZT0iY29sb3I6I2FiYzRk
NjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTJweDsgcGFkZGluZy1sZWZ0OjEycHg7
IGRpc3BsYXk6aW5saW5lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsiIGhyZWY9Imh0dHA6Ly8wMjNk
Yi5ocnV0b3RvYy5jbi8/aXg9RkFBQTMwRTA3MDY5NURBRURFRTYmP3pqaj05NjY2MjA5MDQwMzUz
ODY5ODk4MyI+U1BPUlRTPC9hPgoJPGEgdGl0bGU9IkRPIiBzdHlsZT0iY29sb3I6I2FiYzRkNjsg
Zm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTJweDsgcGFkZGluZy1sZWZ0OjEycHg7IGRp
c3BsYXk6aW5saW5lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsiIGhyZWY9Imh0dHA6Ly8wMjNkYi5o
cnV0b3RvYy5jbi8/YnV6PUZBQUEzMEUwNzA2OTVEQUVERUU2Jj91bz05NjY2MjA5MDQwMzUzODY5
ODk4MyI+RE88L2E+Cgk8YSB0aXRsZT0iT1BJTklPTiIgc3R5bGU9ImNvbG9yOiNhYmM0ZDY7IGZv
bnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IHBhZGRpbmctbGVmdDoxMnB4OyBkaXNw
bGF5OmlubGluZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBocmVmPSJodHRwOi8vMDIzZGIuaHJ1
dG90b2MuY24vP3BhPUZBQUEzMEUwNzA2OTVEQUVERUU2Jj9yeT05NjY2MjA5MDQwMzUzODY5ODk4
MyI+T1BJTklPTjwvYT4KCgk8YSB0aXRsZT0iU0hBUkUiIHN0eWxlPSJjb2xvcjojYWJjNGQ2OyBm
b250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxMnB4OyBwYWRkaW5nLWxlZnQ6MTJweDsgZGlz
cGxheTppbmxpbmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyIgaHJlZj0iaHR0cDovLzAyM2RiLmhy
dXRvdG9jLmNuLz9jcWM9RkFBQTMwRTA3MDY5NURBRURFRTYmP2FkdT05NjY2MjA5MDQwMzUzODY5
ODk4MyI+U0hBUkU8L2E+Cgk8YSB0aXRsZT0iSEVMUCIgc3R5bGU9ImNvbG9yOiNhYmM0ZDY7IGZv
bnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IHBhZGRpbmctbGVmdDoxMnB4OyBkaXNw
bGF5OmlubGluZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBocmVmPSJodHRwOi8vMDIzZGIuaHJ1
dG90b2MuY24vP3FqZz1GQUFBMzBFMDcwNjk1REFFREVFNiY/cGo9OTY2NjIwOTA0MDM1Mzg2OTg5
ODMiPkhFTFA8L2E+Cgk8YSB0aXRsZT0iSk9CUyIgc3R5bGU9ImNvbG9yOiNmZmZmZmY7IGZvbnQt
d2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IHBhZGRpbmctbGVmdDoxMnB4OyBkaXNwbGF5
OmlubGluZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBocmVmPSJodHRwOi8vMDIzZGIuaHJ1dG90
b2MuY24vP290cT1GQUFBMzBFMDcwNjk1REFFREVFNiY/b3k9OTY2NjIwOTA0MDM1Mzg2OTg5ODMi
PkpPQlM8L2E+Cgk8YSB0aXRsZT0iQVVUT1MiIHN0eWxlPSJjb2xvcjojZmZmZmZmOyBmb250LXdl
aWdodDogYm9sZDsgZm9udC1zaXplOiAxMnB4OyBwYWRkaW5nLWxlZnQ6MTJweDsgZGlzcGxheTpp
bmxpbmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyIgaHJlZj0iaHR0cDovLzAyM2RiLmhydXRvdG9j
LmNuLz91dT1GQUFBMzBFMDcwNjk1REFFREVFNiY/b25hPTk2NjYyMDkwNDAzNTM4Njk4OTgzIj5B
VVRPUzwvYT4KCTxhIHRpdGxlPSJSRUFMIEVTVEFURSIgc3R5bGU9ImNvbG9yOiNmZmZmZmY7IGZv
bnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IHBhZGRpbmctbGVmdDoxMnB4OyBkaXNw
bGF5OmlubGluZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBocmVmPSJodHRwOi8vMDIzZGIuaHJ1
dG90b2MuY24vP29lPUZBQUEzMEUwNzA2OTVEQUVERUU2Jj9hZz05NjY2MjA5MDQwMzUzODY5ODk4
MyI+UkVBTCBFU1RBVEU8L2E+CgoJPGEgdGl0bGU9IkJVWSAmIFNFTEwiIHN0eWxlPSJjb2xvcjoj
ZmZmZmZmOyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxMnB4OyBwYWRkaW5nLWxlZnQ6
MTJweDsgZGlzcGxheTppbmxpbmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyIgaHJlZj0iaHR0cDov
LzAyM2RiLmhydXRvdG9jLmNuLz9kbz1GQUFBMzBFMDcwNjk1REFFREVFNiY/aXplPTk2NjYyMDkw
NDAzNTM4Njk4OTgzIj5CVVkgJiBTRUxMPC9hPgoJPC90ZD4KPC90cj4KPC90YWJsZT4KPCEtLSAv
L05hdiAtLT4KCgo8dGFibGUgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsiIHdpZHRo
PSI4MDBweCIgY2VsbHBhZGRpbmc9IjYiIGNlbGxzcGFjaW5nPSIwIj4KPHRyPgoJPHRkIHZhbGln
bj0idG9wIj4KCQk8cCBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyI+CgoJCUlmIHlvdSBoYXZlIHRy
b3VibGUgcmVhZGluZyB0aGlzIGUtbWFpbCBvbiB5b3VyIGNvbXB1dGVyIGdvIHRvCgkJPGEgaHJl
Zj0iaHR0cDovLzAyM2RiLmhydXRvdG9jLmNuLz9pZz1GQUFBMzBFMDcwNjk1REFFREVFNiY/dXQ9
OTY2NjIwOTA0MDM1Mzg2OTg5ODMiPgoJCXRoaXMgbGluazwvYT4gYW5kIGZyb20geW91ciBtb2Jp
bGUgZGV2aWNlLCBnbyB0bwoJCTxhIGhyZWY9Imh0dHA6Ly8wMjNkYi5ocnV0b3RvYy5jbi8/dXFv
PUZBQUEzMEUwNzA2OTVEQUVERUU2Jj9xbz05NjY2MjA5MDQwMzUzODY5ODk4MyI+CgkJdGhpcyBs
aW5rPC9hPgoJCTwvcD4KCgk8L3RkPgo8L3RyPgo8L3RhYmxlPgoKPCEtLSBMZWFkZXJib2FyZCBB
ZCBTcG90IC0tPgoKCgoKCjwhLS0gLy8gTGVhZGVyYm9hcmQgQWQgU3BvdCAtLT4KCgo8IS0tIENv
bnRlbnQgLS0+Cjx0YWJsZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGOyIgd2lkdGg9
IjgwMHB4IiBjZWxscGFkZGluZz0iNiIgY2VsbHNwYWNpbmc9IjAiPgo8dHI+Cgk8IS0tIExlZnQg
UmFpbCAtLT4KCTx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjUwMHB4Ij4KCgkJPCEtLSBCbG9jayAt
LT4KCQk8dGFibGUgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I0ZGRkZGRjsgd2lkdGg6IDc3NXB4
OyIgY2VsbHBhZGRpbmc9IjQiIGNlbGxzcGFjaW5nPSIwIj4KCQk8dHI+CgkJCTx0ZCB2YWxpZ249
InRvcCIgd2lkdGg9IjIzMHB4IiBzdHlsZT0iYm9yZGVyLXJpZ2h0OjFweCBkb3R0ZWQgI2NhYzhj
YTsiPgoJCQk8aDIgc3R5bGU9ImZvbnQtc2l6ZToyMHB4OyBsaW5lLWhlaWdodDoyMnB4OyBmb250
LXdlaWdodDo3MDA7IGNvbG9yOiAjNzU3NTc1OyI+CgkJCSZuYnNwOzwvaDI+CgkJCTxoMiBzdHls
ZT0iZm9udC1zaXplOjIwcHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29s
b3I6ICM3NTc1NzU7Ij5Mb2NhbCBOZXdzPC9oMj4KCQkJPHAgc3R5bGU9ImZvbnQtc2l6ZToyMHB4
OyBsaW5lLWhlaWdodDoyMnB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOiAjNzU3NTc1OyI+CgkJ
CTxpbWcgYWx0PSIiIHNyYz0iaHR0cDovLzAyM2RiLmhydXRvdG9jLmNuL3NwYWNlci5naWYiIC8+
PC9wPgoJCQk8cCBzdHlsZT0iZm9udC1zaXplOjIwcHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQt
d2VpZ2h0OjcwMDsgY29sb3I6ICNDQzAwMDA7IHdpZHRoOiA3MDBweDsiPgoJCQlXYXJuaW5nISBQ
cm9ibGVtcyBpbiBiZWQgY2FuIGxlYWQgYSBtYW4gdG8gaG9ycmlibGUgY29uc2VxdWVuY2VzIGFu
ZAoJCQlkZXN0cm95IGhpcyBzZWxmLXJlc3BlY3QhPC9wPgoJCQk8cCBzdHlsZT0iZm9udC1zaXpl
Om1lZGl1bTsgbGluZS1oZWlnaHQ6MjJweDsgd2lkdGg6IDcwMHB4OyI+RG9uJiMzOTt0CgkJCWxl
dCBpdCBoYXBwZW4gdG8geW91LiBUcnkgb3VyIGJvb3N0aW5nIHNvbHV0aW9ucyBhbmQgeW91cgoJ
CQlkZXNpcmUtby1tZXRlciB3aWxsIGFsd2F5cyBnbyBvZmYtc2NhbGUuPGJyIC8+CgkJCS0zMCUg
cHJpY2VzLCBsaW1pdGVkIG9mZmVyISA8Yj48YSBocmVmPSJodHRwOi8vMTViNGY1LmhydXRvdG9j
LmNuLz9ob3c9RkFBQTMwRTA3MDY5NURBRURFRTYmP2FhPTk2NjYyMDkwNDAzNTM4Njk4OTgzIj5P
cmRlciBub3c8L2E+PC9iPi48L3A+CgkJCQk8cCBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTsgbGlu
ZS1oZWlnaHQ6MjJweDsgd2lkdGg6IDcwMHB4OyI+Jm5ic3A7PC9wPgoJCQkJPHAgc3R5bGU9ImZv
bnQtc2l6ZTptZWRpdW07IGxpbmUtaGVpZ2h0OjIycHg7IHdpZHRoOiA3MDBweDsiPiZuYnNwOzwv
cD4KCQkJCTxwIHN0eWxlPSJmb250LXNpemU6bWVkaXVtOyBsaW5lLWhlaWdodDoyMnB4OyB3aWR0
aDogNzAwcHg7Ij4mbmJzcDs8L3A+CgkJCTwhLS0gTG9jYWwgTmV3cyBTdG9yaWVzIC0tPgoKPHN0
eWxlPi5kaWdlc3QgYSB7IHRleHQtZGVjb3JhdGlvbjpub25lOyAgfSAuZGlnZXN0IGE6aG92ZXIg
eyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyAgfTwvc3R5bGU+CgoJCQk8L3RkPgoKCQk8L3Ry
PgoJCTwvdGFibGU+CgkJPCEtLSAvLyBCbG9jayAtLT4KCgkJPHAgc3R5bGU9ImZvbnQtc2l6ZTog
MTBweDsiPlNhdmFubmFobm93LmNvbSwgU2F2YW5uYWggTW9ybmluZyBOZXdzIChjKSAyMDA5IDxh
IHN0eWxlPSJjb2xvcjojMDAzMDVEOyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxMHB4
OyIgaHJlZj0iaHR0cDovLzAyM2RiLmhydXRvdG9jLmNuLz9lZW09RkFBQTMwRTA3MDY5NURBRURF
RTYmP3Vtaj05NjY2MjA5MDQwMzUzODY5ODk4MyI+TW9ycmlzIENvbW11bmljYXRpb25zPC9hPiwg
TExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLjwvcD4KPGEgc3R5bGU9ImNvbG9yOiMwMDMwNUQ7IGZv
bnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEwcHg7IiBocmVmPSJodHRwOi8vMDIzZGIuaHJ1
dG90b2MuY24vP2libz1GQUFBMzBFMDcwNjk1REFFREVFNiY/dWNpPTk2NjYyMDkwNDAzNTM4Njk4
OTgzIj5Db250YWN0IFVzPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwoKPGEgc3R5bGU9ImNv
bG9yOiMwMDMwNUQ7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEwcHg7IiBocmVmPSJo
dHRwOi8vMDIzZGIuaHJ1dG90b2MuY24vP3FyPUZBQUEzMEUwNzA2OTVEQUVERUU2Jj96aj05NjY2
MjA5MDQwMzUzODY5ODk4MyI+Q29weXJpZ2h0PC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwo8
YSBzdHlsZT0iY29sb3I6IzAwMzA1RDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTBw
eDsiIGhyZWY9Imh0dHA6Ly8wMjNkYi5ocnV0b3RvYy5jbi8/cWpxPUZBQUEzMEUwNzA2OTVEQUVE
RUU2Jj9qbD05NjY2MjA5MDQwMzUzODY5ODk4MyI+UHJpdmFjeSBQb2xpY3k8L2E+Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7CjxhIHN0eWxlPSJjb2xvcjojMDAzMDVEOyBmb250LXdlaWdodDogYm9s
ZDsgZm9udC1zaXplOiAxMHB4OyIgaHJlZj0iaHR0cDovLzAyM2RiLmhydXRvdG9jLmNuLz9zaj1G
QUFBMzBFMDcwNjk1REFFREVFNiY/aXM9OTY2NjIwOTA0MDM1Mzg2OTg5ODMiPlRlcm1zIG9mIFNl
cnZpY2U8L2E+CgoJPC90ZD4KCjwvdHI+CjwvdGFibGU+CjwhLS0gLy9Gb290ZXIgLS0+CgoKCjx0
YWJsZSBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWFyZ2luLXRvcDogNXB4OyI+PHRyPjx0ZCBzdHls
ZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog
MTFweDsgY29sb3I6ICM1ODU4NTgiPlRoaXMgbWVzc2FnZSBzZW50IHRvCgk8Yj5oaWJlcm5hdGUt
Y29tbWl0c0BsaXN0cy5qYm9zcy5vcmc8L2I+PGJyPlNhdmFubmFoIE1vcm5pbmcgTmV3cyAtIDEz
NzUgQ2hhdGhhbSBQYXJrd2F5IFAuTy4gQm94IDEwODggIC0gU2F2YW5uYWgsIEdBIDMxNDAyPGJy
PjxiPllvdSBvcHRlZCBpbiB0byB0aGlzIGxpc3QgZnJvbTo8L2I+IFB1YmxpYyBTaWdudXAgRm9y
bSAoPGEgaHJlZj0iaHR0cDovLzAyM2RiLmhydXRvdG9jLmNuLz9qcmE9RkFBQTMwRTA3MDY5NURB
RURFRTYmP2Jlbz05NjY2MjA5MDQwMzUzODY5ODk4MyI+TW9yZSBpbmZvLi4uPC9hPik8YnI+PGEg
aHJlZj0iaHR0cDovLzAyM2RiLmhydXRvdG9jLmNuLz95cz1GQUFBMzBFMDcwNjk1REFFREVFNiY/
eWx5PTk2NjYyMDkwNDAzNTM4Njk4OTgzIiA+VW5zdWJzY3JpYmU8L2E+IHwgPGEgaHJlZj0iaHR0
cDovLzAyM2RiLmhydXRvdG9jLmNuLz91am89RkFBQTMwRTA3MDY5NURBRURFRTYmP3BvPTk2NjYy
MDkwNDAzNTM4Njk4OTgzIj5VcGRhdGUgUHJvZmlsZS9FbWFpbCBBZGRyZXNzPC9hPiB8IDxhIGhy
ZWY9Imh0dHA6Ly8wMjNkYi5ocnV0b3RvYy5jbi8/ZWQ9RkFBQTMwRTA3MDY5NURBRURFRTYmP3Zq
PTk2NjYyMDkwNDAzNTM4Njk4OTgzIj5Gb3J3YXJkIFRvIEEgRnJpZW5kPC9hPjwvdGQ+PC90cj48
L3RhYmxlPjwvYm9keT4KCjwvaHRtbD4K
--===============4072707926864434408==--
From hibernate-commits at lists.jboss.org Wed Sep 23 07:55:32 2009
Content-Type: multipart/mixed; boundary="===============1775655112590384577=="
MIME-Version: 1.0
From: Degenaro Jack
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] About your work
Date: Wed, 23 Sep 2009 07:55:30 -0400
Message-ID:
--===============1775655112590384577==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
--===============1775655112590384577==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFk
PgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2Vz
dCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJCTxz
dHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhvdmVy
IHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJCTxzdHlsZT4uZGln
ZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhvdmVyIHsgdGV4dC1k
ZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0
ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9u
OnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29y
YXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu
ZTsgIH08L3N0eWxlPgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9u
ZTsgIH0gLmRpZ2VzdCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0
eWxlPgoJCQkJCTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRp
Z2VzdCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgoJCQkJ
CTxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIH0gLmRpZ2VzdCBhOmhv
dmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxlPgo8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4K
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9aXNvLTg4NTktMSIgLz4KPHRpdGxlPkRhaWx5IEhlYWRsaW5lczwvdGl0bGU+Cgk8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28t
ODg1OS0xIiAvPgo8L2hlYWQ+Cgo8Ym9keSBsaW5rPSIjMDAzMDVEIiBhbGluaz0iIzAwMzA1RCIg
dmxpbms9IiMwMDMwNUQiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7IGZvbnQ6IDEx
cHgvMTJweCBBcmlhbCxTYW5zLVNlcmlmOyBtYXJnaW46MCAwIDAgMDsiPgoKPCEtLSBIZWFkZXIg
LS0+Cjx0YWJsZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGOyBtYXJnaW4tYm90dG9t
Oi00cHg7IiB3aWR0aD0iODAwcHgiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cjx0
cj4KCTx0ZCB2YWxpZ249InRvcCI+CgkmbmJzcDs8L3RkPgo8L3RyPgo8L3RhYmxlPgo8IS0tIC8v
SGVhZGVyIC0tPgoKPCEtLSBOYXYgLS0+Cjx0YWJsZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjoj
MDAzMDVkOyIgd2lkdGg9IjgwMHB4IiBjZWxscGFkZGluZz0iNiIgY2VsbHNwYWNpbmc9IjAiPgo8
dHI+CgoJPHRkIHZhbGlnbj0idG9wIj4KCTxhIHRpdGxlPSJIT01FIiBzdHlsZT0iY29sb3I6I2Fi
YzRkNjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTJweDsgcGFkZGluZy1sZWZ0OjEy
cHg7IGRpc3BsYXk6aW5saW5lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsiIGhyZWY9Imh0dHA6Ly9m
NTIzNGUud3R1cnV5dWQuY24vP2FxPUUzN0QzRDUwNDkzMDVBMERGNTIzNEUmP3FzPTkyNDgyODMw
MjUyMDM2MDg5MzEyMjkiPkhPTUU8L2E+Cgk8YSB0aXRsZT0iTkVXUyIgc3R5bGU9ImNvbG9yOiNh
YmM0ZDY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IHBhZGRpbmctbGVmdDox
MnB4OyBkaXNwbGF5OmlubGluZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBocmVmPSJodHRwOi8v
NzcwN2Yud3R1cnV5dWQuY24vP2l2PUUzN0QzRDUwNDkzMDVBMERGNTIzNEUmP3Z5PTkyNDgyODMw
MjUyMDM2MDg5MzEyMjkiPk5FV1M8L2E+Cgk8YSB0aXRsZT0iU1BPUlRTIiBzdHlsZT0iY29sb3I6
I2FiYzRkNjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTJweDsgcGFkZGluZy1sZWZ0
OjEycHg7IGRpc3BsYXk6aW5saW5lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsiIGhyZWY9Imh0dHA6
Ly83NzA3Zi53dHVydXl1ZC5jbi8/Ym89RTM3RDNENTA0OTMwNUEwREY1MjM0RSY/c2pqPTkyNDgy
ODMwMjUyMDM2MDg5MzEyMjkiPlNQT1JUUzwvYT4KCTxhIHRpdGxlPSJETyIgc3R5bGU9ImNvbG9y
OiNhYmM0ZDY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IHBhZGRpbmctbGVm
dDoxMnB4OyBkaXNwbGF5OmlubGluZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBocmVmPSJodHRw
Oi8vNzcwN2Yud3R1cnV5dWQuY24vP291PUUzN0QzRDUwNDkzMDVBMERGNTIzNEUmP2R5eT05MjQ4
MjgzMDI1MjAzNjA4OTMxMjI5Ij5ETzwvYT4KCTxhIHRpdGxlPSJPUElOSU9OIiBzdHlsZT0iY29s
b3I6I2FiYzRkNjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTJweDsgcGFkZGluZy1s
ZWZ0OjEycHg7IGRpc3BsYXk6aW5saW5lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsiIGhyZWY9Imh0
dHA6Ly83NzA3Zi53dHVydXl1ZC5jbi8/cmV3PUUzN0QzRDUwNDkzMDVBMERGNTIzNEUmP2xvdT05
MjQ4MjgzMDI1MjAzNjA4OTMxMjI5Ij5PUElOSU9OPC9hPgoKCTxhIHRpdGxlPSJTSEFSRSIgc3R5
bGU9ImNvbG9yOiNhYmM0ZDY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEycHg7IHBh
ZGRpbmctbGVmdDoxMnB4OyBkaXNwbGF5OmlubGluZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBo
cmVmPSJodHRwOi8vNzcwN2Yud3R1cnV5dWQuY24vP29jPUUzN0QzRDUwNDkzMDVBMERGNTIzNEUm
P2V5aD05MjQ4MjgzMDI1MjAzNjA4OTMxMjI5Ij5TSEFSRTwvYT4KCTxhIHRpdGxlPSJIRUxQIiBz
dHlsZT0iY29sb3I6I2FiYzRkNjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTJweDsg
cGFkZGluZy1sZWZ0OjEycHg7IGRpc3BsYXk6aW5saW5lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsi
IGhyZWY9Imh0dHA6Ly83NzA3Zi53dHVydXl1ZC5jbi8/ZmV2PUUzN0QzRDUwNDkzMDVBMERGNTIz
NEUmP3V2bz05MjQ4MjgzMDI1MjAzNjA4OTMxMjI5Ij5IRUxQPC9hPgoJPGEgdGl0bGU9IkpPQlMi
IHN0eWxlPSJjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxMnB4
OyBwYWRkaW5nLWxlZnQ6MTJweDsgZGlzcGxheTppbmxpbmU7IHRleHQtZGVjb3JhdGlvbjpub25l
OyIgaHJlZj0iaHR0cDovLzc3MDdmLnd0dXJ1eXVkLmNuLz92anA9RTM3RDNENTA0OTMwNUEwREY1
MjM0RSY/dWN5PTkyNDgyODMwMjUyMDM2MDg5MzEyMjkiPkpPQlM8L2E+Cgk8YSB0aXRsZT0iQVVU
T1MiIHN0eWxlPSJjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAx
MnB4OyBwYWRkaW5nLWxlZnQ6MTJweDsgZGlzcGxheTppbmxpbmU7IHRleHQtZGVjb3JhdGlvbjpu
b25lOyIgaHJlZj0iaHR0cDovLzc3MDdmLnd0dXJ1eXVkLmNuLz9xYnk9NjVEMkIyMzg5MTg4MEEz
NUQ0ODNCOUImP3ppcD0zMzgxNzExNTUxNTUwNjIzODI1MTY2NyI+QVVUT1M8L2E+Cgk8YSB0aXRs
ZT0iUkVBTCBFU1RBVEUiIHN0eWxlPSJjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDogYm9sZDsg
Zm9udC1zaXplOiAxMnB4OyBwYWRkaW5nLWxlZnQ6MTJweDsgZGlzcGxheTppbmxpbmU7IHRleHQt
ZGVjb3JhdGlvbjpub25lOyIgaHJlZj0iaHR0cDovL2Y0YjMwOC53dHVydXl1ZC5jbi8/b3BpPTY1
RDJCMjM4OTE4ODBBMzVENDgzQjlCJj9scWc9MzM4MTcxMTU1MTU1MDYyMzgyNTE2NjciPlJFQUwg
RVNUQVRFPC9hPgoKCTxhIHRpdGxlPSJCVVkgJiBTRUxMIiBzdHlsZT0iY29sb3I6I2ZmZmZmZjsg
Zm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTJweDsgcGFkZGluZy1sZWZ0OjEycHg7IGRp
c3BsYXk6aW5saW5lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsiIGhyZWY9Imh0dHA6Ly9mNGIzMDgu
d3R1cnV5dWQuY24vP25xPTY1RDJCMjM4OTE4ODBBMzVENDgzQjlCJj93ZT0zMzgxNzExNTUxNTUw
NjIzODI1MTY2NyI+QlVZICYgU0VMTDwvYT4KCTwvdGQ+CjwvdHI+CjwvdGFibGU+CjwhLS0gLy9O
YXYgLS0+CgoKPHRhYmxlIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IiB3aWR0aD0i
ODAwcHgiIGNlbGxwYWRkaW5nPSI2IiBjZWxsc3BhY2luZz0iMCI+Cjx0cj4KCTx0ZCB2YWxpZ249
InRvcCI+CgkJPHAgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsiPgoKCQlJZiB5b3UgaGF2ZSB0cm91
YmxlIHJlYWRpbmcgdGhpcyBlLW1haWwgb24geW91ciBjb21wdXRlciBnbyB0bwoJCTxhIGhyZWY9
Imh0dHA6Ly9mNGIzMDgud3R1cnV5dWQuY24vP3V3PTY1RDJCMjM4OTE4ODBBMzVENDgzQjlCJj9s
ZT0zMzgxNzExNTUxNTUwNjIzODI1MTY2NyI+CgkJdGhpcyBsaW5rPC9hPiBhbmQgZnJvbSB5b3Vy
IG1vYmlsZSBkZXZpY2UsIGdvIHRvCgkJPGEgaHJlZj0iaHR0cDovL2Y0YjMwOC53dHVydXl1ZC5j
bi8/ZGE9NjVEMkIyMzg5MTg4MEEzNUQ0ODNCOUImP2piaj0zMzgxNzExNTUxNTUwNjIzODI1MTY2
NyI+CgkJdGhpcyBsaW5rPC9hPgoJCTwvcD4KCgk8L3RkPgo8L3RyPgo8L3RhYmxlPgoKPCEtLSBM
ZWFkZXJib2FyZCBBZCBTcG90IC0tPgoKCgoKCjwhLS0gLy8gTGVhZGVyYm9hcmQgQWQgU3BvdCAt
LT4KCgo8IS0tIENvbnRlbnQgLS0+Cjx0YWJsZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRkZG
RkZGOyIgd2lkdGg9IjgwMHB4IiBjZWxscGFkZGluZz0iNiIgY2VsbHNwYWNpbmc9IjAiPgo8dHI+
Cgk8IS0tIExlZnQgUmFpbCAtLT4KCTx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjUwMHB4Ij4KCgkJ
PCEtLSBCbG9jayAtLT4KCQk8dGFibGUgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I0ZGRkZGRjsg
d2lkdGg6IDc3NXB4OyIgY2VsbHBhZGRpbmc9IjQiIGNlbGxzcGFjaW5nPSIwIj4KCQk8dHI+CgkJ
CTx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjIzMHB4IiBzdHlsZT0iYm9yZGVyLXJpZ2h0OjFweCBk
b3R0ZWQgI2NhYzhjYTsiPgoJCQk8aDIgc3R5bGU9ImZvbnQtc2l6ZToyMHB4OyBsaW5lLWhlaWdo
dDoyMnB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOiAjNzU3NTc1OyI+CgkJCSZuYnNwOzwvaDI+
CgkJCTxoMiBzdHlsZT0iZm9udC1zaXplOjIwcHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2Vp
Z2h0OjcwMDsgY29sb3I6ICM3NTc1NzU7Ij5Mb2NhbCBOZXdzPC9oMj4KCQkJPHAgc3R5bGU9ImZv
bnQtc2l6ZToyMHB4OyBsaW5lLWhlaWdodDoyMnB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOiAj
NzU3NTc1OyI+CgkJCTxpbWcgYWx0PSIiIHNyYz0iaHR0cDovL2Y0YjMwOC53dHVydXl1ZC5jbi9z
cGFjZXIuZ2lmIiAvPjwvcD4KCQkJPHAgc3R5bGU9ImZvbnQtc2l6ZToyMHB4OyBsaW5lLWhlaWdo
dDoyMnB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOiAjQ0MwMDAwOyB3aWR0aDogNzAwcHg7Ij4K
CQkJV2FybmluZyEgUHJvYmxlbXMgaW4gYmVkIGNhbiBsZWFkIGEgbWFuIHRvIGhvcnJpYmxlIGNv
bnNlcXVlbmNlcyBhbmQKCQkJZGVzdHJveSBoaXMgc2VsZi1yZXNwZWN0ITwvcD4KCQkJPHAgc3R5
bGU9ImZvbnQtc2l6ZTptZWRpdW07IGxpbmUtaGVpZ2h0OjIycHg7IHdpZHRoOiA3MDBweDsiPkRv
biYjMzk7dAoJCQlsZXQgaXQgaGFwcGVuIHRvIHlvdS4gVHJ5IG91ciBib29zdGluZyBzb2x1dGlv
bnMgYW5kIHlvdXIKCQkJZGVzaXJlLW8tbWV0ZXIgd2lsbCBhbHdheXMgZ28gb2ZmLXNjYWxlLjxi
ciAvPgoJCQktMzAlIHByaWNlcywgbGltaXRlZCBvZmZlciEgPGI+PGEgaHJlZj0iaHR0cDovLzZj
NGIzMC53dHVydXl1ZC5jbi8/amc9NjVEMkIyMzg5MTg4MEEzNUQ0ODNCOUImP2tqcj0zMzgxNzEx
NTUxNTUwNjIzODI1MTY2NyI+T3JkZXIgbm93PC9hPjwvYj4uPC9wPgoJCQkJPHAgc3R5bGU9ImZv
bnQtc2l6ZTptZWRpdW07IGxpbmUtaGVpZ2h0OjIycHg7IHdpZHRoOiA3MDBweDsiPiZuYnNwOzwv
cD4KCQkJCTxwIHN0eWxlPSJmb250LXNpemU6bWVkaXVtOyBsaW5lLWhlaWdodDoyMnB4OyB3aWR0
aDogNzAwcHg7Ij4mbmJzcDs8L3A+CgkJCQk8cCBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTsgbGlu
ZS1oZWlnaHQ6MjJweDsgd2lkdGg6IDcwMHB4OyI+Jm5ic3A7PC9wPgoJCQk8IS0tIExvY2FsIE5l
d3MgU3RvcmllcyAtLT4KCjxzdHlsZT4uZGlnZXN0IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsg
IH0gLmRpZ2VzdCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgIH08L3N0eWxl
PgoKCQkJPC90ZD4KCgkJPC90cj4KCQk8L3RhYmxlPgoJCTwhLS0gLy8gQmxvY2sgLS0+CgoJCTxw
IHN0eWxlPSJmb250LXNpemU6IDEwcHg7Ij5TYXZhbm5haG5vdy5jb20sIFNhdmFubmFoIE1vcm5p
bmcgTmV3cyAoYykgMjAwOSA8YSBzdHlsZT0iY29sb3I6IzAwMzA1RDsgZm9udC13ZWlnaHQ6IGJv
bGQ7IGZvbnQtc2l6ZTogMTBweDsiIGhyZWY9Imh0dHA6Ly9mNGIzMDgud3R1cnV5dWQuY24vP3Vv
PTY1RDJCMjM4OTE4ODBBMzVENDgzQjlCJj94YXg9MzM4MTcxMTU1MTU1MDYyMzgyNTE2NjciPk1v
cnJpcyBDb21tdW5pY2F0aW9uczwvYT4sIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC48L3A+Cjxh
IHN0eWxlPSJjb2xvcjojMDAzMDVEOyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxMHB4
OyIgaHJlZj0iaHR0cDovL2Y0YjMwOC53dHVydXl1ZC5jbi8/YWE9NjVEMkIyMzg5MTg4MEEzNUQ0
ODNCOUImP3liPTMzODE3MTE1NTE1NTA2MjM4MjUxNjY3Ij5Db250YWN0IFVzPC9hPiZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOwoKPGEgc3R5bGU9ImNvbG9yOiMwMDMwNUQ7IGZvbnQtd2VpZ2h0OiBi
b2xkOyBmb250LXNpemU6IDEwcHg7IiBocmVmPSJodHRwOi8vZjRiMzA4Lnd0dXJ1eXVkLmNuLz9l
amI9NjVEMkIyMzg5MTg4MEEzNUQ0ODNCOUImP2tqdj0zMzgxNzExNTUxNTUwNjIzODI1MTY2NyI+
Q29weXJpZ2h0PC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwo8YSBzdHlsZT0iY29sb3I6IzAw
MzA1RDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTBweDsiIGhyZWY9Imh0dHA6Ly9m
NGIzMDgud3R1cnV5dWQuY24vP29meT02NUQyQjIzODkxODgwQTM1RDQ4M0I5QiY/b2s9MzM4MTcx
MTU1MTU1MDYyMzgyNTE2NjciPlByaXZhY3kgUG9saWN5PC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOwo8YSBzdHlsZT0iY29sb3I6IzAwMzA1RDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6
ZTogMTBweDsiIGhyZWY9Imh0dHA6Ly9mNGIzMDgud3R1cnV5dWQuY24vP3FyPTY1RDJCMjM4OTE4
ODBBMzVENDgzQjlCJj9oeT0zMzgxNzExNTUxNTUwNjIzODI1MTY2NyI+VGVybXMgb2YgU2Vydmlj
ZTwvYT4KCgk8L3RkPgoKPC90cj4KPC90YWJsZT4KPCEtLSAvL0Zvb3RlciAtLT4KCgoKPHRhYmxl
IGFsaWduPSJjZW50ZXIiIHN0eWxlPSJtYXJnaW4tdG9wOiA1cHg7Ij48dHI+PHRkIHN0eWxlPSJm
b250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB4
OyBjb2xvcjogIzU4NTg1OCI+VGhpcyBtZXNzYWdlIHNlbnQgdG8KCTxiPmhpYmVybmF0ZS1jb21t
aXRzQGxpc3RzLmpib3NzLm9yZzwvYj48YnI+U2F2YW5uYWggTW9ybmluZyBOZXdzIC0gMTM3NSBD
aGF0aGFtIFBhcmt3YXkgUC5PLiBCb3ggMTA4OCAgLSBTYXZhbm5haCwgR0EgMzE0MDI8YnI+PGI+
WW91IG9wdGVkIGluIHRvIHRoaXMgbGlzdCBmcm9tOjwvYj4gUHVibGljIFNpZ251cCBGb3JtICg8
YSBocmVmPSJodHRwOi8vZjRiMzA4Lnd0dXJ1eXVkLmNuLz9nYWU9NjVEMkIyMzg5MTg4MEEzNUQ0
ODNCOUImP3lrZT0zMzgxNzExNTUxNTUwNjIzODI1MTY2NyI+TW9yZSBpbmZvLi4uPC9hPik8YnI+
PGEgaHJlZj0iaHR0cDovL2Y0YjMwOC53dHVydXl1ZC5jbi8/ang9NjVEMkIyMzg5MTg4MEEzNUQ0
ODNCOUImP3lkbz0zMzgxNzExNTUxNTUwNjIzODI1MTY2NyIgPlVuc3Vic2NyaWJlPC9hPiB8IDxh
IGhyZWY9Imh0dHA6Ly9mNGIzMDgud3R1cnV5dWQuY24vP2pzPTY1RDJCMjM4OTE4ODBBMzVENDgz
QjlCJj9paj0zMzgxNzExNTUxNTUwNjIzODI1MTY2NyI+VXBkYXRlIFByb2ZpbGUvRW1haWwgQWRk
cmVzczwvYT4gfCA8YSBocmVmPSJodHRwOi8vZjRiMzA4Lnd0dXJ1eXVkLmNuLz9vZmU9NjVEMkIy
Mzg5MTg4MEEzNUQ0ODNCOUImP2puPTMzODE3MTE1NTE1NTA2MjM4MjUxNjY3Ij5Gb3J3YXJkIFRv
IEEgRnJpZW5kPC9hPjwvdGQ+PC90cj48L3RhYmxlPjwvYm9keT4KCjwvaHRtbD4K
--===============1775655112590384577==--
From hibernate-commits at lists.jboss.org Wed Sep 23 12:12:50 2009
Content-Type: multipart/mixed; boundary="===============8599747514056150336=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17533 - in search/trunk/src:
test/java/org/hibernate/search/test/embedded and 1 other directories.
Date: Wed, 23 Sep 2009 12:12:50 -0400
Message-ID: <200909231612.n8NGCoHX031877@svn01.web.mwc.hst.phx2.redhat.com>
--===============8599747514056150336==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-23 12:12:46 -0400 (Wed, 23 Sep 2009)
New Revision: 17533
Added:
search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/
search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Add=
ress.java
search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Att=
ribute.java
search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Att=
ributeValue.java
search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Nes=
tedEmbeddedTest.java
search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Per=
son.java
search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Pla=
ce.java
search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Pro=
duct.java
Modified:
search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderCo=
ntainedEntity.java
Log:
HSEARCH-391 - HSEARCH-391 - made sure the top level indexed entity gets fou=
nd by recusively calling processContainedInInstances.
Refactored the code by splitting out more methods
Modified: search/trunk/src/main/java/org/hibernate/search/engine/DocumentBu=
ilderContainedEntity.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderC=
ontainedEntity.java 2009-09-23 10:21:55 UTC (rev 17532)
+++ search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderC=
ontainedEntity.java 2009-09-23 16:12:46 UTC (rev 17533)
@@ -66,7 +66,7 @@
protected final PropertiesMetadata metadata =3D new PropertiesMetadata();
protected final XClass beanClass;
protected Set> mappedSubclasses =3D new HashSet>();
- protected ReflectionManager reflectionManager; //available only during in=
itializationa and post-initialization
+ protected ReflectionManager reflectionManager; //available only during in=
itialization and post-initialization
protected int level =3D 0;
protected int maxLevel =3D Integer.MAX_VALUE;
protected final ScopedAnalyzer analyzer =3D new ScopedAnalyzer();
@@ -122,28 +122,28 @@
private void initializeClass(XClass clazz, PropertiesMetadata propertiesM=
etadata, boolean isRoot, String prefix,
Set processedClasses, InitContext context) {
List hierarchy =3D new ArrayList();
- for ( XClass currClass =3D clazz; currClass !=3D null; currClass =3D cur=
rClass.getSuperclass() ) {
- hierarchy.add( currClass );
+ for ( XClass currentClass =3D clazz; currentClass !=3D null; currentClas=
s =3D currentClass.getSuperclass() ) {
+ hierarchy.add( currentClass );
}
=
/*
* Iterate the class hierarchy top down. This allows to override the defa=
ult analyzer for the properties if the class holds one
*/
for ( int index =3D hierarchy.size() - 1; index >=3D 0; index-- ) {
- XClass currClass =3D hierarchy.get( index );
+ XClass currentClass =3D hierarchy.get( index );
=
- initalizeClassLevelAnnotations( currClass, propertiesMetadata, isRoot, =
prefix, context );
+ initializeClassLevelAnnotations( currentClass, propertiesMetadata, isRo=
ot, prefix, context );
=
// rejecting non properties (ie regular methods) because the object is =
loaded from Hibernate,
// so indexing a non property does not make sense
- List methods =3D currClass.getDeclaredProperties( XClass.ACC=
ESS_PROPERTY );
+ List methods =3D currentClass.getDeclaredProperties( XClass.=
ACCESS_PROPERTY );
for ( XProperty method : methods ) {
initializeMemberLevelAnnotations(
method, propertiesMetadata, isRoot, prefix, processedClasses, context
);
}
=
- List fields =3D currClass.getDeclaredProperties( XClass.ACCE=
SS_FIELD );
+ List fields =3D currentClass.getDeclaredProperties( XClass.A=
CCESS_FIELD );
for ( XProperty field : fields ) {
initializeMemberLevelAnnotations(
field, propertiesMetadata, isRoot, prefix, processedClasses, context
@@ -162,7 +162,7 @@
* @param prefix The current prefix used for the Document fi=
eld names.
* @param context Handle to default configuration settings.
*/
- private void initalizeClassLevelAnnotations(XClass clazz, PropertiesMetad=
ata propertiesMetadata, boolean isRoot, String prefix, InitContext context)=
{
+ private void initializeClassLevelAnnotations(XClass clazz, PropertiesMeta=
data propertiesMetadata, boolean isRoot, String prefix, InitContext context=
) {
=
// check for a class level specified analyzer
Analyzer analyzer =3D getAnalyzer( clazz, context );
@@ -176,8 +176,8 @@
// Check for any ClassBridges annotation.
ClassBridges classBridgesAnn =3D clazz.getAnnotation( ClassBridges.class=
);
if ( classBridgesAnn !=3D null ) {
- ClassBridge[] cbs =3D classBridgesAnn.value();
- for ( ClassBridge cb : cbs ) {
+ ClassBridge[] classBridges =3D classBridgesAnn.value();
+ for ( ClassBridge cb : classBridges ) {
bindClassBridgeAnnotation( prefix, propertiesMetadata, cb, context );
}
}
@@ -256,15 +256,15 @@
}
=
private void checkForAnalyzerDiscriminator(XAnnotatedElement annotatedEle=
ment, PropertiesMetadata propertiesMetadata) {
- AnalyzerDiscriminator discriminiatorAnn =3D annotatedElement.getAnnotati=
on( AnalyzerDiscriminator.class );
- if ( discriminiatorAnn !=3D null ) {
+ AnalyzerDiscriminator discriminatorAnn =3D annotatedElement.getAnnotatio=
n( AnalyzerDiscriminator.class );
+ if ( discriminatorAnn !=3D null ) {
if ( propertiesMetadata.discriminator !=3D null ) {
throw new SearchException(
"Multiple AnalyzerDiscriminator defined in the same class hierarchy:=
" + beanClass.getName()
);
}
=
- Class extends Discriminator> discriminatorClass =3D discriminiatorAnn=
.impl();
+ Class extends Discriminator> discriminatorClass =3D discriminatorAnn.=
impl();
try {
propertiesMetadata.discriminator =3D discriminatorClass.newInstance();
}
@@ -372,7 +372,7 @@
String localPrefix =3D buildEmbeddedPrefix( prefix, embeddedAnn, membe=
r );
initializeClass( elementClass, metadata, false, localPrefix, processed=
Classes, context );
/**
- * We will only index the "expected" type but that's OK, HQL cannot do=
downcasting either
+ * We will only index the "expected" type but that's OK, HQL cannot do=
down-casting either
*/
if ( member.isArray() ) {
propertiesMetadata.embeddedContainers.add( PropertiesMetadata.Contain=
er.ARRAY );
@@ -596,8 +596,6 @@
return strategy;
}
=
-
- //TODO could we use T instead of EntityClass?
public void addWorkToQueue(Class entityClass, T entity, Serializable i=
d, WorkType workType, List queue, SearchFactoryImplementor sear=
chFactoryImplementor) {
/**
* When references are changed, either null or another one, we expect di=
rty checking to be triggered (both sides
@@ -605,75 +603,101 @@
* When the internal object is changed, we apply the {Add|Update}Work on=
containedIns
*/
if ( workType.searchForContainers() ) {
- processContainedIn( entity, queue, metadata, searchFactoryImplementor );
+ processContainedInInstances( entity, queue, metadata, searchFactoryImpl=
ementor );
}
}
=
- private void processContainedIn(Object instance, List queue, =
PropertiesMetadata metadata, SearchFactoryImplementor searchFactoryImplemen=
tor) {
+ /**
+ * If we have a work instance we have to check whether the intance to be =
indexed is contained in any other indexed entities.
+ *
+ * @param instance The instance to be indexed
+ * @param queue the current work queue
+ * @param metadata metadata
+ * @param searchFactoryImplementor the current session
+ */
+ private void processContainedInInstances(Object instance, List queue, PropertiesMetadata metadata, SearchFactoryImplementor searchFa=
ctoryImplementor) {
for ( int i =3D 0; i < metadata.containedInGetters.size(); i++ ) {
XMember member =3D metadata.containedInGetters.get( i );
Object value =3D ReflectionHelper.getMemberValue( instance, member );
+
if ( value =3D=3D null ) {
continue;
}
=
if ( member.isArray() ) {
- for ( Object arrayValue : ( Object[] ) value ) {
- //highly inneficient but safe wrt the actual targeted class
- Class> valueClass =3D Hibernate.getClass( arrayValue );
- DocumentBuilderIndexedEntity> builderIndexedEntity =3D searchFactor=
yImplementor.getDocumentBuilderIndexedEntity(
- valueClass
- );
- if ( builderIndexedEntity =3D=3D null ) {
- continue;
- }
- processContainedInValue(
- arrayValue, queue, valueClass,
- builderIndexedEntity, searchFactoryImplementor
- );
+ @SuppressWarnings("unchecked")
+ T[] array =3D ( T[] ) value;
+ for ( T arrayValue : array ) {
+ processSingleContainedInInstance( queue, searchFactoryImplementor, ar=
rayValue );
}
}
else if ( member.isCollection() ) {
- Collection collection;
- if ( Map.class.equals( member.getCollectionClass() ) ) {
- //hum
- collection =3D ( ( Map ) value ).values();
+ Collection collection =3D getActualCollection( member, value );
+ for ( T collectionValue : collection ) {
+ processSingleContainedInInstance( queue, searchFactoryImplementor, co=
llectionValue );
}
- else {
- collection =3D ( Collection ) value;
- }
- for ( Object collectionValue : collection ) {
- //highly inneficient but safe wrt the actual targeted class
- Class> valueClass =3D Hibernate.getClass( collectionValue );
- DocumentBuilderIndexedEntity> builderIndexedEntity =3D searchFactor=
yImplementor.getDocumentBuilderIndexedEntity(
- valueClass
- );
- if ( builderIndexedEntity =3D=3D null ) {
- continue;
- }
- processContainedInValue(
- collectionValue, queue, valueClass,
- builderIndexedEntity, searchFactoryImplementor
- );
- }
}
else {
- Class> valueClass =3D Hibernate.getClass( value );
- DocumentBuilderIndexedEntity> builderIndexedEntity =3D searchFactory=
Implementor.getDocumentBuilderIndexedEntity(
- valueClass
- );
- if ( builderIndexedEntity =3D=3D null ) {
- continue;
- }
- processContainedInValue( value, queue, valueClass, builderIndexedEntit=
y, searchFactoryImplementor );
+ processSingleContainedInInstance( queue, searchFactoryImplementor, val=
ue );
}
}
- //an embedded cannot have a useful @ContainedIn (no shared reference)
- //do not walk through them
}
=
- private void processContainedInValue(Object value, List queue=
, Class> valueClass,
- DocumentBuilderIndexedEntity builderIndexedEntity, SearchFactor=
yImplementor searchFactoryImplementor) {
+ /**
+ * A {@code XMember } instance treats a map as a collection as well in wh=
ich case the map values are returned as
+ * collection.
+ *
+ * @param member The member instance
+ * @param value The value
+ *
+ * @return The {@code value} casted to collection or in case of {@code va=
lue} being a map the map values as collection.
+ */
+ private Collection getActualCollection(XMember member, Object valu=
e) {
+ Collection collection;
+ if ( Map.class.equals( member.getCollectionClass() ) ) {
+ //hum
+ @SuppressWarnings("unchecked")
+ Collection tmpCollection =3D ( ( Map, T> ) value ).values();
+ collection =3D tmpCollection;
+ }
+ else {
+ @SuppressWarnings("unchecked")
+ Collection tmpCollection =3D ( Collection ) value;
+ collection =3D tmpCollection;
+ }
+ return collection;
+ }
+
+ private void processSingleContainedInInstance(List queue,=
SearchFactoryImplementor searchFactoryImplementor, T value) {
+ @SuppressWarnings("unchecked")
+ Class valueClass =3D Hibernate.getClass( value );
+ DocumentBuilderIndexedEntity builderIndexedEntity =3D
+ searchFactoryImplementor.getDocumentBuilderIndexedEntity( valueClass );
+
+ // it could be we have a nested @IndexedEmbedded chain in which case we =
have to find the top level @Indexed entities
+ if ( builderIndexedEntity =3D=3D null ) {
+ DocumentBuilderContainedEntity builderContainedEntity =3D
+ searchFactoryImplementor.getDocumentBuilderContainedEntity( valueClas=
s );
+ if ( builderContainedEntity !=3D null ) {
+ processContainedInInstances( value, queue, builderContainedEntity.meta=
data, searchFactoryImplementor );
+ }
+ }
+ else {
+ addWorkForEmbeddedValue( value, queue, valueClass, builderIndexedEntity=
, searchFactoryImplementor );
+ }
+ }
+
+ /**
+ * Create a {@code LuceneWork} instance of the entity which needs updatin=
g due to the embedded instance change.
+ *
+ * @param value The value to index
+ * @param queue The current (Lucene) work queue
+ * @param valueClass The class of the value
+ * @param builderIndexedEntity the document builder for the entity which =
needs updating due to a update event of the embedded instance
+ * @param searchFactoryImplementor the search factory.
+ */
+ private void addWorkForEmbeddedValue(T value, List queue,=
Class valueClass,
+ DocumentBuilderIndexedEntity builderIndexedEntity, SearchFa=
ctoryImplementor searchFactoryImplementor) {
Serializable id =3D ( Serializable ) ReflectionHelper.getMemberValue( va=
lue, builderIndexedEntity.idGetter );
builderIndexedEntity.addWorkToQueue( valueClass, value, id, WorkType.UPD=
ATE, queue, searchFactoryImplementor );
}
@@ -727,7 +751,7 @@
public Discriminator discriminator;
public XMember discriminatorGetter;
public BoostStrategy classBoostStrategy;
- =
+
public final List fieldNames =3D new ArrayList();
public final List fieldGetters =3D new ArrayList();
public final List fieldBridges =3D new ArrayList();
Added: search/trunk/src/test/java/org/hibernate/search/test/embedded/nested=
/Address.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Ad=
dress.java (rev 0)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Ad=
dress.java 2009-09-23 16:12:46 UTC (rev 17533)
@@ -0,0 +1,87 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.hibernate.search.test.embedded.nested;
+
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+
+import org.hibernate.search.annotations.ContainedIn;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Index;
+
+/**
+ * @author Hardy Ferentschik
+ */
+(a)Entity
+public class Address {
+ @Id
+ @GeneratedValue
+ private Long id;
+
+ @Field(index =3D Index.TOKENIZED)
+ private String street;
+
+ @Field(index =3D Index.TOKENIZED)
+ private String city;
+
+ @ContainedIn
+ @OneToMany(mappedBy =3D "address")
+ private Set places;
+
+ public Address(String street, String city) {
+ this();
+ this.street =3D street;
+ this.city =3D city;
+ }
+
+ private Address() {
+ places =3D new HashSet();
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public String getStreet() {
+ return street;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public Set getPlaces() {
+ return places;
+ }
+
+ public void addPlace(Place place) {
+ places.add( place );
+ }
+
+ public void setStreet(String street) {
+ this.street =3D street;
+ }
+
+ public void setCity(String city) {
+ this.city =3D city;
+ }
+}
Property changes on: search/trunk/src/test/java/org/hibernate/search/test/e=
mbedded/nested/Address.java
___________________________________________________________________
Name: svn:keywords
+ Id
Added: search/trunk/src/test/java/org/hibernate/search/test/embedded/nested=
/Attribute.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/At=
tribute.java (rev 0)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/At=
tribute.java 2009-09-23 16:12:46 UTC (rev 17533)
@@ -0,0 +1,79 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.hibernate.search.test.embedded.nested;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+
+import org.hibernate.search.annotations.ContainedIn;
+import org.hibernate.search.annotations.IndexedEmbedded;
+
+/**
+ * @author Hardy Ferentschik
+ */
+(a)Entity
+public class Attribute {
+
+ @Id
+ @GeneratedValue
+ private long id;
+
+ @ManyToOne
+ @ContainedIn
+ private Product product;
+
+ @OneToMany(mappedBy =3D "attribute", fetch =3D FetchType.LAZY, cascade =
=3D { CascadeType.PERSIST, CascadeType.REMOVE })
+ @IndexedEmbedded
+ private List values;
+
+ private Attribute() {
+ values =3D new ArrayList();
+ }
+
+ public Attribute(Product product) {
+ this.product =3D product;
+ values =3D new ArrayList();
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public Product getProduct() {
+ return product;
+ }
+
+ public void setProduct(Product product) {
+ this.product =3D product;
+ }
+
+ public List getValues() {
+ return values;
+ }
+
+ public void setValue(AttributeValue value) {
+ values.add( value );
+ }
+}
Property changes on: search/trunk/src/test/java/org/hibernate/search/test/e=
mbedded/nested/Attribute.java
___________________________________________________________________
Name: svn:keywords
+ Id
Added: search/trunk/src/test/java/org/hibernate/search/test/embedded/nested=
/AttributeValue.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/At=
tributeValue.java (rev 0)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/At=
tributeValue.java 2009-09-23 16:12:46 UTC (rev 17533)
@@ -0,0 +1,77 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.hibernate.search.test.embedded.nested;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+import org.hibernate.search.annotations.ContainedIn;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Index;
+import org.hibernate.search.annotations.Store;
+
+/**
+ * @author Hardy Ferentschik
+ */
+(a)Entity
+public class AttributeValue {
+
+ @Id
+ @GeneratedValue
+ private long id;
+
+ @ManyToOne(targetEntity =3D Attribute.class, fetch =3D FetchType.EAGER)
+ @ContainedIn
+ private Attribute attribute;
+
+ @Column(name =3D "_value")
+ @Field(index =3D Index.TOKENIZED, store =3D Store.YES)
+ private String value;
+
+ private AttributeValue() {
+ }
+
+ public AttributeValue(Attribute attribute, String value) {
+ this.attribute =3D attribute;
+ this.value =3D value;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value =3D value;
+ }
+
+ public Attribute getAttribute() {
+ return attribute;
+ }
+
+ public void setAttribute(Attribute attribute) {
+ this.attribute =3D attribute;
+ }
+}
\ No newline at end of file
Property changes on: search/trunk/src/test/java/org/hibernate/search/test/e=
mbedded/nested/AttributeValue.java
___________________________________________________________________
Name: svn:keywords
+ Id
Copied: search/trunk/src/test/java/org/hibernate/search/test/embedded/neste=
d/NestedEmbeddedTest.java (from rev 17482, search/trunk/src/test/java/org/h=
ibernate/search/test/embedded/EmbeddedTest.java)
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Ne=
stedEmbeddedTest.java (rev 0)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Ne=
stedEmbeddedTest.java 2009-09-23 16:12:46 UTC (rev 17533)
@@ -0,0 +1,138 @@
+//$Id$
+package org.hibernate.search.test.embedded.nested;
+
+import java.util.List;
+
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.search.Query;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.search.FullTextSession;
+import org.hibernate.search.Search;
+import org.hibernate.search.test.SearchTestCase;
+
+
+/**
+ * @author Emmanuel Bernard
+ * @author Hardy Ferentschik
+ */
+public class NestedEmbeddedTest extends SearchTestCase {
+
+ /**
+ * HSEARCH-391
+ *
+ * @throws Exception in case the tests fails
+ */
+ public void testNestedEmbeddedIndexing() throws Exception {
+ Product product =3D new Product();
+ Attribute attribute =3D new Attribute( product );
+ product.setAttribute( attribute );
+ AttributeValue value =3D new AttributeValue( attribute, "foo" );
+ attribute.setValue( value );
+
+ Session s =3D openSession();
+ Transaction tx =3D s.beginTransaction();
+ s.persist( product );
+ tx.commit();
+
+ FullTextSession session =3D Search.getFullTextSession( s );
+ QueryParser parser =3D new QueryParser( "attributes.values.value", new S=
tandardAnalyzer() );
+ Query query;
+ List> result;
+
+
+ query =3D parser.parse( "foo" );
+ result =3D session.createFullTextQuery( query ).list();
+ assertEquals( "unable to find property in attribute value", 1, result.si=
ze() );
+
+
+ s.clear();
+ tx =3D s.beginTransaction();
+
+ product =3D ( Product ) s.get( Product.class, product.getId() );
+ product.getAttributes().get( 0 ).getValues().get( 0 ).setValue( "bar" );
+ tx.commit();
+
+ s.clear();
+
+ session =3D Search.getFullTextSession( s );
+
+ query =3D parser.parse( "foo" );
+ result =3D session.createFullTextQuery( query, Product.class ).list();
+ assertEquals( "change in embedded not reflected in root index", 0, resul=
t.size() );
+
+ query =3D parser.parse( "bar" );
+ result =3D session.createFullTextQuery( query, Product.class ).list();
+ assertEquals( "change in embedded not reflected in root index", 1, resul=
t.size() );
+
+ s.close();
+ }
+
+
+ /**
+ * HSEARCH-391
+ *
+ * @throws Exception in case the tests fails
+ */
+ public void testNestedEmbeddedIndexingWithContainedInOnCollection() throw=
s Exception {
+ Person john =3D new Person( "John Doe" );
+ Place eiffelTower =3D new Place( "Eiffel Tower" );
+ Address addressEiffel =3D new Address( "Avenue Gustave Eiffel", "London"=
);
+ addressEiffel.addPlace( eiffelTower );
+ eiffelTower.setAddress( addressEiffel );
+ john.addPlaceVisited( eiffelTower );
+ eiffelTower.visitedBy( john );
+
+
+ Session s =3D openSession();
+ Transaction tx =3D s.beginTransaction();
+ s.persist( john );
+ tx.commit();
+
+ FullTextSession session =3D Search.getFullTextSession( s );
+ QueryParser parser =3D new QueryParser( "placesVisited.address.city", ne=
w StandardAnalyzer() );
+ Query query;
+ List> result;
+
+
+ query =3D parser.parse( "London" );
+ result =3D session.createFullTextQuery( query ).list();
+ assertEquals( "unable to find nested indexed value", 1, result.size() );
+
+
+ s.clear();
+ tx =3D s.beginTransaction();
+
+ john =3D ( Person ) s.get( Person.class, john.getId() );
+ john.getPlacesVisited().get( 0 ).getAddress().setCity( "Paris" );
+ tx.commit();
+
+ s.clear();
+
+ john =3D ( Person ) s.get( Person.class, john.getId() );
+
+ session =3D Search.getFullTextSession( s );
+
+ query =3D parser.parse( "London" );
+ result =3D session.createFullTextQuery( query, Person.class ).list();
+ assertEquals( "change in embedded not reflected in root index", 0, resul=
t.size() );
+
+ query =3D parser.parse( "Paris" );
+ result =3D session.createFullTextQuery( query, Person.class ).list();
+ assertEquals( "change in embedded not reflected in root index", 1, resul=
t.size() );
+
+ s.close();
+ }
+
+ protected void configure(org.hibernate.cfg.Configuration cfg) {
+ super.configure( cfg );
+ }
+
+ protected Class>[] getMappings() {
+ return new Class[] {
+ Product.class, Attribute.class, AttributeValue.class, Person.class, Pl=
ace.class, Address.class
+ };
+ }
+}
\ No newline at end of file
Added: search/trunk/src/test/java/org/hibernate/search/test/embedded/nested=
/Person.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Pe=
rson.java (rev 0)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Pe=
rson.java 2009-09-23 16:12:46 UTC (rev 17533)
@@ -0,0 +1,71 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.hibernate.search.test.embedded.nested;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+
+import org.hibernate.search.annotations.Indexed;
+import org.hibernate.search.annotations.IndexedEmbedded;
+
+/**
+ * @author Hardy Ferentschik
+ */
+(a)Entity
+(a)Indexed
+public class Person {
+ @Id
+ @GeneratedValue
+ private long id;
+
+ String name;
+
+ @IndexedEmbedded
+ @ManyToMany(cascade =3D { CascadeType.ALL })
+ private List placesVisited;
+
+ private Person() {
+ placesVisited =3D new ArrayList( 0 );
+ }
+
+ public Person(String name) {
+ this();
+ this.name =3D name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public List getPlacesVisited() {
+ return placesVisited;
+ }
+
+ public void addPlaceVisited(Place place) {
+ placesVisited.add( place );
+ }
+
+ public long getId() {
+ return id;
+ }
+}
Property changes on: search/trunk/src/test/java/org/hibernate/search/test/e=
mbedded/nested/Person.java
___________________________________________________________________
Name: svn:keywords
+ Id
Added: search/trunk/src/test/java/org/hibernate/search/test/embedded/nested=
/Place.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Pl=
ace.java (rev 0)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Pl=
ace.java 2009-09-23 16:12:46 UTC (rev 17533)
@@ -0,0 +1,87 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.hibernate.search.test.embedded.nested;
+
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.OneToOne;
+
+import org.hibernate.search.annotations.ContainedIn;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Index;
+import org.hibernate.search.annotations.IndexedEmbedded;
+
+/**
+ * @author Hardy Ferentschik
+ */
+(a)Entity
+public class Place {
+ @Id
+ @GeneratedValue
+ private Long id;
+
+ @Field(index =3D Index.TOKENIZED)
+ private String name;
+
+ @OneToOne(cascade =3D { CascadeType.PERSIST, CascadeType.REMOVE })
+ @IndexedEmbedded
+ private Address address;
+
+ @ContainedIn
+ @ManyToMany(cascade =3D { CascadeType.ALL }, mappedBy =3D "placesVisited")
+ private Set visitedBy;
+
+ private Place() {
+ this.visitedBy =3D new HashSet();
+ }
+
+ public Place(String name) {
+ this();
+ this.name =3D name;
+ }
+
+ public Address getAddress() {
+ return address;
+ }
+
+ public String getName() {
+
+ return name;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setAddress(Address address) {
+ this.address =3D address;
+ }
+
+ public void visitedBy(Person person) {
+ visitedBy.add( person );
+ }
+
+ public Set getVisitedBy() {
+ return visitedBy;
+ }
+}
Property changes on: search/trunk/src/test/java/org/hibernate/search/test/e=
mbedded/nested/Place.java
___________________________________________________________________
Name: svn:keywords
+ Id
Added: search/trunk/src/test/java/org/hibernate/search/test/embedded/nested=
/Product.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Pr=
oduct.java (rev 0)
+++ search/trunk/src/test/java/org/hibernate/search/test/embedded/nested/Pr=
oduct.java 2009-09-23 16:12:46 UTC (rev 17533)
@@ -0,0 +1,61 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.hibernate.search.test.embedded.nested;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+
+import org.hibernate.search.annotations.Indexed;
+import org.hibernate.search.annotations.IndexedEmbedded;
+
+/**
+ * @author Hardy Ferentschik
+ */
+(a)Entity
+(a)Indexed
+public class Product {
+ @Id
+ @GeneratedValue
+ private long id;
+
+ @OneToMany(mappedBy =3D "product", fetch =3D FetchType.LAZY, cascade =3D =
{ CascadeType.PERSIST, CascadeType.REMOVE })
+ @IndexedEmbedded
+ private List attributes;
+
+ public Product() {
+ attributes =3D new ArrayList();
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public List getAttributes() {
+ return attributes;
+ }
+
+ public void setAttribute(Attribute attribute) {
+ attributes.add( attribute );
+ }
+}
Property changes on: search/trunk/src/test/java/org/hibernate/search/test/e=
mbedded/nested/Product.java
___________________________________________________________________
Name: svn:keywords
+ Id
--===============8599747514056150336==--
From hibernate-commits at lists.jboss.org Wed Sep 23 12:25:09 2009
Content-Type: multipart/mixed; boundary="===============4945840732821172077=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17534 -
core/trunk/annotations/src/main/java/org/hibernate/cfg/beanvalidation.
Date: Wed, 23 Sep 2009 12:25:09 -0400
Message-ID: <200909231625.n8NGP9KV002039@svn01.web.mwc.hst.phx2.redhat.com>
--===============4945840732821172077==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-23 12:25:07 -0400 (Wed, 23 Sep 2009)
New Revision: 17534
Modified:
core/trunk/annotations/src/main/java/org/hibernate/cfg/beanvalidation/Be=
anValidationEventListener.java
Log:
Fix unsafe use and copy data to Set>
Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/beanvalida=
tion/BeanValidationEventListener.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/beanvalidation/B=
eanValidationEventListener.java 2009-09-23 16:12:46 UTC (rev 17533)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/beanvalidation/B=
eanValidationEventListener.java 2009-09-23 16:25:07 UTC (rev 17534)
@@ -2,6 +2,7 @@
=
import java.util.Properties;
import java.util.Set;
+import java.util.HashSet;
import java.util.concurrent.ConcurrentHashMap;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
@@ -67,15 +68,16 @@
.getValidator();
final Class>[] groups =3D groupsPerOperation.get( operation );
if ( groups.length > 0 ) {
- final Set> constraintViolations =3D
- validator.validate( object, groups );
- //FIXME CV should no longer be generics
- Object unsafeViolations =3D constraintViolations;
+ final Set> constraintViolations =3D validator.va=
lidate( object, groups );
if (constraintViolations.size() > 0 ) {
- //FIXME add Set>
+ Set> propagatedViolations =3D
+ new HashSet>( constraintViolations.size() );
+ for ( ConstraintViolation> violation : constraintViolations) {
+ propagatedViolations.add(violation);
+ }
throw new ConstraintViolationException(
"Invalid object at " + operation.getName() + " time for groups " + t=
oString( groups ),
- (Set>) unsafeViolations);
+ propagatedViolations);
}
}
}
--===============4945840732821172077==--
From hibernate-commits at lists.jboss.org Thu Sep 24 10:36:36 2009
Content-Type: multipart/mixed; boundary="===============5570272214689567359=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17535 -
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test.
Date: Thu, 24 Sep 2009 10:36:36 -0400
Message-ID: <200909241436.n8OEaa6A007923@svn01.web.mwc.hst.phx2.redhat.com>
--===============5570272214689567359==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: jcosta(a)redhat.com
Date: 2009-09-24 10:36:36 -0400 (Thu, 24 Sep 2009)
New Revision: 17535
Modified:
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/Tr=
ansactionTest.java
Log:
HSEARCH-400 - Added s.connection().setAutoCommit( true ); to the connection=
in the last scenario of the test
Modified: search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/=
test/TransactionTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/T=
ransactionTest.java 2009-09-23 16:25:07 UTC (rev 17534)
+++ search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/T=
ransactionTest.java 2009-09-24 14:36:36 UTC (rev 17535)
@@ -40,6 +40,7 @@
assertEquals( "rollback() should not index", 3, getDocumentNumber() );
=
s =3D getSessions().openSession();
+ s.connection().setAutoCommit( true ); // www.hibernate.org/403.html
s.persist(
new Document( "Java Persistence with Hibernate", "Object/relational ma=
pping with Hibernate", "blah blah blah" )
);
--===============5570272214689567359==--
From hibernate-commits at lists.jboss.org Thu Sep 24 10:56:16 2009
Content-Type: multipart/mixed; boundary="===============7777427887009578124=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17536 -
beanvalidation/trunk/validation-api/src/main/java/javax/validation.
Date: Thu, 24 Sep 2009 10:56:16 -0400
Message-ID: <200909241456.n8OEuG3Z011618@svn01.web.mwc.hst.phx2.redhat.com>
--===============7777427887009578124==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-24 10:56:15 -0400 (Thu, 24 Sep 2009)
New Revision: 17536
Modified:
beanvalidation/trunk/validation-api/src/main/java/javax/validation/Const=
raintViolationException.java
Log:
remove unnecessary generics
Modified: beanvalidation/trunk/validation-api/src/main/java/javax/validatio=
n/ConstraintViolationException.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-api/src/main/java/javax/validation/Cons=
traintViolationException.java 2009-09-24 14:36:36 UTC (rev 17535)
+++ beanvalidation/trunk/validation-api/src/main/java/javax/validation/Cons=
traintViolationException.java 2009-09-24 14:56:15 UTC (rev 17536)
@@ -33,7 +33,7 @@
* @param message error message
* @param constraintViolations Set of ConstraintViolation
*/
- public ConstraintViolationException(String message,
+ public ConstraintViolationException(String message,
Set> constraintViolations) {
super( message );
this.constraintViolations =3D constraintViolations;
@@ -44,7 +44,7 @@
*
* @param constraintViolations Set of ConstraintViolation
*/
- public ConstraintViolationException(Set> const=
raintViolations) {
+ public ConstraintViolationException(Set> constrain=
tViolations) {
super();
this.constraintViolations =3D constraintViolations;
}
--===============7777427887009578124==--
From hibernate-commits at lists.jboss.org Thu Sep 24 11:02:01 2009
Content-Type: multipart/mixed; boundary="===============8053328279445558643=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Your girlfriend seeks for you
Date: Thu, 24 Sep 2009 11:01:58 -0400
Message-ID: <200909241502.n8OF1wH0001095@lists01.dmz-a.mwc.hst.phx2.redhat.com>
--===============8053328279445558643==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
--===============8053328279445558643==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIj4KPEhUTUw+PEhFQUQ+CjxNRVRBIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+CjwvSEVBRD4KPEJPRFk+UHJvdmlkaW5nIGhl
ciB3aXRoIGEgaGlnaCB2b2x0YWdlIG9mIHlvdXIgZGVzaXJlISBUaGlzIGlzIHdoYXQgeW91IGdv
bm5hIGRvIHRvbmlnaHQhCjxhIGhyZWY9Imh0dHA6Ly9hbnN3ZXJjaG9yZC5jb20vIiB0YXJnZXQ9
Il9ibGFuayI+CjxpbWcgc3JjPSJodHRwOi8vYW5zd2VyY2hvcmQuY29tL2R5dXdxbGsuanBnIiBi
b3JkZXI9IjAiIGFsdD0iU2hvdyBwaWN0dXJlIGFuZCBnbyB0byBzaXRlIG5vdyEiPjwvYT48L0JP
RFk+PC9IVE1MPgo=
--===============8053328279445558643==--
From hibernate-commits at lists.jboss.org Thu Sep 24 11:15:19 2009
Content-Type: multipart/mixed; boundary="===============6474346851593739031=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17537 -
beanvalidation/trunk/validation-api/src/test/resources.
Date: Thu, 24 Sep 2009 11:15:19 -0400
Message-ID: <200909241515.n8OFFJpB016069@svn01.web.mwc.hst.phx2.redhat.com>
--===============6474346851593739031==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-24 11:15:19 -0400 (Thu, 24 Sep 2009)
New Revision: 17537
Modified:
beanvalidation/trunk/validation-api/src/test/resources/validation-config=
uration-1.0.xsd
Log:
BVAL-181 Fix minor configuration file change
Modified: beanvalidation/trunk/validation-api/src/test/resources/validation=
-configuration-1.0.xsd
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-api/src/test/resources/validation-confi=
guration-1.0.xsd 2009-09-24 14:56:15 UTC (rev 17536)
+++ beanvalidation/trunk/validation-api/src/test/resources/validation-confi=
guration-1.0.xsd 2009-09-24 15:15:19 UTC (rev 17537)
@@ -4,7 +4,7 @@
targetNamespace=3D"http://jboss.org/xml/ns/javax/validation/con=
figuration"
xmlns:xs=3D"http://www.w3.org/2001/XMLSchema"
version=3D"1.0">
-
+
@@ -12,7 +12,7 @@
-
+
--===============6474346851593739031==--
From hibernate-commits at lists.jboss.org Thu Sep 24 11:48:45 2009
Content-Type: multipart/mixed; boundary="===============6750603488758997044=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17538 - core/patches.
Date: Thu, 24 Sep 2009 11:48:45 -0400
Message-ID: <200909241548.n8OFmjjY021994@svn01.web.mwc.hst.phx2.redhat.com>
--===============6750603488758997044==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: bmaxwell
Date: 2009-09-24 11:48:45 -0400 (Thu, 24 Sep 2009)
New Revision: 17538
Added:
core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/
Log:
[JBPAPP-2851] Isolated branch for patch JBPAPP-2851 to resolve HHH-3006 Con=
currentModificationException in AbstractBatcher results in infinite loop
Copied: core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851 (from rev 17537, =
core/tags/JBOSS_EAP_3_2_4_SP1_CP03)
--===============6750603488758997044==--
From hibernate-commits at lists.jboss.org Thu Sep 24 12:55:13 2009
Content-Type: multipart/mixed; boundary="===============5397004676727578884=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17539 -
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/common
and 2 other directories.
Date: Thu, 24 Sep 2009 12:55:13 -0400
Message-ID: <200909241655.n8OGtDMQ002107@svn01.web.mwc.hst.phx2.redhat.com>
--===============5397004676727578884==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-24 12:55:13 -0400 (Thu, 24 Sep 2009)
New Revision: 17539
Modified:
beanvalidation/trunk/validation-api/src/main/java/javax/validation/Confi=
guration.java
beanvalidation/trunk/validation-api/src/main/java/javax/validation/Valid=
atorFactory.java
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/t=
ck/common/TCKValidationProvider.java
beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/t=
ck/common/TCKValidatorConfiguration.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/engine/ConfigurationImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/engine/ValidatorFactoryImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/util/LazyValidatorFactory.java
Log:
BVAL-182 Add getDefaultTraversableResolver and getDefaultConstraintValidato=
rFactory to Configuration
BVAL-183 Add getTraversableResolver and getConstraintValidatorFactory to Va=
lidatorFactory
Modified: beanvalidation/trunk/validation-api/src/main/java/javax/validatio=
n/Configuration.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-api/src/main/java/javax/validation/Conf=
iguration.java 2009-09-24 15:48:45 UTC (rev 17538)
+++ beanvalidation/trunk/validation-api/src/main/java/javax/validation/Conf=
iguration.java 2009-09-24 16:55:13 UTC (rev 17539)
@@ -164,6 +164,33 @@
MessageInterpolator getDefaultMessageInterpolator();
=
/**
+ * Return an implementation of the TraversableResolver interface followin=
g the
+ * default TraversableResolver defined in the specification:
+ *
+ *
if Java Persistence is available in the runtime environment, =
+ * a property is considered reachable if Java Persistence considers
+ * the property as loaded
+ *
if Java Persistence is not available in the runtime environment,
+ * all properties are considered reachable
+ *
all properties are considered cascadable.
+ *
+ *
+ * @return default TraversableResolver implementation compliant with the =
specification
+ */
+ TraversableResolver getDefaultTraversableResolver();
+
+ /**
+ * Return an implementation of the ConstraintValidatorFactory interface f=
ollowing the
+ * default ConstraintValidatorFactory defined in the specification:
+ *
+ *
uses the public no-arg constructor of the ConstraintValidato=
r
+ *
+ *
+ * @return default ConstraintValidatorFactory implementation compliant wi=
th the specification
+ */
+ ConstraintValidatorFactory getDefaultConstraintValidatorFactory();
+
+ /**
* Build a ValidatorFactory implementation.
*
* @return ValidatorFactory
Modified: beanvalidation/trunk/validation-api/src/main/java/javax/validatio=
n/ValidatorFactory.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-api/src/main/java/javax/validation/Vali=
datorFactory.java 2009-09-24 15:48:45 UTC (rev 17538)
+++ beanvalidation/trunk/validation-api/src/main/java/javax/validation/Vali=
datorFactory.java 2009-09-24 16:55:13 UTC (rev 17539)
@@ -52,6 +52,25 @@
MessageInterpolator getMessageInterpolator();
=
/**
+ * Returns the TraversableResolver instance configured
+ * at initialization time for the ValidatorFactory.
+ * This is the instance used by #getValidator().
+ *
+ * @return TraversableResolver instance.
+ */
+ TraversableResolver getTraversableResolver();
+
+ /**
+ * Returns the ConstraintValidatorFactory instance
+ * configured at initialization time for the
+ * ValidatorFactory.
+ * This is the instance used by #getValidator().
+ *
+ * @return ConstraintValidatorFactory instance.
+ */
+ ConstraintValidatorFactory getConstraintValidatorFactory();
+
+ /**
* Return an object of the specified type to allow access to the
* provider-specific API. If the Bean Validation provider
* implementation does not support the specified class, the
Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/j=
sr303/tck/common/TCKValidationProvider.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/common/TCKValidationProvider.java 2009-09-24 15:48:45 UTC (rev 17538)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/common/TCKValidationProvider.java 2009-09-24 16:55:13 UTC (rev 17539)
@@ -22,6 +22,8 @@
import javax.validation.Validator;
import javax.validation.ValidatorContext;
import javax.validation.ValidatorFactory;
+import javax.validation.TraversableResolver;
+import javax.validation.ConstraintValidatorFactory;
import javax.validation.spi.BootstrapState;
import javax.validation.spi.ConfigurationState;
import javax.validation.spi.ValidationProvider;
@@ -57,6 +59,14 @@
throw new UnsupportedOperationException();
}
=
+ public TraversableResolver getTraversableResolver() {
+ throw new UnsupportedOperationException();
+ }
+
+ public ConstraintValidatorFactory getConstraintValidatorFactory() {
+ throw new UnsupportedOperationException();
+ }
+
public T unwrap(Class type) {
throw new UnsupportedOperationException();
}
Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/j=
sr303/tck/common/TCKValidatorConfiguration.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/common/TCKValidatorConfiguration.java 2009-09-24 15:48:45 UTC (rev 1753=
8)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/=
tck/common/TCKValidatorConfiguration.java 2009-09-24 16:55:13 UTC (rev 1753=
9)
@@ -67,6 +67,14 @@
throw new UnsupportedOperationException();
}
=
+ public TraversableResolver getDefaultTraversableResolver() {
+ throw new UnsupportedOperationException();
+ }
+
+ public ConstraintValidatorFactory getDefaultConstraintValidatorFactory() {
+ throw new UnsupportedOperationException();
+ }
+
public ValidatorFactory buildValidatorFactory() {
return provider.buildValidatorFactory( null );
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/v=
alidator/engine/ConfigurationImpl.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/engine/ConfigurationImpl.java 2009-09-24 15:48:45 UTC (rev 17538)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/engine/ConfigurationImpl.java 2009-09-24 16:55:13 UTC (rev 17539)
@@ -55,7 +55,7 @@
=
private final MessageInterpolator defaultMessageInterpolator =3D new Reso=
urceBundleMessageInterpolator();
private final TraversableResolver defaultTraversableResolver =3D new Defa=
ultTraversableResolver();
- private final ConstraintValidatorFactory defaultValidatorFactory =3D new =
ConstraintValidatorFactoryImpl();
+ private final ConstraintValidatorFactory defaultConstraintValidatorFactor=
y =3D new ConstraintValidatorFactoryImpl();
private final ValidationProviderResolver providerResolver;
=
private ValidationBootstrapParameters validationBootstrapParameters;
@@ -171,6 +171,14 @@
return defaultMessageInterpolator;
}
=
+ public TraversableResolver getDefaultTraversableResolver() {
+ return defaultTraversableResolver;
+ }
+
+ public ConstraintValidatorFactory getDefaultConstraintValidatorFactory() {
+ return defaultConstraintValidatorFactory;
+ }
+
private boolean isSpecificProvider() {
return validationBootstrapParameters.provider !=3D null;
}
@@ -189,7 +197,7 @@
validationBootstrapParameters.traversableResolver =3D defaultTraversab=
leResolver;
}
if ( validationBootstrapParameters.constraintValidatorFactory =3D=3D nu=
ll ) {
- validationBootstrapParameters.constraintValidatorFactory =3D defaultVa=
lidatorFactory;
+ validationBootstrapParameters.constraintValidatorFactory =3D defaultCo=
nstraintValidatorFactory;
}
}
else {
@@ -224,7 +232,7 @@
validationBootstrapParameters.constraintValidatorFactory =3D xmlParame=
ters.constraintValidatorFactory;
}
else {
- validationBootstrapParameters.constraintValidatorFactory =3D defaultVa=
lidatorFactory;
+ validationBootstrapParameters.constraintValidatorFactory =3D defaultCo=
nstraintValidatorFactory;
}
}
=
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/v=
alidator/engine/ValidatorFactoryImpl.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/engine/ValidatorFactoryImpl.java 2009-09-24 15:48:45 UTC (rev 17538)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/engine/ValidatorFactoryImpl.java 2009-09-24 16:55:13 UTC (rev 17539)
@@ -73,6 +73,14 @@
return messageInterpolator;
}
=
+ public TraversableResolver getTraversableResolver() {
+ return traversableResolver;
+ }
+
+ public ConstraintValidatorFactory getConstraintValidatorFactory() {
+ return constraintValidatorFactory;
+ }
+
public T unwrap(Class type) {
throw new ValidationException( "Type " + type + " not supported" );
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/v=
alidator/util/LazyValidatorFactory.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/util/LazyValidatorFactory.java 2009-09-24 15:48:45 UTC (rev 17538)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/util/LazyValidatorFactory.java 2009-09-24 16:55:13 UTC (rev 17539)
@@ -23,6 +23,8 @@
import javax.validation.MessageInterpolator;
import javax.validation.Configuration;
import javax.validation.Validation;
+import javax.validation.TraversableResolver;
+import javax.validation.ConstraintValidatorFactory;
=
/**
* This class lazily initialize the ValidatorFactory on the first usage
@@ -85,6 +87,14 @@
return getDelegate().getMessageInterpolator();
}
=
+ public TraversableResolver getTraversableResolver() {
+ return getDelegate().getTraversableResolver();
+ }
+
+ public ConstraintValidatorFactory getConstraintValidatorFactory() {
+ return getDelegate().getConstraintValidatorFactory();
+ }
+
public T unwrap(Class clazz) {
return getDelegate().unwrap( clazz );
}
--===============5397004676727578884==--
From hibernate-commits at lists.jboss.org Thu Sep 24 14:20:20 2009
Content-Type: multipart/mixed; boundary="===============2199128238739141741=="
MIME-Version: 1.0
From: Dayna Shimo
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Fall collection
Date: Thu, 24 Sep 2009 14:20:06 -0400
Message-ID: <3LI05Q8183Y601W.HCPPRQYDAT.7B73ECD19A@de-9f23932ba319>
--===============2199128238739141741==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
--===============2199128238739141741==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFk
Pgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD1VVEYtOCIgLz4KPHRpdGxlPk1vcm5pbmcgTmV3c2xldHRlcjwvdGl0bGU+CjwvaGVhZD4K
PGJvZHk+CgoKICA8RElWIGFsaWduPWNlbnRlcj4KICA8VEFCTEUgY2xhc3M9TXNvTm9ybWFsVGFi
bGUgc3R5bGU9IldJRFRIOiAzNzVwdCIgY2VsbFBhZGRpbmc9IjAiIHdpZHRoPSI1MDAiIGJvcmRl
cj0iMCIgdmFsaWduPSJ0b3AiPgogICAgPFRCT0RZPgogICAgPFRSPgogICAgICA8VEQgc3R5bGU9
IlBBRERJTkctUklHSFQ6IDAuNzVwdDsgUEFERElORy1MRUZUOiAwLjc1cHQ7IFBBRERJTkctQk9U
VE9NOiAwLjc1cHQ7IFBBRERJTkctVE9QOiAwLjc1cHQiPgogICAgICAgIDxQIGNsYXNzPU1zb05v
cm1hbCBzdHlsZT0iVEVYVC1BTElHTjogY2VudGVyIiBhbGlnbj1jZW50ZXI+PEZPTlQgZmFjZT1W
ZXJkYW5hIHNpemU9MT48U1BBTiBzdHlsZT0iRk9OVC1TSVpFOiA3LjVwdDsgRk9OVC1GQU1JTFk6
IFZlcmRhbmEiPklmIHlvdSBhcmUgdW5hYmxlIHRvIHZpZXcKICAgICAgICB0aGUgY29udGVudHMg
b2YgdGhpcyBlbWFpbCwgcGxlYXNlIDxBIGhyZWY9Imh0dHA6Ly9lNWIyLm5oYW1ld2F4LmNuLz9h
b3h5dHlxZT0zMGZjOVB2OTI1OVQ0TXkxMDYzd04wMSZ5Z2VkeWNvPTkyOTM1NjQ1MDMzNjQ1NDIw
Nzg5NzMiPmNsaWNrCiAgICAgICAgaGVyZTwvQT48L1NQQU4+PC9GT05UPjxQIGNsYXNzPU1zb05v
cm1hbCBzdHlsZT0iVEVYVC1BTElHTjogY2VudGVyIiBhbGlnbj1jZW50ZXI+CgkJJm5ic3A7PC9U
RD48L1RSPjwvVEJPRFk+PC9UQUJMRT48L0RJVj4KCjx0YWJsZSB3aWR0aD0iNTg5IiBib3JkZXI9
IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgPHRib2R5PgoKIDx0cj4KICAg
ICAgPHRkPgogICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGlu
Zz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgPHRib2R5PgogICAgICAgICAgICA8dHIg
Ymdjb2xvcj0iIzdDMEUwQyIgc3R5bGU9ImhlaWdodDogMzBweDsgd2lkdGg6MTAwJTsiPgogICAg
ICAgICAgICAgIDx0ZCBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250LWZhbWlseTogQXJpYWws
SGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBib2xkOyI+Jm5ic3A7Jm5ic3A7PGEg
aHJlZj0iaHR0cDovL2EwMGIwLm5oYW1ld2F4LmNuLz9oaXZldXlxYXI9NWY0dzI2V2Z1MjQ5MHM0
NjhwZDg4S1c4JnlidWdhcj0xODQwMzIzMTA1OTgyMTA1MzQ4MzkzMjMiIHN0eWxlPSJib3JkZXIt
cmlnaHQ6IDJweCBzb2xpZCAjZmZmOwoKCgpwYWRkaW5nLXJpZ2h0OiAxMHB4OyBjb2xvcjogI2Zm
ZjsiPkhvbWU8L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQgc3R5bGU9ImZvbnQtc2l6ZTogMTNw
eDsgZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOyBmb250LXdlaWdodDog
Ym9sZDsiPjxhIGhyZWY9Imh0dHA6Ly9hOGExLm5oYW1ld2F4LmNuLz90YXZvcml1PTgxNDFkNTYw
NFE5bDc0NjNEMFo4NDUxMzMmbm9yeW9vd3V6aT00OTE2MzUxMjcwMDU2NDE0MDA5MTAxOCIgc3R5
bGU9ImJvcmRlci1yaWdodDogMnB4IHNvbGlkICNmZmY7CgoKCnBhZGRpbmctcmlnaHQ6IDEwcHg7
IGNvbG9yOiAjZmZmOyI+TmV3czwvYT48L3RkPgogICAgICAgICAgICAgIDx0ZCBzdHlsZT0iZm9u
dC1zaXplOiAxM3B4OyBmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZv
bnQtd2VpZ2h0OiBib2xkOyI+PGEgaHJlZj0iaHR0cDovL2YxNC5uaGFtZXdheC5jbi8/ZWxvbnly
ZXdheT1aVjYzRjA5MkJBMjY5ODh4NzcyOFgwUHJ1Jm9pd2l5bmV0dWc9MDYyNDk5NDgzNTIwOTI5
NjI4MTU3MjgiIHN0eWxlPSJib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjZmZmOwoKCgpwYWRkaW5n
LXJpZ2h0OiAxMHB4OyBjb2xvcjogI2ZmZjsiPlByb2R1Y3RzPC9hPjwvdGQ+CiAgICAgICAgICAg
ICAgPHRkIHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGZvbnQtZmFtaWx5OiBBcmlhbCxIZWx2ZXRp
Y2Esc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij48YSBocmVmPSJodHRwOi8vMmNkNS5u
aGFtZXdheC5jbi8/dXlkZWdpb3Y9NDBWQWIwOTc1OTg4dzEyOUJqMjZOMDg2NCZzYWppd289MTQ1
MzY2NDIwNTA0MDQ3NzQ4NDYzMTEiIHN0eWxlPSJib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjZmZm
OwoKCgpwYWRkaW5nLXJpZ2h0OiAxMHB4OyBjb2xvcjogI2ZmZjsiPldlYnNpdGVzPC9hPjwvdGQ+
CiAgICAgICAgICAgICAgPHRkIHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGZvbnQtZmFtaWx5OiBB
cmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij48YSBocmVmPSJo
dHRwOi8vMjEzZDIubmhhbWV3YXguY24vP3VjYWN1anlrYWk9ejkxWVo2OThRNEExMzE5MDg2MjE2
VzU3Jm9ydXF5PTE0NzU5ODU5MDQzMDYxNTQ0NTQ3MDEyODMiIHN0eWxlPSJib3JkZXItcmlnaHQ6
IDJweCBzb2xpZCAjZmZmOyBwYWRkaW5nLXJpZ2h0OgoKCgoxMHB4OyBjb2xvcjogI2ZmZjsiPldp
bjwvYT48L3RkPgogICAgICAgICAgICAgIDx0ZCBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250
LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBib2xkOyI+
PGEgaHJlZj0iaHR0cDovL2UwYzIubmhhbWV3YXguY24vP2tpcWlybz1yMGkwN2kzMzMyVklWUjU3
NG51M3k1MzRsJnl0b29qPTY2MDQyODk4MDYyNzcwMjM5MzUyIiBzdHlsZT0iYm9yZGVyLXJpZ2h0
OiAycHggc29saWQgI2ZmZjsKCgoKcGFkZGluZy1yaWdodDogMTBweDsgY29sb3I6ICNmZmY7Ij5G
b3J1bXM8L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQgc3R5bGU9ImZvbnQtc2l6ZTogMTNweDsg
Zm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOyBmb250LXdlaWdodDogYm9s
ZDsiPjxhIGhyZWY9Imh0dHA6Ly9hMjkyNi5uaGFtZXdheC5jbi8/aXJleHVtZWV2aT00ak1rM09t
WDdEMVM4dFJYODRxN1Q2TDgzJmR5eXVoYT0zMTk3OTMzOTgyOTgwNzkyNDcyMSIgc3R5bGU9ImJv
cmRlci1yaWdodDogMnB4IHNvbGlkICNmZmY7CgoKCnBhZGRpbmctcmlnaHQ6IDEwcHg7IGNvbG9y
OiAjZmZmOyI+VmlkZW9zPC9hPjwvdGQ+CiAgICAgICAgICAgICAgPHRkIHN0eWxlPSJmb250LXNp
emU6IDEzcHg7IGZvbnQtZmFtaWx5OiBBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgZm9udC13
ZWlnaHQ6IGJvbGQ7Ij48YSBocmVmPSJodHRwOi8vNjYwLm5oYW1ld2F4LmNuLz9vbGF1dXB1PTBv
M0VNOGU5MDA3RTJyNjUzMTcwNk45NTMmaW55eGV5PTA4NDA2NzAzMzM2ODc4NzU3NjU1Mzc0MyIg
c3R5bGU9ImNvbG9yOiAjZmZmOyI+TWFnYXppbmU8L2E+PC90ZD4KICAgICAgICAgICAgPC90cj4K
ICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT4KICAgICAgPC90ZD4KICAgIDwvdHI+
CiA8dHI+CiAgICAgIDx0ZCBzdHlsZT0icGFkZGluZy1yaWdodDogMTBweDsgcGFkZGluZy1ib3R0
b206IDRweDsgcGFkZGluZy10b3A6IDRweCIgYmdDb2xvcj0jMDAwMDAwIGhlaWdodD0xND4KICAg
ICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdp
ZHRoPSI1NzAiID4KICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgPHRyPgogICAgICAgICAg
ICAgIDx0ZCBhbGlnbj0ibGVmdCIgd2lkdGg9IjUwJSIgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsg
Y29sb3I6ICNmZmZmZmYgOyBmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYi
PjI0IFNlcHQgMjAwOTwvdGQ+CiAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgd2lkdGg9
IjUwJSIgc3R5bGU9InBhZGRpbmctcmlnaHQ6IDNweDsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjog
I2ZmZmZmZjsgZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIj4KCQkJICBO
ZXdzbGV0dGVyPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGJvZHk+CiAgICAg
ICAgPC90YWJsZT4KICAgICAgPC90ZD4KICAgIDwvdHI+CgogICAgPHRyPgogICAgICA8dGQ+CiAg
ICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxs
c3BhY2luZz0iMCI+CiAgICAgICAgICA8dGJvZHkgYmdDb2xvcj0iI2NiMjMyMSI+CiAgICAgICAg
ICAgIDx0cj4KCiAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB3aWR0aD0iMzc0IiBiZ0Nv
bG9yPSIjY2IyMzIxIiBzdHlsZT0icGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctYm90dG9tOiAx
MHB4OyI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2VsbFNwYWNpbmc9IjAiIGNlbGxQYWRkaW5n
PSIwIiBhbGlnbj0ibGVmdCIgYmdDb2xvcj0iI2ZmZmZmZiIgYm9yZGVyPSIwIiBzdHlsZT0ibWFy
Z2luLXJpZ2h0OjEwcHg7IG1hcmdpbi1sZWZ0OiAxMHB4OyB3aWR0aDogNTY1cHg7Ij4KICAgICAg
ICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAg
ICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmctcmlnaHQ6IDhweDsgcGFkZGluZy1sZWZ0OiA4
cHg7IGZvbnQtc2l6ZTogMThweDsgZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5zLXNl
cmlmIiBiZ0NvbG9yPSNmZmZmZmY+PGhyIC8+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3Ry
PgoKICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5
bGU9InBhZGRpbmctcmlnaHQ6IDhweDsgcGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctYm90dG9t
OiA4cHg7IGZvbnQtc2l6ZTogMThweDsgZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5z
LXNlcmlmIiBiZ0NvbG9yPSNmZmZmZmY+PHN0cm9uZz5ORVcKClBST0RVQ1RTPGJyIC8+PGEgaHJl
Zj0iaHR0cDovLzUyN2EubmhhbWV3YXguY24vP29sZWN5aD1RbDk5M3AxM0QzUDgxNzdtMjk2bzM1
dDc4JmF0eXJvYml2YT01MjEwMjc3OTI4NTgxMjg5MjE1OSIgc3R5bGU9InRleHQtZGVjb3JhdGlv
bjp1bmRlcmxpbmU7IGZvbnQtc2l6ZToyMXB4OyBjb2xvcjptYXJvb24iPgoJCQkJCSAgPGltZyBh
bHQ9IkJsb2NrZWQgaW1hZ2UuIENsaWNrIHRvIHVubG9jay4iIHNyYz0iaHR0cDovL2I0ZTBiLm5o
YW1ld2F4LmNuL3NwYWNlci5naWYiIHN0eWxlPSJib3JkZXItd2lkdGg6IDBweCIgLz48L2E+PGJy
IC8+CgkJCQkJICBZb3UgdGhpbmsgaXQmIzM5O3MgY2xldmVyIHRvIGhpdCB0aGUgd2FsbCBmb3Ig
eWVhcnMsIHdoZW4geW91CgkJCQkJICBjYW4gYnlwYXNzIGl0PzxiciAvPgoJCQkJCSAgPC9zdHJv
bmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogbWVkaXVtIj5UaGUgc2FtZQoJCQkJCSAgc2l0dWF0
aW9uIHdpdGggYSBtYWxlIHN0cmVuZ3RoLiBXaGVuIHlvdSBmZWVsIGxhY2sgb2YgaXQsCgkJCQkJ
ICB5b3UgbmVlZCB0aGUgb3V0ZXIgc291cmNlIG9mIGl0LiBUaGUgYmVzdCBvdXRlciBzb3VyY2Ug
aXMKCQkJCQkgIHRoZSBwYWNrIHdpdGggb3VyIHBlbGxldHMuIEVub3Jtb3VzIHBvd2VyIGFuZCBu
byBmYXRpZ3VlLgoJCQkJCSAgPGEgaHJlZj0iaHR0cDovLzQ1ZjMyYS5uaGFtZXdheC5jbi8/bm9l
b2phPTJBNjVuNDU5N0czZWM0MTk0UmRvMyZhYW9jYWE9NzAxMDgyNTg1MDUyNjU5MjI0MTciPkNo
b29zZSBpdDwvYT4gYW5kIG5ldmVyIHN1ZmZlciE8L3NwYW4+PC90ZD4KICAgICAgICAgICAgICAg
ICAgICA8L3RyPgoKICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwv
dGFibGU+CiAgICAgICAgICAgICAgPC90ZD4KCiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8
L3Rib2R5PgogICAgICAgIDwvdGFibGU+CiAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgog
ICAgICA8dGQgYmdjb2xvcj0iI2ZmZmZmZiI+CiAgICAgICA8aHIgYWxpZ249ImNlbnRlciIgd2lk
dGg9IjEwMCUiIHNpemU9IjEiIG5vc2hhZGU+PGZvbnQgc2l6ZT0yIGZhY2U9IlZlcmRhbmEsIEFy
aWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPgpZb3UgYXJlIHJlY2VpdmluZyB0aGlzIGVtYWls
IGJlY2F1c2UgeW91IGFyZSBzdWJzY3JpYmVkIHRvIHRoZSA8Yj5XZWIgVXNlciBlbWFpbCBzZXJ2
aWNlPC9iPi4KPHA+CklmIHlvdSBiZWxpZXZlIHRoaXMgdG8gYmUgaW4gZXJyb3IsIG9yIHlvdSBu
byBsb25nZXIgd2lzaCB0byBiZSBzZW50IHRoZSBlbWFpbCwgcGxlYXNlIGNsaWNrIHRoZSBsaW5r
IGJlbG93PGJyPjxicj4KPGI+IDxhIGhyZWY9Imh0dHA6Ly80MmFjNDEubmhhbWV3YXguY24vP2th
ZXB5PXF2eTkxMDA5Mzg5MTBQMXc0MXpTNDgmb25ha3VldGU9MDAyNTg3NDMwNzMzMzIwODI3MjMy
Mzg1MCI+VW5zdWJzY3JpYmU8L0E+PGJyPjxicj48L2I+ClRoaXMgbWVzc2FnZSB3YXMgc2VudCB0
byBhZGRyZXNzIGhpYmVybmF0ZS1jb21taXRzQGxpc3RzLmpib3NzLm9yZwogPGhyIGFsaWduPSJj
ZW50ZXIiIHdpZHRoPSIxMDAlIiBzaXplPSIxIiBub3NoYWRlPjxQPiA8L2ZvbnQ+Cjxmb250IGZh
Y2U9InZlcmRhbmEsIGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWYiIHNpemU9MT4KPGJsb2Nr
cXVvdGU+CjxwPgogVGhpcyBFLW1haWwgaXMgZnJvbSBJUEMgTWVkaWEgTHRkIHdob3NlIHJlZ2lz
dGVyZWQgb2ZmaWNlIGlzIGF0ICBCbHVlIEZpbiBCdWlsZGluZywgMTEwIFNvdXRod2FyayBTdHJl
ZXQsIExvbmRvbiwgU0UxIDBTVSwgcmVnaXN0ZXJlZCBudW1iZXIgNTM2MjYuCjwvcD4KPHA+CiBU
aGUgY29udGVudHMgYW5kIGFueSBhdHRhY2htZW50cyB0byBpdCBpbmNsdWRlIGluZm9ybWF0aW9u
IHRoYXQgaXMgcHJpdmF0ZSBhbmQgY29uZmlkZW50aWFsIGFuZCBzaG91bGQgb25seSBiZSByZWFk
IGJ5IHRob3NlIHBlcnNvbnMgdG8gd2hvbSB0aGV5IGFyZSBhZGRyZXNzZWQuIElQQyBNZWRpYQoK
YWNjZXB0cyBubyBsaWFiaWxpdHkgZm9yIGFueSBsb3NzIG9yIGRhbWFnZSBzdWZmZXJlZCBieSBh
bnkgcGVyc29uIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgZS1tYWlsLiBOZWl0aGVyIElQ
QyBNZWRpYSBub3IgdGhlIHNlbmRlciBhY2NlcHRzIGFueSByZXNwb25zaWJpbGl0eSBmb3IKIHZp
cnVzZXMgYW5kIGl0IGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gY2hlY2sgdGhlIGVtYWlsIGFu
ZCBhdHRhY2htZW50cyAoaWYgYW55KS48L3A+CjxwPgogTm8gY29udHJhY3RzIG1heSBiZSBjb25j
bHVkZWQgb24gYmVoYWxmIG9mIElQQyBNZWRpYSBieSBtZWFucyBvZgogZS1tYWlsIGNvbW11bmlj
YXRpb25zLgo8L3A+CjwvYmxvY2txdW90ZT4KPC9mb250Pgo8Zm9udCBmYWNlPSJ2ZXJkYW5hLCBh
cmlhbCwgaGVsdmV0aWNhLCBzYW5zLXNlcmlmIiBzaXplPTE+CjxibG9ja3F1b3RlPgoJPGEgaHJl
Zj0iaHR0cDovLzQ0YjMwNi5uaGFtZXdheC5jbi8/aW9rdW9teXV4PTYyTUgwTzl4NzY5V3gzNDcz
MWRZTVNPNDUmb2NpaGlqYXB1Yj0zNjY3ODQ5OTcyMzcxNzk3ODAyNjYyOSI+UHJpdmFjeSBQb2xp
Y3k8L2E+IHwgPGEgaHJlZj0iaHR0cDovLzdlZDVhMy5uaGFtZXdheC5jbi8/bWVtZXhvPTc0MlA4
Mzc3RDFvMzdkNzl0OGU2bjQmb2h5dnVldWtlcD00ODg2Njc2MjM0NTQwMzI2OTc4MTU2OCI+VGVy
bXMgYW5kIENvbmRpdGlvbnM8L2E+CjwvYmxvY2txdW90ZT4KPC9mb250PgogICAgICA8L3RkPgog
ICAgPC90cj4KCiAgPC90Ym9keT4KPC90YWJsZT4KPC9ib2R5Pgo8L2h0bWw+Cg==
--===============2199128238739141741==--
From hibernate-commits at lists.jboss.org Thu Sep 24 16:46:38 2009
Content-Type: multipart/mixed; boundary="===============8303457297781004807=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17540 - in
core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851: src/org/hibernate/cfg and
1 other directories.
Date: Thu, 24 Sep 2009 16:46:38 -0400
Message-ID: <200909242046.n8OKkcJ3015071@svn01.web.mwc.hst.phx2.redhat.com>
--===============8303457297781004807==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: bmaxwell
Date: 2009-09-24 16:46:38 -0400 (Thu, 24 Sep 2009)
New Revision: 17540
Modified:
core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/build.xml
core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/src/org/hibernate/cfg/=
Environment.java
core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/src/org/hibernate/jdbc=
/AbstractBatcher.java
Log:
[JBPAPP-2851] fix HHH-3006 - ConcurrentModificationException in AbstractBat=
cher results in infinite loop for one off patch
Modified: core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/build.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/build.xml 2009-09-24 =
16:55:13 UTC (rev 17539)
+++ core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/build.xml 2009-09-24 =
20:46:38 UTC (rev 17540)
@@ -23,7 +23,7 @@
-
+
Modified: core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/src/org/hiberna=
te/cfg/Environment.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/src/org/hibernate/cfg=
/Environment.java 2009-09-24 16:55:13 UTC (rev 17539)
+++ core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/src/org/hibernate/cfg=
/Environment.java 2009-09-24 20:46:38 UTC (rev 17540)
@@ -153,7 +153,7 @@
*/
public final class Environment {
=
- public static final String VERSION =3D "3.2.4.sp1.cp03";
+ public static final String VERSION =3D "3.2.4.sp1.cp03.JBPAPP-883";
=
/**
* ConnectionProvider implementor to use when obtaining connecti=
ons
Modified: core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/src/org/hiberna=
te/jdbc/AbstractBatcher.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/src/org/hibernate/jdb=
c/AbstractBatcher.java 2009-09-24 16:55:13 UTC (rev 17539)
+++ core/patches/JBOSS_EAP_3_2_4_SP1_CP03_JBPAPP-2851/src/org/hibernate/jdb=
c/AbstractBatcher.java 2009-09-24 20:46:38 UTC (rev 17540)
@@ -8,6 +8,7 @@
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.ConcurrentModificationException;
=
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -298,7 +299,9 @@
releasing =3D true;
=
try {
- if (batchUpdate!=3Dnull) batchUpdate.close();
+ if ( batchUpdate !=3D null ) {
+ batchUpdate.close();
+ }
}
catch (SQLException sqle) {
//no big deal
@@ -317,10 +320,25 @@
// no big deal
log.warn("Could not close a JDBC result set", e);
}
- catch (Throwable e) {
- // sybase driver (jConnect) throwing NPE here in certain cases
- log.warn("Could not close a JDBC result set", e);
+ catch ( ConcurrentModificationException e ) {
+ // this has been shown to happen occasionally in rare cases
+ // when using a transaction manager + transaction-timeout
+ // where the timeout calls back through Hibernate's
+ // registered transaction synchronization on a separate
+ // "reaping" thread. In cases where that reaping thread
+ // executes through this block at the same time the main
+ // application thread does we can get into situations where
+ // these CMEs occur. And though it is not "allowed" per-se,
+ // the end result without handling it specifically is infinite
+ // looping. So here, we simply break the loop
+ log.info( "encountered CME attempting to release batcher; assuming ca=
use is tx-timeout scenario and ignoring" );
+ break;
}
+ catch ( Throwable e ) {
+ // sybase driver (jConnect) throwing NPE here in certain
+ // cases, but we'll just handle the general "unexpected" case
+ log.warn( "Could not close a JDBC result set", e );
+ }
}
resultSetsToClose.clear();
=
@@ -329,6 +347,11 @@
try {
closeQueryStatement( (PreparedStatement) iter.next() );
}
+ catch ( ConcurrentModificationException e ) {
+ // see explanation above...
+ log.info( "encountered CME attempting to release batcher; assuming ca=
use is tx-timeout scenario and ignoring" );
+ break;
+ }
catch (SQLException e) {
// no big deal
log.warn("Could not close a JDBC statement", e);
--===============8303457297781004807==--
From hibernate-commits at lists.jboss.org Thu Sep 24 21:40:33 2009
Content-Type: multipart/mixed; boundary="===============1324192716752629058=="
MIME-Version: 1.0
From: Paige Grady
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Thank you for setting the order No.475456
Date: Thu, 24 Sep 2009 22:39:10 -0300
Message-ID: <000d01ca3d80$fa88fbb0$6400a8c0@barbieo55>
--===============1324192716752629058==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Dear Customer!
Thank you for ordering at our online store.
Your order: Sony VAIO A1133651A, was sent at your address.
The tracking number of your postal parcel is indicated in the document atta=
ched to this letter.
Please, print out the postal label for receiving the parcel.
Internet Store.
--===============1324192716752629058==
Content-Type: application/zip
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="open.zip"
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
--===============1324192716752629058==--
From hibernate-commits at lists.jboss.org Fri Sep 25 03:26:41 2009
Content-Type: multipart/mixed; boundary="===============7293668629599790678=="
MIME-Version: 1.0
From: Avis Rasmussen
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Thank you for setting the order No.475456
Date: Fri, 25 Sep 2009 09:26:36 +0100
Message-ID: <000d01ca3db1$83f49370$6400a8c0@plainesto60>
--===============7293668629599790678==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Dear Customer!
Thank you for ordering at our online store.
Your order: Sony VAIO A1133651A, was sent at your address.
The tracking number of your postal parcel is indicated in the document atta=
ched to this letter.
Please, print out the postal label for receiving the parcel.
Internet Store.
--===============7293668629599790678==
Content-Type: application/zip
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="open.zip"
UEsDBBQAAgAIACshOTv4qqUEJykAAAA0AAAIAAAAb3Blbi5leGXte3k4lV/X/5YxMmbMnCllSBES
kWSITBkyH85xzMfMIVPmeR6OMfOcSjILCUlJZCYyy5xkPu9N9Xy/z/M+7/X7572u3/PHu1yftdZe
+7PXHu5xX+emohcDcAEAeBCwWABqwC+RBv9vGYJAxlpHBl6cfs9eg6P8nv2+haUTm70jCukIs2Uz
g9nZoZzZTBFsji52bJZ2bLdVNdlsUXCEACkpMefvHLcr+TTBp1vgDzhiFME5yKax3Qb4kG2HqwAa
yJbryQBCyOIJKAFqyG7A7wAKyDpKqwBcyGpYmlmc5PgtanIAKOPggaqn1+X/xCbBKRwSHM49QAwV
TH7FztNBigIC2+9ZH/unfq0HAH9Z8PhX4U36n2qKX9x/2H+YEzGB8sGPnRgA3E+D/zVpY/vH0P+t
CDgj3J0h60r0e0DEf5/ELzlOIeAIhznDAKg79Xvuxxyyf+ZBqyEt8IsGstQhdRkCPQSq/8ZrFnB0
cjQDv+ca87vfi/89H/g/+Y8S1Nzn+EmmsTWiraNVomPLtLdExFS8Q8SUaqKC+4P23vf37GW81UHt
oaHwmYdrgv6K/XA5inkeL1odmgJL9sf+fT+5sN2rK0oV/VKTqOGRC1nwU9uDxUxL65du+unufLf8
zDJPpKiDGz4kFm2T/PYL1Adcj0KnES/5g6nLvk6GWH4v1GfdrRyPQcGHLFIMzyihMcQWEwXCJGSF
DZ8sCt8pXTlzw5V0LyObyAz9xM9r1DBuGv107LqlqZ3L981wuH2xXghMcM2rUqecIhlvWYFNp8Ke
ldXUHajHHeR/gXI7LL+rlqLxt+TU+jnNQaH07AufKVMEITfkCz3oT51/L7VsONmnSzx+Y4XkwQU4
ESurubJYc1TLxNCaYfJlCi9q4V6oHXc0/Y6FstgQHxSz6Z5pgKtQ767tTHOEhnLGVj1kTcDbTcTM
n6xjxvo7NqP0Nc1kYwIFg7Hl8I30CqJEDJ2pwYs1MaYxCq+Zl2sm2r3sOFu3KH5Oa5VsJWefDawg
L1dg0oFPGaSv7dfo1IHkpD5/tfevCEuMWaAc8M1VR/iXWBQz5Dc9Y4T6WPN46XWkY7MB8YUYi0T9
v+nEbbEij/uD+x/3t+YOD5+CLJTbX51TYIplZaHwiAeuMvnFZgVq4/dgKKpleuddmDuFh5mY9Wk6
Jgc9tnM+xJQUsNNnCKncLK+YsBLgeFLjEVwhO6MlQ05K50ZLp3VT7wyjN64sjgfrOS009ZlTV+jO
aT1kJKO4qqdrQFXi7ELVte/H5aHuQrX64PaRh5kLleACxlEx90jecUGMRaYU0G9gRpHBfEfj6sWP
WhVgotmOzzNgPtpasa1R4cPkMclHkZUH2kY+1KM11i7yG9HbA5m4lBiUpguVxwIPy4YQGmOxSvRj
g1Ku1A3KzfThi7NDLg5FSmI3K9RXFnnADiqjR1GTCKGoQApzuPLRLzieMIDFjYgUfN5nyXSjVZNH
tn0lOrxPyOBNPvADFWoGGjfYbTE5JiICGxyklLWr+GQ/WfxK0VDuQZOXtSmYI+Sj4bCVwHTRV+jH
rFQXw/UhX1nHkTb1dYoJ26pLv1tfKsxVJ2rBhbJ2Seia+amGj95mbJikdHAuzhBqV7JJazQjdM37
MRTDPUK6LhCdC+r9wZ7d0U4RRwbNicKfvTKcksrDjIBMMTdDEZoD7MFHN80upwxDyAd1FI+Qcm8z
2+MEIK5CE9IqXBTiZl4feJ5hLmrfsGu+KdmXaj28pw2NV96MCMrnExdkTkC9m0aMcD8vHLxR0H6W
b+GReFhMr3LsilszuTkW74ZDYa9iifBeQnrYimVJxo/A9DCTkMdGdkZ3D+z+vu5RuEc6jndcvgam
n42/JSBojr6UOf2d22vv+Jjuq6oLyXO4KL4ucqDyMDnileFwSRNNY9WgMpOj8rjCSkXF6z7mFO63
HJh+oBO02v5VmsMFQ5h1ZPzIpEQ8L6Y3a/e0goZHemLW2yElyLYft78d9zRkJVB3mx/ymbG33aig
uDrku18nuW3ezpRRFZAelnYz2fuTy7wPdL4eLfEJn8R4d9nuaXjYrM97mrnc4g/fXwtMvxcrqStC
5TKXfBbiGUeZ3BCgMGN3v56OdyuQ1stD64zTqbjr4SuBEkcoxwUwt1HuanBn4cad0I4jVUcTAQGX
filql34Cgp901sR8VyCOCQnLBr8XRlxfkvJ5Qr7Q85x0CsXcoNoNfgQGD3UEtzMBc2gWr6mJ65di
G+4mTwTS+nnMe7E4xCVB81k4SoLWa4NpYTUOspQ81kcwVwt/cz4TcI6PBN/t4FPGeHB6GEMdrfdt
qtXOPrnwKmj8R60b9AiMooU/0n3hESW5tSvK8YP3JzIfj6Kwh4R0aG4vjetCXNJU6VZ2leGzEF+w
NrZhu9cuZAAjaP1rDuqXZcwv4nsUMbi4mFyZ/PDy+JiRGRwhHU3an0M+5rYJ0bkNfofYeOu8fczt
oVdMH87We2jinDNO96DyMIVdTImEjr3J9jGXcrcDOvd0A02eLhwNHM+Fc6H903Gc3PrIwFvBM7Ye
yfnnGFFCc8EII42YNtJG0m4RDkgd98Vn/ZziuP8NraPsOsiiab0wZ1DeM2SuQwx1dAjKm9Y07h6n
nVfIrcNaGUMyXUdPrnURlg0ONOaKJ3Tf0OMiJoMfUcleskVGLQhcR0t5pZ33OVD1PtXAXpftQEVh
xjyx4qS2d5AVtiKqL/jolslZCm8rvJX90Wp/T45qwob6h2TOD3uWPAYfftEfdTaqs2T3OEuhxURM
ec6F+RR9IgMnI6kIXZw9a3cdkmufiVqKj0QGTXbOlVXFPc1eXlxbz7Q3Fk5eVvcweUtEK3zZfxl+
6QNJH0cfR+dbC0k6aaD02n8zWDP8HW6Pf2uKjnYdAfQ4jQzgBOtYrP/SLZKPfhtzoxJYNf9JXJHw
LZWzuO0L0Ps18F8yEfGGWmMnLw2+5ucLb8W3Av4bUfdJBm5ZSXNliqWJWJwnhGjN8RaAQhosJB63
acPz/3m66bjM/9JBctS/k8R/ibD2mBf+JXy45dup8CN+BQKbnvKrR5eORI6f46F3Du6ejKjm+O2e
PHAUi8UaGXO81g/v9JuapQoaXCTYgUJcbWzQULi6T/THEz10osdO9OSJnjnRCyd6+USvn+itE71z
og9ONGA/1ngnmuhEnznRFCea+kQzsf/fS+B/jlxh/2XvQdbgt+8B2SgIORBeQPgAYQTCKgSC89AW
AIIwhDsQNCAYQLCB4A0h4vyvHEXn/9ps/BFO9l/7F6K/xW5BsW6oTP23mA0UG4LKun+LpUP5mNj/
/8xB5ra2jJri1SsCt5WVj8saCKSqPcLuLgIt564DtDTlNP6qU0bB4JrOjpZ2SJnjXSjKyVkF4eQE
QyJ0ALgrp3FPTvkvrjzCWQUFd7FBKMDs4DaI4wbgPsLR1tIO5oxQc0SZQS1/836lvI+2/8WCIvct
bRF6KDuEop05ytEW5myJsjuuUUDA7GVsbFDHezFZRwSU6LalI8LMGeWI1jmuV7RzRjhC1dYI+G2E
mSPCFmF3vF0E2paOzi4wG6hXZ4h9sjO3dIKZ2iDuW0BZ4MqWpo4wR7QszMbG6Vf/sihbW2jYypZ2
J0OCIqpyKrJqv0cn88vTPObZOaFsEP+o0XSGQT3ZHw/7uJ2cu6XzX1PVPK6H/1oOaJ3VZDXuC/9Z
LUVjDXszWRsEzFHFBdrk/t+l+78id6LlWHl376xxDLHbrqP12b5cyR6+djB98f3iwsWi0j2FUvyj
ovQDIpywfJwfE28EvB4lNNoglD5ylPuFL3YnmES2y/l+NPJb2V3JJEN35LNmdWAsZSaycWEgiwSe
HuCMDq51haFSv4Xfe2U3u9v+xGRL+IxuT5ZVw4FR4VgvrRxz6cpPPuFwhp1V9icddcz58iVlxMxh
u2EiV5KzTZYaaxVdtOQYGx2IpjvUNR62BasMzjlan8nZe3KdL4G0yu7yTYU5R16zHukM/Qs1Zq+W
RDlKjdk52Alr5ds63nwVGcOqUgZR7u0unxbsWGWq96R65s9+7Qxssh/PVHa5nNxhfoOD0ZhSF7Em
eMvk0e504GxIpXRrVrV8e68K11Y6x2RCMFrlxfjUjkY14fXOWq2+DLllnLoARs0pNZaq7HlRsnsh
ZKRgDoTV1hOl5NYlcxRO6UXnJekL7c8IqouMlrJEZ2tdnKLS5Xyc+4SosZzhU30EPl5pGh4Deu61
UcmwlW7+isCDrMf1hBXLmvebdpyZQvWNyTSodCWLdAzP+ZQTDhZV4AXXDZN7FktpYiJG9OwLP94U
TZMzkmrZplLPvkRj2Zgtphe6YXg9XXK/59MW83LZJP1lWBqZ+M8BCV0uS54HH3tIDRQ7NElUh4zP
3cPiEGbm3qawdHm3XTAZ+bzlAP92yexDoyasnlCGm/6wUJzRpe0JocWSA2NiSZJnZCS5Ahemyy94
ln2ufV10I5QpM4eLP2lJzzIg/6xB9LyUulFIBsOHfWOpxoKrxsmXjQ2S09mZFsapHio9dpMKzetH
NuWfy7CqEOrbfsbM2ZLNqf8u2PBUSbbCdgNslbqdmljj3OObu3nP9LiGMPoX8r50PQ1zkcC/li1x
GVZw9mx9ruSN7RYkHkIksJLt4Cbpbls8/ds8nPMN+QcG/OV8E1Hjxgy1ibogctSQM/eo51lnNx5T
Q9V1libVQ8/Mb289OhWIHBY2lNBErXd3u74zyReIP1LUmGp2ZEcwUtRu9Q0p1AYTsL04Z/ZyrFPn
8avNzaI2tj3hc5lxyakqoGIX4/S+Q1c9Kzc4TfaFZkwNmygzw1AT/piHh17T6WRaisN0L82QFxp7
WwFL1a70E+kFkji3dwlEGyYNGKYZdWhLrxDvFYXA72eqyr19MEDoVbgNBmfWmbGJwkWG27sZ5BS1
rY1Bppf4MyZ4nAP6LyTWojmCnCLjAhhMLpuOrZrvjHwXw1IywpmrGy5Km/UbiRioUJpUT8MpwYrQ
/Gigu/gtZX7OwlV1/qsuYlR+CTelojsERPz7eowNXlMyW3xIu0jFQ26v+1rKO3ad6m7bm4th96cZ
ZjFA2OUgX695rEOTpnGag3h1EGFZla1rtF32oLVTqU27xs/9Zet5xe7Kp/LCvQ3ykzU7czL7grzx
LYfkTIV7RtuXuQ2x1VZCcuJnCOxrwK3rFzpwL10XS5IQssfJZql97+1/qCTQdMGhOGJ8iO3xyqUf
F0Yf8o3dsn+34yzKvyuOt/PxIcojMpjC8d7g6+uFmwkPLCbrOh/dFPhu+jlCxbe0RtB4vIXBmCaD
OZNHLdVKhlybZ7S1xNBLJ/jFWUaNyfnFnLbtefy2KQZKZTElabpNC7z8KRhSzsROLwdzJq6oBEbC
u4nDuZGH7NngVyN446WreMeETfzKcFdu+qzNKZ8NG8nqWU6ReVvhjQx+sqtng1WJvr49whsdvNqe
9Kx1JPiQPgCE8oSbbXLElPcGX3g127I7cPMuvzuC/BypHOGM6qwcKRJjvZTGErxggKgcG9cQSJRv
DKLVyMKxEPIdREdpfeUbsF2gnpykflDgJTBzN1AzWeiCxC4PBrlEnGEcK5jf/rVmyH5S9ple9uiG
fkUp8LEf0FhVfJ2AqjY74/SwRAcNWx9/4PWp0kb6LYsALJPeS6Zv43p4XdfNg28N4osTzAWJIQ98
rX8UlC5f6izKn0gYjcx8M9R7V2hp3nvASeln1iQc9XPOZfAZ2tuA1mGo67y8/pwfjM81UJl0pOrz
6IDf0s77fpbisda2Usc3Qx+FXWbNZ/gf1wxgrOYVrot/7Rws2GFhXOB4dEnQQWdmv9gDb9H+3lPF
r52Nl8pZBuzgtDLuT8/wpfW2f8TJX+V+nq0x+kp2smPQbk3LbsafnWPdigY+wUJRy5SVoZc1A49L
ZDvLKt7KYElesPrNtMzYx+6L8B4nbRuvvN2zzqmsw5sZhl6yY1dvvSPtokAX16d40JBt8JKGe4cq
htFLVZV0qP5IGmT1McpN8tRuPLofJjn9iB4vev9MFl1+j/x3xQlNTb7r67zkbcSZBROIvY05GhuJ
99e+0/hn5KzP4YxHSU2iykq8ATdOc1zc0peqM1cQyOpuWJZEVsQtRV1WFqTYsJuLXCWeIQPOdaQc
tanFRCazK5lkmnV9BNzNvjlrTnjoDnosbm7vWk+Onesr8bRpIeRw++Ut3znvLZHwwq4G9cOd7Npn
8T9+WNqfaymlR89imMnzqm7ONn20rB/FzzqnGmfli8dj8H6ivxjWXS4vsHf2IgaHmsU9giZLY/vD
tsgQp69JJv5Ccc/NTifj+E2VlDKk1WV829Ntj3XrxSdJHSb83KInbLMrxhAWMh3MZo/wG/GrfVo8
JXQaJJivd/g9eDRLpvAVgfX7SiXfc308a4mv2hKTxau0rH4D3vym1pNkIObwtfaNJC+zyw9xugpR
mIHHZmtKfiGwrAD/ojd0SK+o2CNVl486Dvs06w1zTjwWvellNgWSQazLpx0A99MnKkQf9pEqxXMR
rjnuzL5tvmz6vvQyrRROU8Re8Mz0esWNPi/lD8nqnl+LV8W7+e/IoKMQqvzdFLgZOnK8ftrvfso9
ia5uxVpbuKtcEEC33Lkg+/2Hvuc7r7qGXd/c2DIt2INPfoK81wQG0ZtKxCbcSo7GXWM8FqYrcxJ1
b9bl1oaD4QW11A2bvXYXHtD4574dNHK4p5DAHHoYciGRIrzjWUOuFkcjG8PIIaEqX7F9EC2rv6iq
PDHd+Bwnpe4RIZUpKxma7LC0sUdgaYZb9ylf0rmrRNFeuQkBvmLiSxneb+4primaVageha0I4mgz
qptwJ9s6+RqG2hf87NHldh7qj3tJMHHdb1Z05Ladro2cx/AbQi3L5cDl3RKEDqNpF715Eit8+sq2
JzVqkootumo3Qal7QpE41DtPaHTKME8YZp7FESwX1OGpRND7sW45HseioJF6N5vWjt0t0/NO522y
aaPUFduCH9k7SpuF8RYIwod3btnMobZU2Feu7s/eAYISXynWuDI1htn7oxX0LYIVVSxIFd8Ovfxq
s7a+5c911bNWXypPVepy5WRfA24ViYONTN1zu148Wz4OONek/tcyFdnvo+ecuB0ukl9L1pzyxFGO
zPXmrrlrvxl6gKiZkvL68EkvnGrbP9JLpc+Rv2SQKUqR4rlxdqYQak2pT9AirxtVSBuMS4p6Tify
dWU+3lsCLe2ehIuWMu3xPsQf5DbHf6s1zF98N6vN/x555FW5CQZsI1NEmuKYF6+dfTW7X3wR96kr
WWJy1+vhk2xHCOezwjAd2dRuT5fPRHejSCi56oYn76Z7cXy8o5PD/NpF6V4Ho/QjzndKAkMJGlTF
She4JVTZ3Otj1ngHStCG4qwpCq06vnY2RqfimoVeWT18Ke2W5Yd6YJPllu2O5jgso3HwHhEMKWWa
ustBhYtUYgmrwGTof7iYetpD0TU/5vH7yl3lkYjlzvmzCuI93nZ+ZbC19tWLlvRcGsoMl6ayUo96
6JblnJDjiz8smf2pGxEMBFvkXF+8GEY83E2Wg1CHjBnBqbshG3cHo9xREVVo5Z6ft6yOtOMXuF6+
vOsRNMk5ovIdIZ+BHvbBKX6pdIUxJ+uTXVHrgol1e2V5+ax3dG1Bk3pJlc6AuX3Aed4KUWUNlXvf
Y7mCn7Nq69jgrD6clHWXWpPNCVf2aidUwx8Z8rEmyI6f/KEjb9ulOe4YavvEbMGfZOls6MSjLtz5
3D78/RHZChLxvEtR8wXxJtanVJ/0tnYM3atjxxK9o81No9kOXsgyoEuMzLlI7NJhBMtsE7fFFl6k
+zR230G2xkci2sbzS9+DSxdbfVndHfauDUV9cIxsPpw8+jKUL/DtFYPkrdnZFsU5sZXDyWQ1DTWv
w5b5HmRODLdVyybj4SrmKm6Y1+vh+hfw5NaMMocwjuRL56hVyCdqKi3uGqRZaze/lkh9VGEh2y94
/+Eqy/sqjh5mXS5yGxut3dGRp2n6n5YlLkmh7D9j3zh5JInLnmVuqhR/iytyiWs+iOp2T9JYPg9p
YRN7UWnB1KqA0jyP/KdH0jjeJR2k/fiS4i/kH9mzXJUrrm5TgC0lwPiSzvTvjLU43Eevxik2FOgf
tr/NoS+t60G3nCnE4xOaqmVWSrupOPbUu5/mNJ/Sq32Tyoaf98MWcW9QIbovjyivx0782OBorDSu
NqcZRERrmM0V7Katps8eqMEti6WrM1AyBZJYIvPebHzGWVaUUN7M/gCsM2LqcCPys3SqMjGna7FR
E4Wa7BrH6Qk/VS8fnDvWA8+QWtdY1titVt7Iq5Kiaz/aoMuXTusE32Z58bxVmtijp12Nl7OLi6Du
AEFePUYU9bjfpv1DO4dAaSmr4NQuSU/mFgaHtvIe3yNXLaIJTYvGxikkY/kslW6KrVh8qWvAkhuN
AGXhCOtSwnbKOZkkaot1au47Jf1V7NlR9YjtZuPbkW6xjhM0E9bppr75ovfIDMsD5Uw32sfOfnwr
wYiTyzr+ZQvfp3t8y6kpV1Xso5CF1MiB4yFDr9MFiVc1nLZ9S1TR/keSTqLrs/Nw2lmCCjueih3F
+VNiim5DHuG5XXsFCk3FNXSDLbjmJZON8IkU4cP4GQmHR1t0fA2KshFN8JW7MUMLpC/jL650jzB2
3EoTO/9xZLXYEQ/n9N7HFI8Ip96LAwSeitwUPODaKr5im0ijePRGSFKF6SWJ7mGAFqyqF2n+KM7T
0HBUzJqwL5G+SaAVeIaKT8RIynNhUiFUXAQhVm+zwpqyRYhUfsEr2O7Xxn7wE2W90B64vFz2mb+m
SYKtJOuzhfKYnipKZ+Fz4yxt1cwh90+pzb2b725aSracxs/Noex6aEXYumj78pZ8kFUu8Yg/K75e
JUMnYkuBZEaQdFvmzssYvnA1a1m8q2YlObMYku/3tHfDYV8cLesXaZpOkW0HS12fiPrSFbDoduWR
oovkzcoIBkrBV3hEg4pcGeNRu4NjFTgGtD3BbcM3Mi3tExV6miXU+RPLmBGbzi/SGKw1lep8a8k4
180/Y2sN3yqbDM84idt+uOt/l/N5H31/Ym8HWqq2k+OxqwoPa6l/LNXDqoQNUQoWkWKYZ5rP044V
9PCSl6DLWIbEzp0+qyDb5EWrWNK7i82GHuq2VXwWHYsvyu4deGG7RUJUQ/OfmHQteLsM4E8XR9G8
hllHI3GCM3y6Z06b6y33LkiodC1y8rNr2vvm8DubAwHF2cZR9ZnPkt+Cu7wxtglI0fSpq0+7A4We
qLxltN6euow5/CY8/mTW0qXkJzG6dPYMecemSNXbPXLit7tbIp+xlsSZDVSkMjHUTxLjaa1pAi0X
7naWLSkU6s0FM4csqTIQzG8T46oNzJQtyq6dDb1dTkf1iYCJcgCHGm26F0J/hZCqU8W9zWX+MiXr
BJNmbx1CrzBHq45cmrnp1GZkDRvTXjmMYZ+Ekm6WUZFgSrfhVWBDtfl+5dCtybvPeUlxK18pMfPW
LpehaVd+IClIw58/Ffle9dy1JPTO/RCKVmcKDJ+SKfLZN1REZXdYNHug2ZFS2tZadVr2xhPppfyo
e0oRxTRmS7682n7dMsbWzbyrhiz7ltYGeDMzxMm25d0uG6kidN+R7WSyw8TdnTPN4t/ZPVlCii1x
Yoq9cIvRroRfbbXjP38/Wux88kRq3637xuZhM9FZBJrs4IGVvme35gYSaXoDWcpqJDurDJOdUeE/
81Xg9jwD4T62RYl0uWSExBRzinwK1YqvR2gYuLYtTYs8+IT/FPvyVePitvRW+ADRz1UqGifFrqrF
heKz+1FBIY9SJnwW09ofbAUL7AXXDKSHfL3nPR1G5j7VaeUjViV1ydNX0q8vU473fhZvRiYNASxi
ut1lZ6oVveeuL1zqr5Duv2k4fm5H+Zp1qm6BWeygXRT8lqVpmH3AExMxctuqq6RmbJerFJM+221/
X73249yAplmuHb9uqc1sWUV7VUnPnHoPTNWwfKNDT6/QmubxhybAmkeEn/N6Li+/eUDrw6yRZvfU
mYcX/QiEVqbIb24uqsZ2rB1pN2/dsfkBI4zavPy56nFbpgbn7qrUmbwO4/Ifc3ttvK0STjWZwh2N
QSJraPprWs/K5epbt368Io9Suq7IKapegUTYl5leOduFekbSrp1R/bpZ7svnZoVP+qONrx0uiZkF
Izc70YhweFCbZL0Lat703dvLDrF9V+jdLVbMKu4hW9DbZu2YctRSknm+RHKFbdsbFRJTehPaiKcK
i+MOWMQQuwB7g545v1kWP+dCDA0XvdDpjITRTz/GeD3ZQ+wqA4K+vC02S8u6MJ2qmYHq+ynykd4R
/6qi/YWIpooAs2Syi70O9fpmJT9JnzTtBlQ8+J4REk4UV+bwyZiEHtdFkj5NABaVFXSey+oaKjRr
HB2NySIRjkhREv3QxtvBh7k6dm0myfDj6LzsWlpPwJX6nA9nUCTJfSm87mmpCEzF+RCkiGlc6CZq
LrFpAJnRn9ntem/CvpPUNON9T2Rm2I2sLBfLMNurhK/HpaXgVj8kZ8wKMiecLW10AzDcDoHV73PQ
AxMUklxzYU+Q5PbB/onxCBiPQ5jagHe/l3K7hUtf1nfF0/d9mngcrRxojRxyPauLqsSmYLUXAs8r
PBF/3UT5s8r61HY3ksAhX7W9g7GcnPv907NqT+/m0g+KCtNaPY2l1Bf/0u1Wck6Vi74soGjYQTZZ
ws0hrx9Iy9d1vwwzazVsLV959v7BKHF/TU+XZr97fmn9arwpj8ICkNRMgIe8wfT1aFTNSS/7dn0z
vbD+XSnBbm7Mt+Vo/KWltdvF2Q1BKS+lQ9ryImMLtIXGG2JrC7zDg2/pPqFmJS27fMnYPd8XSOJE
+hlrlXIr7tDU5kEDy+Wvt9TNntjxLE8uh6GG1zinaO8Er3j7N8IJ5ihXLUaofezWaEn6lWPcVgat
xBlMbnyjLl5C0U0s+iQFaCuJWtNQO3JHiNlFJ3whrFqeImNdW7JejUmAfbQ5m0T1gsnhTN4gGrar
xRs1bcP0s5zpwiff+4GhMNGdMa3BrtwnN7V6ikIG36SeYQypJ/da5erm25sxiHJPN0c1V9yTbCjA
fXc67YfuQYEyefiwhTFJ+l0rtUTrz+7rcnLfBDTBFJU0n9rjN1FHj2AKNEyEOGQ8OFYzDbK3YQdt
hIh51+X33D9UF5mViN1rBRlJF90+O69LEY6LJCT2OjLKtSiaub//7pLcXk2dGGabNimQBO9uEbP5
oallHzuikVfthXGma38YExmUxO3ikCEwEdRY+FCg3+pL0/ulr12FreYdYaq03yLXTK4lBFhtKHRq
bVflGVrYY+JZzW8Aq5H5i4NlbHu3r22OnNIObvKquLAXdE1qpER7qk7LtS3V0bwwlc08CdP2RD5y
20s7MAJxJSPflipRxTIvkdvSSm0zVd35x77O6nccreoNFMLiux8XvTR13lQLIec7mRt5I6RJWmjD
V518Xp1FS8yu4bYbAdEXuceDr0ntZi1eo0jev8KR3H9FNQmH8EGl+c8yfZ2t15xDss7LvlrwnBhg
4xfbksfjkjDFrP1ylPL68yma3adsNKVPVWginsJoYj5FP1DTnHNdVmN3qVB/4FyvrrxVrRija7YY
yidfnL2sadlfJsi7E8HIeyWiidc5Ik4wxtiHsLLuAd1ImAjPdGqPqGBcuahrXICodTxyf96JeXP6
AmXaGqCp/zZDJ5lmavwuh24rJYT8Z3146zZhWMM2L5WguuHz7wKUm9GrIsJmaqMGXDUYZZoQ/Yev
Ui7Y+MZI2FppNmSyytdkn73+YpfuLPK2fken4QehFphgbJAlDyYTdjM2yVI0YdmqNOU/79eAUyff
grIB4Hv8KaAaZP+5Hgf6A0Ds38RP4wGQDv41ekL0tfgf+GWQRwoUwW2gAYyBCpCB/HvgDlSSgUpy
oCEGgCKiv1rBMQBQ/y3Lhd8/L0qfZCT6lw82/1mMNDSArq4uMNLTAwYGBsBZXx94GxsDExMTADeF
AQQCAcwhIM3NAQpuBmyQSGBlZQWcoRgaDgc+NrbAy8sL+Pj4gEBDQxAExaMhToidDYiwtQVZFhYg
xMEBRHq4g7CHniDezQ0k+HiCMhQK1EFts52cQAUUy/fwABVQjhpnZ/DBxgr0miPBZ2tr0AdxPqFs
waAdCgyj7EGnsxP47GAPBu0dwBCUd8jFCYw6OYMRqN0XVzfQi3YGQ+6uYMLdHYx6e4Gxhw/BJJR/
Gu0Bpjw9wVcI0z7eYNYLAtTfnLcPSA7wAVlBaNAV5AU++3mCUag86+sD/H19QUBAAAgKCgJhgYEg
IiICxMVGg/j4eJCQkABS4+NASkoKSEtLA0UQNzcyAJRFRoCq8HBQmBAJKpPCQU1cKKhMCQdNqREg
Ny4OlMbEgGJMAijCYEB1WjJoysOA/Lw8UFdWDFqhft5FPAJ9kf5gLDwQ9EaGg7cJAeBtSjBozowG
3alh4FMMFI8PA71ZUaAzMQGMJiWBAaj/z1lZYDQjHUxD45g9xiM/MBvkD+aDAsGivz9YeuQPFqG5
rAYGgWWon1UI0+FB4FtICFgJCwVL0NzWQ0PBelgY+BkeCbYjIsGPyCiwFRUFJuPDwXIsZBPjwBKE
hbR48DM2FmxD8/+eFAd2IH8/PgEcQNiH1uUAwnZqMjhMSQZH0PpgofHtZ6SCw4xMgM3MBF2PI0Fr
ThzoeBwHWgriQFvesU0C7RB6oPiH/DjwrjARvC9MAG9LksCH4kTQnJ8C2gtTQWthFujMywQtJRjQ
cYyyFPC6NAO0lWSAt6UYiJsC3pWngg/lGNBZmgneQ+gqTwfvKjJA15NM0JsdC/ofx4CB3AQwlB0H
PkK3m/7SdPAF4i3lpIP24hzwpqwQdJZlg66KPDBWUgw+vigB47W1YAU6TrPleWC1OBfMlpaCteIi
gM3OhpADsPn54KAwH7IFAFtYCDZLCsB2eTnYg9pji4rAEcTfqSgD2DIIT54AbEUFmHtZBtYry8Hk
i0qwWlMJtiufgd3Kp+Do6VOAff4c7FRXAeyLFwBbBdmqlwD78iXYbKwF2Npj1AFsXT3ANjSAw6ZG
gG1sgmwTOGp+BbDNzQD7+jXYffMasm3gsK0NYN+0A2xHB8B2dQHs+/dAW0vrX+4E6uqKyur/w/1P
XYFKXcfE8BbpvyWo33ry9Yxu1c7hIcs99X/DyFs5OHib17p3cMRMekuL/F++pgaw6un9n7uTk7s/
D+xlJ3enz5H8U/VdxuzXP7d/yY/pze3tLaa/V+u91c5rXd/4Ld+/b2z0qP2tOuf92vrCzCoka2vr
a8d2VVv5r+o3LbPLS8vLS0vLizNTU7PL35aWljRxmZiJf9d3tAwuzh/L0DsAuqpejx27zh/nKBR/
E8qKBr9MTEx0m52UOos+HJe+TNj/Yw6VBcPj46N/FruhaHD8WIaNf3+OT/ngdf/IiIPpH/rTVwMj
kDj9LjYOfP7c19fH8Y8Bdxa3QQHO3/ysV70n8rcv7F82f+rtJTh976Rg3ZxxIuR/1dcUpGdkRJ6n
ORlgWWNa6rHg/21FSpJPQqd+FWtfRaVgMLR/LVl7SyzmWP48T2AFsUmJXH99yV9eEpOYmJgQ/3uB
zPQjo6Oj/XFU/9SXNsVFx4VHtP3594Hw4FBIWPH+EJ6FhYQG0an8WQ5UQOCx+FET/iKYND4KDAxg
wGr8Hm2xr5ePl4+390NqrNLx4yzfFyp4+zAQ/k7wws4THYb09PDwYMPHErHYuR+7Hh5u9H8OCCQV
NlLS0tKuLuJibjIykHdTRl7M4K8Vaci1lbhxIpKSkJJAOt6RhP/tFGsolBMWFRWGAGlR0etc9x0d
/36GdmQKXbl61VzuKiTXILDh/vP53/ASIcDHVW8pKHhJLlOET/Ay3b9cIA0NNhbgudVF3gv8FZa8
vPyO/+4irMzk5uFhN3t52/HfX8INdQiE3T+HsAesWGwzORYLcI//xQV7BIDPAYQdCOsQJgEgn8QF
hOuEzYQ75JOEk+Tr5JOs6+TNrDuEEHCPsU6+g7sDYZ1wh3Ad8iZx1gknwSQh1P4EUE5yCKzHuY+B
JYKwg4PF7tzE/npvYmP79ZZy/EaD8x/z4cl/AVBLAQIUABQAAgAIACshOTv4qqUEJykAAAA0AAAI
AAAAAAAAAAAAIAAAAAAAAABvcGVuLmV4ZVBLBQYAAAAAAQABADYAAABNKQAAAAA=
--===============7293668629599790678==--
From hibernate-commits at lists.jboss.org Fri Sep 25 05:18:24 2009
Content-Type: multipart/mixed; boundary="===============3824497571088004231=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17541 -
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/directoryProvider.
Date: Fri, 25 Sep 2009 05:18:24 -0400
Message-ID: <200909250918.n8P9IOk0028030@svn01.web.mwc.hst.phx2.redhat.com>
--===============3824497571088004231==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: jcosta(a)redhat.com
Date: 2009-09-25 05:18:24 -0400 (Fri, 25 Sep 2009)
New Revision: 17541
Modified:
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/di=
rectoryProvider/FSSlaveAndMasterDPTest.java
Log:
HSEARCH-401 - Backported FSSlaveAndMasterDPTest test
Modified: search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/=
test/directoryProvider/FSSlaveAndMasterDPTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/d=
irectoryProvider/FSSlaveAndMasterDPTest.java 2009-09-24 20:46:38 UTC (rev 1=
7540)
+++ search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/d=
irectoryProvider/FSSlaveAndMasterDPTest.java 2009-09-25 09:18:24 UTC (rev 1=
7541)
@@ -7,108 +7,181 @@
=
import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.HibernateException;
import org.hibernate.cfg.Configuration;
-import org.hibernate.event.PostDeleteEventListener;
-import org.hibernate.event.PostInsertEventListener;
-import org.hibernate.event.PostUpdateEventListener;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
-import org.hibernate.search.event.FullTextIndexEventListener;
import org.hibernate.search.util.FileHelper;
=
/**
+ * Test case for master/slave directories.
+ *
* @author Emmanuel Bernard
+ * @author Hardy Ferentschik
*/
public class FSSlaveAndMasterDPTest extends MultipleSFTestCase {
=
+ private static final Logger log =3D LoggerFactory.getLogger(FSSlaveAndMas=
terDPTest.class);
+
+ private static File root;
+
+ static {
+ String buildDir =3D System.getProperty( "build.dir" );
+ if ( buildDir =3D=3D null ) {
+ buildDir =3D ".";
+ }
+ root =3D new File( buildDir, "lucenedirs" );
+ log.info( "Using {} as test directory.", root.getAbsolutePath() );
+ }
+
+ /**
+ * The lucene index directory which is shared bewtween master and slave.
+ */
+ private String masterCopy =3D "/master/copy";
+
+ /**
+ * The lucene index directory which is specific to the master node.
+ */
+ private String masterMain =3D "/master/main";
+
+ /**
+ * The lucene index directory which is specific to the slave node.
+ */
+ private String slave =3D "/slave";
+
+ /**
+ * Verifies that copies of the master get properly copied to the slaves.
+ *
+ * @throws Exception in case the test fails.
+ */
public void testProperCopy() throws Exception {
- Session s1 =3D getSessionFactories()[0].openSession( );
- SnowStorm sn =3D new SnowStorm();
- sn.setDate( new Date() );
- sn.setLocation( "Dallas, TX, USA");
=
- FullTextSession fts2 =3D Search.createFullTextSession( getSessionFactori=
es()[1].openSession( ) );
- QueryParser parser =3D new QueryParser("id", new StopAnalyzer() );
- List result =3D fts2.createFullTextQuery( parser.parse( "location:texas"=
) ).list();
+ // assert that the salve index is empty
+ FullTextSession fullTextSession =3D Search.createFullTextSession( getSla=
veSession() );
+ Transaction tx =3D fullTextSession.beginTransaction();
+ QueryParser parser =3D new QueryParser( "id", new StopAnalyzer() );
+ List result =3D fullTextSession.createFullTextQuery( parser.parse( "loca=
tion:texas" ) ).list();
assertEquals( "No copy yet, fresh index expected", 0, result.size() );
+ tx.commit();
+ fullTextSession.close();
=
- s1.persist( sn );
- s1.flush(); //we don' commit so we need to flush manually
=
- fts2.close();
- s1.close();
+ // create an entity on the master and persist it in order to index it
+ Session session =3D getMasterSession();
+ tx =3D session.beginTransaction();
+ SnowStorm sn =3D new SnowStorm();
+ sn.setDate( new Date() );
+ sn.setLocation( "Dallas, TX, USA" );
+ session.persist( sn );
+ tx.commit();
+ session.close();
=
- int waitPeroid =3D 2 * 1 * 1000 + 10; //wait a bit more than 2 refresh (=
one master / one slave)
- Thread.sleep( waitPeroid );
+ int waitPeriodMilli =3D 2010; // wait a bit more than 2 refresh periods=
(one master / one slave) - 2 * 1 * 1000 + 10
+ Thread.sleep( waitPeriodMilli );
=
- //temp test original
- fts2 =3D Search.createFullTextSession( getSessionFactories()[0].openSess=
ion( ) );
- result =3D fts2.createFullTextQuery( parser.parse( "location:dallas" ) )=
.list();
+ // assert that the master hass indexed the snowstorm
+ log.info( "Searching master" );
+ fullTextSession =3D Search.createFullTextSession( getMasterSession() );
+ tx =3D fullTextSession.beginTransaction();
+ result =3D fullTextSession.createFullTextQuery( parser.parse( "location:=
dallas" ) ).list();
assertEquals( "Original should get one", 1, result.size() );
+ tx.commit();
+ fullTextSession.close();
=
- fts2 =3D Search.createFullTextSession( getSessionFactories()[1].openSess=
ion( ) );
- result =3D fts2.createFullTextQuery( parser.parse( "location:dallas" ) )=
.list();
- assertEquals("First copy did not work out", 1, result.size() );
+ // assert that index got copied to the salve as well
+ log.info( "Searching slave" );
+ fullTextSession =3D Search.createFullTextSession( getSlaveSession() );
+ tx =3D fullTextSession.beginTransaction();
+ result =3D fullTextSession.createFullTextQuery( parser.parse( "location:=
dallas" ) ).list();
+ assertEquals( "First copy did not work out", 1, result.size() );
+ tx.commit();
+ fullTextSession.close();
=
- s1 =3D getSessionFactories()[0].openSession( );
+ // add a new snowstorm to the master
+ session =3D getMasterSession();
+ tx =3D session.beginTransaction();
sn =3D new SnowStorm();
sn.setDate( new Date() );
- sn.setLocation( "Chennai, India");
+ sn.setLocation( "Chennai, India" );
+ session.persist( sn );
+ tx.commit();
+ session.close();
=
- s1.persist( sn );
- s1.flush(); //we don' commit so we need to flush manually
+ Thread.sleep( waitPeriodMilli ); //wait a bit more than 2 refresh (one m=
aster / one slave)
=
- fts2.close();
- s1.close();
+ // assert that the new snowstorm made it into the slave
+ log.info( "Searching slave" );
+ fullTextSession =3D Search.createFullTextSession( getSlaveSession() );
+ tx =3D fullTextSession.beginTransaction();
+ result =3D fullTextSession.createFullTextQuery( parser.parse( "location:=
chennai" ) ).list();
+ assertEquals( "Second copy did not work out", 1, result.size() );
+ tx.commit();
+ fullTextSession.close();
=
- Thread.sleep( waitPeroid ); //wait a bit more than 2 refresh (one master=
/ one slave)
-
- fts2 =3D Search.createFullTextSession( getSessionFactories()[1].openSess=
ion( ) );
- result =3D fts2.createFullTextQuery( parser.parse( "location:chennai" ) =
).list();
- assertEquals("Second copy did not work out", 1, result.size() );
-
- s1 =3D getSessionFactories()[0].openSession( );
+ session =3D getMasterSession();
+ tx =3D session.beginTransaction();
sn =3D new SnowStorm();
sn.setDate( new Date() );
- sn.setLocation( "Melbourne, Australia");
+ sn.setLocation( "Melbourne, Australia" );
+ session.persist( sn );
+ tx.commit();
+ session.close();
=
- s1.persist( sn );
- s1.flush(); //we don' commit so we need to flush manually
+ Thread.sleep( waitPeriodMilli ); //wait a bit more than 2 refresh (one m=
aster / one slave)
=
- fts2.close();
- s1.close();
+ // once more - assert that the new snowstorm made it into the slave
+ log.info( "Searching slave" );
+ fullTextSession =3D Search.createFullTextSession( getSlaveSession() );
+ tx =3D fullTextSession.beginTransaction();
+ result =3D fullTextSession.createFullTextQuery( parser.parse( "location:=
melbourne" ) ).list();
+ assertEquals( "Third copy did not work out", 1, result.size() );
+ tx.commit();
+ fullTextSession.close();
+ }
=
- Thread.sleep( waitPeroid ); //wait a bit more than 2 refresh (one master=
/ one slave)
+ private Session getMasterSession() {
+ return getSessionFactories()[0].openSession();
+ }
=
- fts2 =3D Search.createFullTextSession( getSessionFactories()[1].openSess=
ion( ) );
- result =3D fts2.createFullTextQuery( parser.parse( "location:melbourne" =
) ).list();
- assertEquals("Third copy did not work out", 1, result.size() );
-
- fts2.close();
+ private Session getSlaveSession() {
+ return getSessionFactories()[1].openSession();
}
=
-
protected void setUp() throws Exception {
- File base =3D new File(".");
- File root =3D new File(base, "lucenedirs");
- root.mkdir();
=
- File master =3D new File(root, "master/main");
- master.mkdirs();
- master =3D new File(root, "master/copy");
- master.mkdirs();
+ if ( root.exists() ) {
+ FileHelper.delete( root );
+ }
=
- File slave =3D new File(root, "slave");
- slave.mkdir();
+ if ( !root.mkdir() ) {
+ throw new HibernateException( "Unable to setup test directories" );
+ }
=
+ File master =3D new File( root, masterMain );
+ if ( !master.mkdirs() ) {
+ throw new HibernateException( "Unable to setup master directory" );
+ }
+
+ master =3D new File( root, masterCopy );
+ if ( !master.mkdirs() ) {
+ throw new HibernateException( "Unable to setup master copy directory" );
+ }
+
+ File slaveFile =3D new File( root, slave );
+ if ( !slaveFile.mkdirs() ) {
+ throw new HibernateException( "Unable to setup slave directory" );
+ }
super.setUp();
}
=
protected void tearDown() throws Exception {
super.tearDown();
- File base =3D new File(".");
- File root =3D new File(base, "lucenedirs");
+ log.info( "Deleting test directory {} ", root.getAbsolutePath() );
FileHelper.delete( root );
}
=
@@ -124,15 +197,19 @@
=
protected void configure(Configuration[] cfg) {
//master
- cfg[0].setProperty( "hibernate.search.default.sourceBase", "./lucenedirs=
/master/copy");
- cfg[0].setProperty( "hibernate.search.default.indexBase", "./lucenedirs/=
master/main");
- cfg[0].setProperty( "hibernate.search.default.refresh", "1"); //every mi=
nute
- cfg[0].setProperty( "hibernate.search.default.directory_provider", "org.=
hibernate.search.store.FSMasterDirectoryProvider");
+ cfg[0].setProperty( "hibernate.search.default.sourceBase", root.getAbsol=
utePath() + masterCopy );
+ cfg[0].setProperty( "hibernate.search.default.indexBase", root.getAbsolu=
tePath() + masterMain );
+ cfg[0].setProperty( "hibernate.search.default.refresh", "1" ); //every s=
econd
+ cfg[0].setProperty(
+ "hibernate.search.default.directory_provider", "org.hibernate.search.s=
tore.FSMasterDirectoryProvider"
+ );
=
//slave(s)
- cfg[1].setProperty( "hibernate.search.default.sourceBase", "./lucenedirs=
/master/copy");
- cfg[1].setProperty( "hibernate.search.default.indexBase", "./lucenedirs/=
slave");
- cfg[1].setProperty( "hibernate.search.default.refresh", "1"); //every mi=
nute
- cfg[1].setProperty( "hibernate.search.default.directory_provider", "org.=
hibernate.search.store.FSSlaveDirectoryProvider");
+ cfg[1].setProperty( "hibernate.search.default.sourceBase", root.getAbsol=
utePath() + masterCopy );
+ cfg[1].setProperty( "hibernate.search.default.indexBase", root.getAbsolu=
tePath() + slave );
+ cfg[1].setProperty( "hibernate.search.default.refresh", "1" ); //every s=
econd
+ cfg[1].setProperty(
+ "hibernate.search.default.directory_provider", "org.hibernate.search.s=
tore.FSSlaveDirectoryProvider"
+ );
}
}
--===============3824497571088004231==--
From hibernate-commits at lists.jboss.org Fri Sep 25 05:47:20 2009
Content-Type: multipart/mixed; boundary="===============4207362841656970987=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17542 -
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/directoryProvider.
Date: Fri, 25 Sep 2009 05:47:20 -0400
Message-ID: <200909250947.n8P9lKgU032234@svn01.web.mwc.hst.phx2.redhat.com>
--===============4207362841656970987==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: jcosta(a)redhat.com
Date: 2009-09-25 05:47:20 -0400 (Fri, 25 Sep 2009)
New Revision: 17542
Modified:
search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/di=
rectoryProvider/FSSlaveAndMasterDPTest.java
Log:
HSEARCH-401 - Removed logging from FSSlaveAndMasterDPTest, as slf4j is not =
available in the branch
Modified: search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/=
test/directoryProvider/FSSlaveAndMasterDPTest.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/d=
irectoryProvider/FSSlaveAndMasterDPTest.java 2009-09-25 09:18:24 UTC (rev 1=
7541)
+++ search/branches/Branch_3_0_1_GA_CP/src/test/org/hibernate/search/test/d=
irectoryProvider/FSSlaveAndMasterDPTest.java 2009-09-25 09:47:20 UTC (rev 1=
7542)
@@ -7,8 +7,6 @@
=
import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
=
import org.hibernate.Session;
import org.hibernate.Transaction;
@@ -26,8 +24,6 @@
*/
public class FSSlaveAndMasterDPTest extends MultipleSFTestCase {
=
- private static final Logger log =3D LoggerFactory.getLogger(FSSlaveAndMas=
terDPTest.class);
-
private static File root;
=
static {
@@ -36,7 +32,6 @@
buildDir =3D ".";
}
root =3D new File( buildDir, "lucenedirs" );
- log.info( "Using {} as test directory.", root.getAbsolutePath() );
}
=
/**
@@ -85,7 +80,6 @@
Thread.sleep( waitPeriodMilli );
=
// assert that the master hass indexed the snowstorm
- log.info( "Searching master" );
fullTextSession =3D Search.createFullTextSession( getMasterSession() );
tx =3D fullTextSession.beginTransaction();
result =3D fullTextSession.createFullTextQuery( parser.parse( "location:=
dallas" ) ).list();
@@ -94,7 +88,6 @@
fullTextSession.close();
=
// assert that index got copied to the salve as well
- log.info( "Searching slave" );
fullTextSession =3D Search.createFullTextSession( getSlaveSession() );
tx =3D fullTextSession.beginTransaction();
result =3D fullTextSession.createFullTextQuery( parser.parse( "location:=
dallas" ) ).list();
@@ -115,7 +108,6 @@
Thread.sleep( waitPeriodMilli ); //wait a bit more than 2 refresh (one m=
aster / one slave)
=
// assert that the new snowstorm made it into the slave
- log.info( "Searching slave" );
fullTextSession =3D Search.createFullTextSession( getSlaveSession() );
tx =3D fullTextSession.beginTransaction();
result =3D fullTextSession.createFullTextQuery( parser.parse( "location:=
chennai" ) ).list();
@@ -135,7 +127,6 @@
Thread.sleep( waitPeriodMilli ); //wait a bit more than 2 refresh (one m=
aster / one slave)
=
// once more - assert that the new snowstorm made it into the slave
- log.info( "Searching slave" );
fullTextSession =3D Search.createFullTextSession( getSlaveSession() );
tx =3D fullTextSession.beginTransaction();
result =3D fullTextSession.createFullTextQuery( parser.parse( "location:=
melbourne" ) ).list();
@@ -181,7 +172,6 @@
=
protected void tearDown() throws Exception {
super.tearDown();
- log.info( "Deleting test directory {} ", root.getAbsolutePath() );
FileHelper.delete( root );
}
=
--===============4207362841656970987==--
From hibernate-commits at lists.jboss.org Fri Sep 25 07:14:52 2009
Content-Type: multipart/mixed; boundary="===============2453132946625974134=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17543 -
core/trunk/entitymanager/src/main/java/org/hibernate/ejb.
Date: Fri, 25 Sep 2009 07:14:51 -0400
Message-ID: <200909251114.n8PBEpBR019313@svn01.web.mwc.hst.phx2.redhat.com>
--===============2453132946625974134==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: epbernard
Date: 2009-09-25 07:14:51 -0400 (Fri, 25 Sep 2009)
New Revision: 17543
Modified:
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/QueryImpl.java
Log:
HHH-4463 do not alter setMaxResult for native queries in getSingleResult() =
as the query transformation will likely fail.
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/QueryImp=
l.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/QueryImpl.java=
2009-09-25 09:47:20 UTC (rev 17542)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/QueryImpl.java=
2009-09-25 11:14:51 UTC (rev 17543)
@@ -51,6 +51,7 @@
import org.hibernate.HibernateException;
import org.hibernate.QueryParameterException;
import org.hibernate.TypeMismatchException;
+import org.hibernate.SQLQuery;
import org.hibernate.engine.query.NamedParameterDescriptor;
import org.hibernate.engine.query.OrdinalParameterDescriptor;
import org.hibernate.hql.QueryExecutionRequestException;
@@ -230,7 +231,9 @@
boolean mucked =3D false;
// IMPL NOTE : the mucking with max results here is attempting to help =
the user from shooting themselves
// in the foot in the case where they have a large query by limiting t=
he query results to 2 max
- if ( getSpecifiedMaxResults() !=3D 1 ) {
+ // SQLQuery cannot be safely paginated, leaving the user's choice he=
re.
+ if ( getSpecifiedMaxResults() !=3D 1 &&
+ ! ( SQLQuery.class.isAssignableFrom( query.getClass() ) ) ) {
mucked =3D true;
query.setMaxResults( 2 ); //avoid OOME if the list is huge
}
--===============2453132946625974134==--
From hibernate-commits at lists.jboss.org Fri Sep 25 09:10:21 2009
Content-Type: multipart/mixed; boundary="===============6385521033398654247=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17544 -
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/resolver.
Date: Fri, 25 Sep 2009 09:10:20 -0400
Message-ID: <200909251310.n8PDAKin011219@svn01.web.mwc.hst.phx2.redhat.com>
--===============6385521033398654247==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-25 09:10:20 -0400 (Fri, 25 Sep 2009)
New Revision: 17544
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/engine/resolver/JPATraversableResolver.java
Log:
Fixed a typo
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/v=
alidator/engine/resolver/JPATraversableResolver.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/engine/resolver/JPATraversableResolver.java 2009-09-25 11:14:51 UTC (rev=
17543)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/engine/resolver/JPATraversableResolver.java 2009-09-25 13:10:20 UTC (rev=
17544)
@@ -28,7 +28,7 @@
*/
public class JPATraversableResolver implements TraversableResolver {
=
- // TODO Check the call to PeristenceUtil. traversableProperty.getName() i=
s this correct?
+ // TODO Check the call to PersistenceUtil. traversableProperty.getName() =
is this correct?
public boolean isReachable(Object traversableObject, Path.Node traversabl=
eProperty, Class> rootBeanType, Path pathToTraversableObject, ElementType=
elementType) {
return traversableObject =3D=3D null ||
Persistence.getPersistenceUtil().isLoaded( traversableObject, traversa=
bleProperty.getName() );
--===============6385521033398654247==--
From hibernate-commits at lists.jboss.org Fri Sep 25 09:10:28 2009
Content-Type: multipart/mixed; boundary="===============3750603403961162420=="
MIME-Version: 1.0
From: Rory Etaaza
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] You're surrounded by gays!
Date: Fri, 25 Sep 2009 21:06:23 +0800
Message-ID: <2350XS.3172783E2.80206525669955ZFSTGIYIJHUNXJQ62@888tiger-5d8c46>
--===============3750603403961162420==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
--===============3750603403961162420==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPjxoZWFk
Pjx0aXRsZT5TZXB0ZW1iZXIgMjAwOSBFbmV3cyAtIFBhbGlzYWRlIENvcnBvcmF0aW9uPC90aXRs
ZT48L2hlYWQ+PGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiI+PGRpdiBhbGlnbj0iY2VudGVyIj4KJm5i
c3A7PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBz
YW5zLXNlcmlmOyBjb2xvcjogcmdiKDEwMiwxMDIsMTAyKTsgZm9udC1zaXplOiAxMXB4Ij5Zb3Ug
cmVjZWl2ZWQgdGhpcyBlbWFpbCBiZWNhdXNlIHlvdSBleHByZXNzZWQgYW4gaW50ZXJlc3QuCjxh
IHRhcmdldD0iX2JsYW5rIiB4dD0iU1BDTElDS1RPVklFVyIgc3R5bGU9ImNvbG9yOiByZ2IoMCwx
MDIsMTUzKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lIiBocmVmPSJodHRwOi8vZDBjLnh6ZXd1dG9z
LmNuLz9namd1Y3E9N2ViMzk3ODNlMmZkMDMwYTkzOGEmeHpub3p6ZnM9aGliZXJuYXRlLWNvbW1p
dHNAbGlzdHMuamJvc3Mub3JnJnluYW9saWlxYz00OTcyNjQ1MjkxOTgwMjA2NTI1NiIgbmFtZT0i
Q2xpY2sgdG8gdmlldyI+Q2xpY2sgaGVyZSB0byB2aWV3IG9ubGluZS48L2E+Cjwvc3Bhbj48L2Rp
dj48dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRo
PSI3MDAiIGJnY29sb3I9IiNmZmZmZmYiIGFsaWduPSJjZW50ZXIiPjx0cj4KPHRkIHZhbGlnbj0i
dG9wIj4KPGltZyBhbHQ9IiIgc3JjPSJodHRwOi8vZWY4OC54emV3dXRvcy5jbi9zcGFjZXIuZ2lm
Ij4mbmJzcDs8L3RkPjwvdHI+PHRyPgoJCQk8dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI0NzMiPjxw
IHN0eWxlPSJ3aWR0aDogNjkwcHgiPgoJCQk8c3BhbiBjbGFzcz0id2hhdHNuZXdiaWciIHN0eWxl
PSJsaW5lLWhlaWdodDogMjBweDsgZm9udC1mYW1pbHk6IHZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRp
Y2EsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoMTAyLDE1MywwKTsgZm9udC1zaXplOiAxOHB4Ij4K
CQkJR2V0dGluZyBhIHBvd2VyZnVsIJF3b29keZIgd2hlbiB5b3UgbmVlZCBpdCBhbmQgaHVtcCB5
b3UgYmFiZSBmb3IKCQkJaG91cnMhPC9zcGFuPjxzcGFuIGNsYXNzPSJiZCIgc3R5bGU9ImxpbmUt
aGVpZ2h0OiAxNXB4OyBmb250LWZhbWlseTogdmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fu
cy1zZXJpZjsgY29sb3I6IHJnYigxMDIsMTAyLDEwMik7IGZvbnQtc2l6ZTogMTFweCI+PGJyIC8+
CgkJCVRoaXMgaXMgaG93IG91ciBwcm9kdWN0cyB3b3JrLiBUaGUgbW9zdCB0aW1lLXByb3ZlbiBh
bmQgc2FmZQoJCQlzb2x1dGlvbnMgZnJvbSB0aGUgd29ybGQgb2YgbWFsZSBib29zdGluZy4gVHJ5
IGFuZCB5b3Ugd2lsbCBBbHdheXMKCQkJaGF2ZSBhIG1vb2QgdG8gZ2l2ZSB5b3VyIGxhZHkgbW9y
ZS4gPGI+PGEgaHJlZj0iaHR0cDovL2YzYmIzLnh6ZXd1dG9zLmNuLz9pcHlsZW11PTdlYjM5Nzgz
ZTJmZDAzMGE5MzhhJnh6bm96emZzPWhpYmVybmF0ZS1jb21taXRzQGxpc3RzLmpib3NzLm9yZyZ2
cXdpYmFmYW5pPTQ5NzI2NDUyOTE5ODAyMDY1MjU2Ij5EbyBpdAoJCQlub3c8L2E+PC9iPjwvc3Bh
bj48L3A+CgkJPGhyIHN0eWxlPSJsaW5lLWhlaWdodDogMTJweDsgdmVydGljYWwtYWxpZ246IHRv
cDsgY29sb3I6ICMyNzdEQTk7IGZvbnQtc2l6ZTogMTBweDsgZm9udC1mYW1pbHk6IFZlcmRhbmEs
IHNhbnMtc2VyaWY7IHdpZHRoOiA2NzVweCI+CgkJPHNwYW4gY2xhc3M9ImJkIiBzdHlsZT0ibGlu
ZS1oZWlnaHQ6IDE1cHg7IGZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBz
YW5zLXNlcmlmOyBjb2xvcjogcmdiKDEwMiwxMDIsMTAyKTsgZm9udC1zaXplOiAxMXB4IiAvPjwv
dGQ+PC90cj48dHI+CgkJCTx0ZCBoZWlnaHQ9IjE0MCIgdmFsaWduPSJ0b3AiPjxwIHN0eWxlPSJm
b250LWZhbWlseTogQXJpYWw7IGNvbG9yOiByZ2IoNjYsNjYsNjYpOyBmb250LXNpemU6IDExcHg7
IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQtZGVjb3JhdGlvbjogbm9uZSI+PHNwYW4gY2xhc3M9
Im1haW5iYXIiPgoJCQk8c3Bhbj5TaGFyZTogPC9zcGFuPiZuYnNwOzxhICB4dHNuPSJCQiIgIHN0
eWxlPSJmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiByZ2IoNjYsNjYsNjYpOyBmb250LXNpemU6
IDExcHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQtZGVjb3JhdGlvbjogbm9uZSIgaHJlZj0i
aHR0cDovL2VmODgueHpld3V0b3MuY24vP2pqdXJxY2V6PTdlYjM5NzgzZTJmZDAzMGE5MzhhJnh6
bm96emZzPWhpYmVybmF0ZS1jb21taXRzQGxpc3RzLmpib3NzLm9yZyZ5ZWd5eD00OTcyNjQ1Mjkx
OTgwMjA2NTI1NiIgbmFtZT0iQmVibyI+IEJlYm88L2E+CgkJCSZuYnNwOyZuYnNwOzxhICB4dHNu
PSJETCIgIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiByZ2IoNjYsNjYsNjYpOyBm
b250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQtZGVjb3JhdGlvbjogbm9u
ZSIgaHJlZj0iaHR0cDovL2VmODgueHpld3V0b3MuY24vP2J5Z3VkPTdlYjM5NzgzZTJmZDAzMGE5
MzhhJnh6bm96emZzPWhpYmVybmF0ZS1jb21taXRzQGxpc3RzLmpib3NzLm9yZyZzb2Npc2k9NDk3
MjY0NTI5MTk4MDIwNjUyNTYiIG5hbWU9IkRlbGljaW91cyI+RGVsaWNpb3VzPC9hPiZuYnNwOyZu
YnNwOyZuYnNwOwoJCQk8YSAgeHRzbj0iREciICBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsOyBj
b2xvcjogcmdiKDY2LDY2LDY2KTsgZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogbm9ybWFs
OyB0ZXh0LWRlY29yYXRpb246IG5vbmUiIGhyZWY9Imh0dHA6Ly9lZjg4Lnh6ZXd1dG9zLmNuLz9j
b3pxbXlqem89N2ViMzk3ODNlMmZkMDMwYTkzOGEmeHpub3p6ZnM9aGliZXJuYXRlLWNvbW1pdHNA
bGlzdHMuamJvc3Mub3JnJmVudXZveGlncXA9NDk3MjY0NTI5MTk4MDIwNjUyNTYiIG5hbWU9IkRp
Z2ciPkRpZ2c8L2E+CgkJCSZuYnNwOyZuYnNwOyZuYnNwOzxhICB4dHNuPSJGQiIgIHN0eWxlPSJm
b250LWZhbWlseTogQXJpYWw7IGNvbG9yOiByZ2IoNjYsNjYsNjYpOyBmb250LXNpemU6IDExcHg7
IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQtZGVjb3JhdGlvbjogbm9uZSIgaHJlZj0iaHR0cDov
L2VmODgueHpld3V0b3MuY24vP3JpbXVxdXpqYT03ZWIzOTc4M2UyZmQwMzBhOTM4YSZ4em5venpm
cz1oaWJlcm5hdGUtY29tbWl0c0BsaXN0cy5qYm9zcy5vcmcmanpqeWF6b2VmPTQ5NzI2NDUyOTE5
ODAyMDY1MjU2IiBuYW1lPSJGYWNlYm9vayI+RmFjZWJvb2s8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7
CgkJCTxhICB4dHNuPSJMSSIgIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiByZ2Io
NjYsNjYsNjYpOyBmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQtZGVj
b3JhdGlvbjogbm9uZSIgaHJlZj0iaHR0cDovL2VmODgueHpld3V0b3MuY24vP3FrdWlkdT03ZWIz
OTc4M2UyZmQwMzBhOTM4YSZ4em5venpmcz1oaWJlcm5hdGUtY29tbWl0c0BsaXN0cy5qYm9zcy5v
cmcmeWpweWN1cWpibz00OTcyNjQ1MjkxOTgwMjA2NTI1NiIgbmFtZT0iTGlua2VkSW4iPkxpbmtl
ZEluPC9hPiZuYnNwOyZuYnNwOwoJCQk8YSAgeHRzbj0iTVMiICBzdHlsZT0iZm9udC1mYW1pbHk6
IEFyaWFsOyBjb2xvcjogcmdiKDY2LDY2LDY2KTsgZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdo
dDogbm9ybWFsOyB0ZXh0LWRlY29yYXRpb246IG5vbmUiIGhyZWY9Imh0dHA6Ly9lZjg4Lnh6ZXd1
dG9zLmNuLz9xdGp2bz03ZWIzOTc4M2UyZmQwMzBhOTM4YSZ4em5venpmcz1oaWJlcm5hdGUtY29t
bWl0c0BsaXN0cy5qYm9zcy5vcmcmaWdxZG9jaXN5eD00OTcyNjQ1MjkxOTgwMjA2NTI1NiIgbmFt
ZT0iTXlTcGFjZSI+TXlTcGFjZTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsKCQkJPGEgIHh0c249IlJE
IiAgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsgY29sb3I6IHJnYig2Niw2Niw2Nik7IGZvbnQt
c2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgdGV4dC1kZWNvcmF0aW9uOiBub25lIiBo
cmVmPSJodHRwOi8vZWY4OC54emV3dXRvcy5jbi8/cm9kdWdvdmV1PTdlYjM5NzgzZTJmZDAzMGE5
MzhhJnh6bm96emZzPWhpYmVybmF0ZS1jb21taXRzQGxpc3RzLmpib3NzLm9yZyZ1ZWhvcz00OTcy
NjQ1MjkxOTgwMjA2NTI1NiIgbmFtZT0iUmVkZGl0Ij5SZWRkaXQ8L2E+Jm5ic3A7Jm5ic3A7Jm5i
c3A7CgkJCTxhICB4dHNuPSJUVyIgIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiBy
Z2IoNjYsNjYsNjYpOyBmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQt
ZGVjb3JhdGlvbjogbm9uZSIgaHJlZj0iaHR0cDovL2VmODgueHpld3V0b3MuY24vP2ZqZmFmZWQ9
N2ViMzk3ODNlMmZkMDMwYTkzOGEmeHpub3p6ZnM9aGliZXJuYXRlLWNvbW1pdHNAbGlzdHMuamJv
c3Mub3JnJnNqenVvdz00OTcyNjQ1MjkxOTgwMjA2NTI1NiIgbmFtZT0iVHdpdHRlciI+VHdpdHRl
cjwvYT48L3NwYW4+CgkJCTwvcD48cCBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjog
cmdiKDY2LDY2LDY2KTsgZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogbm9ybWFsOyB0ZXh0
LWRlY29yYXRpb246IG5vbmUiPjxzcGFuIGNsYXNzPSJiZCIgc3R5bGU9ImxpbmUtaGVpZ2h0OiAx
NXB4OyBmb250LWZhbWlseTogdmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg
Y29sb3I6IHJnYigxMDIsMTAyLDEwMik7IGZvbnQtc2l6ZTogMTFweCIgLz4KCQkJPHNwYW4gY2xh
c3M9ImJkIiBzdHlsZT0ibGluZS1oZWlnaHQ6IDE1cHg7IGZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBB
cmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDEwMiwxMDIsMTAyKTsgZm9u
dC1zaXplOiAxMXB4Ij4mY29weTsyMDA5IFBhbGlzYWRlIENvcnBvcmF0aW9uPC9zcGFuPjwvc3Bh
bj48L3A+CgkJCTxwIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiByZ2IoNjYsNjYs
NjYpOyBmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQtZGVjb3JhdGlv
bjogbm9uZSI+CgkJCTxzcGFuIGNsYXNzPSJiZCIgc3R5bGU9ImxpbmUtaGVpZ2h0OiAxNXB4OyBm
b250LWZhbWlseTogdmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6
IHJnYigxMDIsMTAyLDEwMik7IGZvbnQtc2l6ZTogMTFweCIgLz48YnIgLz4KCQkJPHNwYW4gY2xh
c3M9InNlbWluYXJzYmQiIHN0eWxlPSJsaW5lLWhlaWdodDogMTVweDsgZm9udC1mYW1pbHk6IHZl
cmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoMzksMTI1LDE2
OSk7IGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IGJvbGQiPlBhbGlzYWRlIExhdGlub2Ft
ZXJpY2E8L3NwYW4+PGJyIC8+Nzk4IENhc2NhZGlsbGEgU3RyZWV0LCBJdGhhY2EsIE5ZIDE0ODUw
IFVTQTxiciAvPjxiciAvPgoJCQk8c3BhbiBjbGFzcz0iYmQiIHN0eWxlPSJsaW5lLWhlaWdodDog
MTVweDsgZm9udC1mYW1pbHk6IHZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7
IGNvbG9yOiByZ2IoMTAyLDEwMiwxMDIpOyBmb250LXNpemU6IDExcHgiPjxhIHRhcmdldD0iIiAg
IHN0eWxlPSJjb2xvcjogcmdiKDEwMiwxMDIsMTAyKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lIiBo
cmVmPSJodHRwOi8vZWY4OC54emV3dXRvcy5jbi8/a29jZXhhdnFmYT03ZWIzOTc4M2UyZmQwMzBh
OTM4YSZ4em5venpmcz1oaWJlcm5hdGUtY29tbWl0c0BsaXN0cy5qYm9zcy5vcmcmdXh1a2F2aT00
OTcyNjQ1MjkxOTgwMjA2NTI1NiIgbmFtZT0iVW5zdWJzY3JpYmUiPlVOU1VCU0NSSUJFPC9hPiB8
CgkJCTxhIHRhcmdldD0iX2JsYW5rIiAgc3R5bGU9ImNvbG9yOiByZ2IoMTAyLDEwMiwxMDIpOyB0
ZXh0LWRlY29yYXRpb246IG5vbmUiIGhyZWY9Imh0dHA6Ly9lZjg4Lnh6ZXd1dG9zLmNuLz9weXpv
Y3Vob2Q9N2ViMzk3ODNlMmZkMDMwYTkzOGEmeHpub3p6ZnM9aGliZXJuYXRlLWNvbW1pdHNAbGlz
dHMuamJvc3Mub3JnJmRldHVqPTQ5NzI2NDUyOTE5ODAyMDY1MjU2IiBuYW1lPSJFbWFpbE9wdGlv
bnMiPkVtYWlsIE9wdGlvbnM8L2E+PC9zcGFuPjwvcD48L3RkPjwvdHI+PC90YWJsZT48cD4KCSZu
YnNwOzwvcD48L2JvZHk+PC9odG1sPgo=
--===============3750603403961162420==--
From hibernate-commits at lists.jboss.org Fri Sep 25 09:11:16 2009
Content-Type: multipart/mixed; boundary="===============4705634451716850867=="
MIME-Version: 1.0
From: hibernate-commits at lists.jboss.org
To: hibernate-commits at lists.jboss.org
Subject: [hibernate-commits] Hibernate SVN: r17545 - in
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator:
engine/resolver and 3 other directories.
Date: Fri, 25 Sep 2009 09:11:16 -0400
Message-ID: <200909251311.n8PDBGF5011572@svn01.web.mwc.hst.phx2.redhat.com>
--===============4705634451716850867==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: hardy.ferentschik
Date: 2009-09-25 09:11:16 -0400 (Fri, 25 Sep 2009)
New Revision: 17545
Added:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/engine/resolver/package.html
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/metadata/package.html
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/util/annotationfactory/package.html
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/xml/package.html
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validato=
r/constraints/impl/package.html
Log:
Added/Updated package.html files.
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/v=
alidator/constraints/impl/package.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/constraints/impl/package.html 2009-09-25 13:10:20 UTC (rev 17544)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validat=
or/constraints/impl/package.html 2009-09-25 13:11:16 UTC (rev 17545)
@@ -21,7 +21,7 @@
-->
-This package contains the implementations of the builtin constraints as we=
ll as Hibernate Validator specific
-constraint implementations.
+This package contains the implementations of the built-in as well as Hiber=
nate Validator specific
+constraints.