Sandbox-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
November 2010
- 5 participants
- 33 discussions
26 Nov '10
Author: fdesbois
Date: 2010-11-26 16:21:55 +0100 (Fri, 26 Nov 2010)
New Revision: 442
Url: http://nuiton.org/repositories/revision/sandbox/442
Log:
Keep useful debug logger (commented) to display criteria query as HQL
Modified:
jpa2-validation/trunk/jsr317-jpa2/src/test/resources/log4j.properties
Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/log4j.properties
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/resources/log4j.properties 2010-11-26 14:17:17 UTC (rev 441)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/resources/log4j.properties 2010-11-26 15:21:55 UTC (rev 442)
@@ -9,3 +9,4 @@
log4j.appender.A1.layout.ConversionPattern=%d [%p] (%c:%L) %m%n
log4j.logger.org.nuiton.sandbox.jsr317.jpa2=info
+#log4j.logger.org.hibernate.ejb.criteria=debug
1
0
26 Nov '10
Author: fdesbois
Date: 2010-11-26 15:17:17 +0100 (Fri, 26 Nov 2010)
New Revision: 441
Url: http://nuiton.org/repositories/revision/sandbox/441
Log:
Add test with metatemodel usage, error in hibernate 3.6 with ElementCollection
Added:
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Country.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CountryImpl.java
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/MetaModelTest.java
Modified:
jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml
jpa2-validation/trunk/jsr317-jpa2/pom.xml
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java
jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml
jpa2-validation/trunk/pom.xml
Modified: jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml 2010-11-26 14:17:17 UTC (rev 441)
@@ -5,6 +5,7 @@
<persistence-unit name="jsr303-test" transaction-type="RESOURCE_LOCAL">
<class>org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl</class>
+ <class>org.nuiton.sandbox.jsr317.jpa2.entity.CountryImpl</class>
<!--<validation-mode>NONE</validation-mode>-->
</persistence-unit>
Modified: jpa2-validation/trunk/jsr317-jpa2/pom.xml
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/pom.xml 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/jsr317-jpa2/pom.xml 2010-11-26 14:17:17 UTC (rev 441)
@@ -2,217 +2,189 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
- <!-- ************************************************************* -->
- <!-- *** POM Relationships *************************************** -->
- <!-- ************************************************************* -->
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
- <parent>
- <groupId>org.nuiton.sandbox</groupId>
- <artifactId>jsr-tests</artifactId>
- <version>0.1-SNAPSHOT</version>
- </parent>
+ <parent>
+ <groupId>org.nuiton.sandbox</groupId>
+ <artifactId>jsr-tests</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ </parent>
- <artifactId>jsr317-jpa2</artifactId>
+ <artifactId>jsr317-jpa2</artifactId>
- <dependencies>
+ <dependencies>
- <!--<dependency>-->
- <!--<groupId>org.nuiton</groupId>-->
- <!--<artifactId>nuiton-utils</artifactId>-->
- <!--<version>1.4.2</version>-->
- <!--</dependency>-->
+ <!--<dependency>-->
+ <!--<groupId>org.nuiton</groupId>-->
+ <!--<artifactId>nuiton-utils</artifactId>-->
+ <!--<version>1.4.2</version>-->
+ <!--</dependency>-->
- <!-- SPRING -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- </dependency>
+ <!-- SPRING -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ </dependency>
- <!-- JPA : JSR-317- -->
- <dependency>
- <groupId>org.hibernate.javax.persistence</groupId>
- <artifactId>hibernate-jpa-2.0-api</artifactId>
- </dependency>
+ <!-- JPA : JSR-317- -->
+ <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-jpamodelgen</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-jpamodelgen</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ </dependency>
- <!-- LOGGING -->
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
-
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
+ <!-- LOGGING -->
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
- <!-- TESTS -->
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
- <!-- Hibernate implementation used for tests -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- </dependency>
+ <!-- TESTS -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
+ <!-- Hibernate implementation used for tests -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
- <!-- Testing -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- </dependency>
+ <!-- Testing -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
- </dependencies>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ </dependency>
- <!-- ************************************************************* -->
- <!-- *** Project Information ************************************* -->
- <!-- ************************************************************* -->
+ </dependencies>
- <name>JSR Tests :: JSR-317 JPA2</name>
- <description>JPA2 tests</description>
- <inceptionYear>2010</inceptionYear>
- <url>http://maven-site.nuiton.org/${project.artifactId}</url>
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
- <!-- ************************************************************* -->
- <!-- *** Build Settings ****************************************** -->
- <!-- ************************************************************* -->
+ <name>JSR Tests :: JSR-317 JPA2</name>
+ <description>JPA2 tests</description>
+ <inceptionYear>2010</inceptionYear>
+ <url>http://maven-site.nuiton.org/${project.artifactId}</url>
- <packaging>jar</packaging>
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
- <build>
+ <packaging>jar</packaging>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <includes>
- <include>**/*</include>
- </includes>
- <filtering>true</filtering>
- </resource>
- </resources>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
- <!-- Configuration to generate metamodel : ref = http://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single… -->
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <!--<compilerArguments>-->
- <!--<!– Generate Jpa MetaModel –>-->
- <!--<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>-->
- <!--</compilerArguments>-->
- <compilerArgument>-proc:none</compilerArgument>
- </configuration>
- </plugin>
+ <!-- Configuration to generate metamodel : ref = http://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single… -->
+ <plugins>
- <plugin>
- <groupId>org.bsc.maven</groupId>
- <artifactId>maven-processor-plugin</artifactId>
- <executions>
- <execution>
- <id>process</id>
- <goals>
- <goal>process</goal>
- </goals>
- <phase>generate-sources</phase>
- <configuration>
- <compilerArguments>-Adebug=TRUE</compilerArguments>
- <!-- source output directory -->
- <outputDirectory>${maven.gen.dir}/java</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <compilerArgument>-proc:none</compilerArgument>
+ </configuration>
+ </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>${maven.gen.dir}/java</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
+ <plugin>
+ <groupId>org.bsc.maven</groupId>
+ <artifactId>maven-processor-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>process</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>process</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
- </plugins>
+ </plugins>
- </build>
+ </build>
- <!-- Source control management. -->
- <scm>
- <connection>
- scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2
- </connection>
- <developerConnection>
- scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2
- </developerConnection>
- <url>
- http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk/jsr…
- </url>
- </scm>
+ <!-- Source control management. -->
+ <scm>
+ <connection>
+ scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2
+ </connection>
+ <developerConnection>
+ scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2
+ </developerConnection>
+ <url>
+ http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk/jsr…
+ </url>
+ </scm>
</project>
Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java 2010-11-26 14:17:17 UTC (rev 441)
@@ -64,11 +64,11 @@
/**
* @return the country
*/
- public String getCountry();
+ public Country getCountry();
/**
* @param country the country to set
*/
- public void setCountry(String country);
+ public void setCountry(Country country);
}
Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java 2010-11-26 14:17:17 UTC (rev 441)
@@ -1,9 +1,10 @@
/**
- *
+ *
*/
package org.nuiton.sandbox.jsr317.jpa2.entity;
import javax.persistence.Embeddable;
+import javax.persistence.ManyToOne;
/**
* @author fdesbois <fdesbois(a)codelutin.com>
@@ -11,118 +12,119 @@
*/
@Embeddable
public class AddressImpl implements Address {
-
- public static final long serialVersionUID = 1L;
-
- /**
- * the street
- */
- private String street;
-
- /**
- * the street complement
- */
- private String street2;
-
- /**
- * the zip code
- */
- private String zipCode;
-
- /**
- * the town
- */
- private String town;
-
- /**
- * the country
- */
- private String country;
-
- /**
- * Default constructor: constructs an empty address
- */
- public AddressImpl(){
- }
- /**
- * @return the street
- */
- @Override
- public String getStreet() {
- return street;
- }
+ public static final long serialVersionUID = 1L;
- /**
- * @param street the street to set
- */
- @Override
- public void setStreet(String street) {
- this.street = street;
- }
+ /**
+ * the street
+ */
+ private String street;
- /**
- * @return the street2
- */
- @Override
- public String getStreet2() {
- return street2;
- }
+ /**
+ * the street complement
+ */
+ private String street2;
- /**
- * @param street2 the street2 to set
- */
- @Override
- public void setStreet2(String street2) {
- this.street2 = street2;
- }
+ /**
+ * the zip code
+ */
+ private String zipCode;
- /**
- * @return the zipCode
- */
- @Override
- public String getZipCode() {
- return zipCode;
- }
+ /**
+ * the town
+ */
+ private String town;
- /**
- * @param zipCode the zipCode to set
- */
- @Override
- public void setZipCode(String zipCode) {
- this.zipCode = zipCode;
- }
+ /**
+ * the country
+ */
+ private Country country;
- /**
- * @return the town
- */
- @Override
- public String getTown() {
- return town;
- }
+ /**
+ * Default constructor: constructs an empty address
+ */
+ public AddressImpl() {
+ }
- /**
- * @param town the town to set
- */
- @Override
- public void setTown(String town) {
- this.town = town;
- }
+ /**
+ * @return the street
+ */
+ @Override
+ public String getStreet() {
+ return street;
+ }
- /**
- * @return the country
- */
- @Override
- public String getCountry() {
- return country;
- }
+ /**
+ * @param street the street to set
+ */
+ @Override
+ public void setStreet(String street) {
+ this.street = street;
+ }
- /**
- * @param country the country to set
- */
- @Override
- public void setCountry(String country) {
- this.country = country;
- }
+ /**
+ * @return the street2
+ */
+ @Override
+ public String getStreet2() {
+ return street2;
+ }
+ /**
+ * @param street2 the street2 to set
+ */
+ @Override
+ public void setStreet2(String street2) {
+ this.street2 = street2;
+ }
+
+ /**
+ * @return the zipCode
+ */
+ @Override
+ public String getZipCode() {
+ return zipCode;
+ }
+
+ /**
+ * @param zipCode the zipCode to set
+ */
+ @Override
+ public void setZipCode(String zipCode) {
+ this.zipCode = zipCode;
+ }
+
+ /**
+ * @return the town
+ */
+ @Override
+ public String getTown() {
+ return town;
+ }
+
+ /**
+ * @param town the town to set
+ */
+ @Override
+ public void setTown(String town) {
+ this.town = town;
+ }
+
+ /**
+ * @return the country
+ */
+ @Override
+ @ManyToOne(targetEntity = CountryImpl.class)
+ public Country getCountry() {
+ return country;
+ }
+
+ /**
+ * @param country the country to set
+ */
+ @Override
+ public void setCountry(Country country) {
+ this.country = country;
+ }
+
}
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Country.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Country.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Country.java 2010-11-26 14:17:17 UTC (rev 441)
@@ -0,0 +1,18 @@
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+/**
+ * Created on 26 nov. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+public interface Country extends BaseEntity {
+
+ String getCode();
+
+ void setCode(String code);
+
+ String getName();
+
+ void setName(String name);
+}
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CountryImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CountryImpl.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CountryImpl.java 2010-11-26 14:17:17 UTC (rev 441)
@@ -0,0 +1,43 @@
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+/**
+ * Created on 26 nov. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+@Entity
+@Table(name = CountryImpl.TABLE_NAME)
+public class CountryImpl extends BaseEntityImpl implements Country {
+
+ public static final long serialVersionUID = 1L;
+
+ public static final String TABLE_NAME = "COUNTRY";
+
+ private String code;
+
+ private String name;
+
+ @Override
+ public String getCode() {
+ return code;
+ }
+
+ @Override
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+}
Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java 2010-11-26 14:17:17 UTC (rev 441)
@@ -1,8 +1,10 @@
/**
- *
+ *
*/
package org.nuiton.sandbox.jsr317.jpa2.entity;
+import java.util.List;
+
/**
* @author fdesbois <fdesbois(a)codelutin.com>
* @version $Id$
@@ -23,73 +25,73 @@
String PROPERTY_ACCESS_CODE = "accessCode";
- /**
- * @return the firstName
- */
- public String getFirstName() ;
+ /**
+ * @return the firstName
+ */
+ String getFirstName();
- /**
- * @param firstName the firstName to set
- */
- public void setFirstName(String firstName);
+ /**
+ * @param firstName the firstName to set
+ */
+ void setFirstName(String firstName);
- /**
- * @return the lastName
- */
- public String getLastName();
+ /**
+ * @return the lastName
+ */
+ String getLastName();
- /**
- * @param lastName the lastName to set
- */
- public void setLastName(String lastName);
+ /**
+ * @param lastName the lastName to set
+ */
+ void setLastName(String lastName);
- /**
- * @return the address
- */
- public Address getAddress();
+ /**
+ * @return the addresses
+ */
+ List<Address> getAddresses();
- /**
- * @param address the address to set
- */
- public void setAddress(Address address);
+ /**
+ * @param addresses the addresses to set
+ */
+ void setAddresses(List<Address> addresses);
- /**
- * @return the phone
- */
- public String getPhone() ;
+ /**
+ * @return the phone
+ */
+ String getPhone();
- /**
- * @param phone the phone to set
- */
- public void setPhone(String phone) ;
-
- /**
- * @return the cellphone
- */
- public String getCellphone() ;
+ /**
+ * @param phone the phone to set
+ */
+ void setPhone(String phone);
- /**
- * @param cellphone the cellphone to set
- */
- public void setCellphone(String cellphone) ;
+ /**
+ * @return the cellphone
+ */
+ String getCellphone();
- /**
- * @return the email
- */
- public String getEmail();
+ /**
+ * @param cellphone the cellphone to set
+ */
+ void setCellphone(String cellphone);
- /**
- * @param email the email to set
- */
- public void setEmail(String email) ;
+ /**
+ * @return the email
+ */
+ String getEmail();
- /**
- * @return the accessCode
- */
- public AccessCode getAccessCode();
+ /**
+ * @param email the email to set
+ */
+ void setEmail(String email);
- /**
- * @param accessCode the accessCode to set
- */
- public void setAccessCode(AccessCode accessCode) ;
+ /**
+ * @return the accessCode
+ */
+ AccessCode getAccessCode();
+
+ /**
+ * @param accessCode the accessCode to set
+ */
+ void setAccessCode(AccessCode accessCode);
}
Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java 2010-11-26 14:17:17 UTC (rev 441)
@@ -3,9 +3,13 @@
*/
package org.nuiton.sandbox.jsr317.jpa2.entity;
+import javax.persistence.CollectionTable;
+import javax.persistence.ElementCollection;
import javax.persistence.Embedded;
import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
import javax.persistence.Table;
+import java.util.List;
import org.nuiton.sandbox.jsr317.jpa2.config.JpaHelper;
@@ -14,11 +18,17 @@
* @version $Id$
*/
@Entity
-@Table(name = "CUSTOMER")
+@Table(name = CustomerImpl.TABLE_NAME)
public class CustomerImpl extends BaseEntityImpl implements Customer {
public static final long serialVersionUID = 1L;
+ public static final String TABLE_NAME = "CUSTOMER";
+
+ public static final String FOREIGN_KEY_COLUMN_NAME = "customer_id";
+
+ public static final String CUSTOMER_ADDRESS_TABLE_NAME = "CUSTOMER_ADDRESS";
+
/**
* the firstName
*/
@@ -32,7 +42,7 @@
/**
* the address
*/
- private Address address;
+ private List<Address> addresses;
/**
* the phone number
@@ -95,18 +105,21 @@
/**
* @return the address
*/
- @Embedded
@Override
- public AddressImpl getAddress() {
- return JpaHelper.safeEmbeddableCast(address, AddressImpl.class);
+ @ElementCollection(targetClass = AddressImpl.class)
+ @CollectionTable(name = CUSTOMER_ADDRESS_TABLE_NAME, joinColumns =
+ @JoinColumn(name = FOREIGN_KEY_COLUMN_NAME, referencedColumnName = PROPERTY_ID)
+ )
+ public List<Address> getAddresses() {
+ return addresses;
}
/**
- * @param address the address to set
+ * @param addresses the address to set
*/
@Override
- public void setAddress(Address address) {
- this.address = address;
+ public void setAddresses(List<Address> addresses) {
+ this.addresses = addresses;
}
/**
Added: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/MetaModelTest.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/MetaModelTest.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/MetaModelTest.java 2010-11-26 14:17:17 UTC (rev 441)
@@ -0,0 +1,26 @@
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.sandbox.jsr317.jpa2.test.BaseTest;
+
+/**
+ * Created on 26 nov. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+public class MetaModelTest extends BaseTest {
+
+ @Test
+ public void testEmbeddableSingularAttribute() {
+
+ Assert.assertNotNull(AccessCodeImpl_.login);
+ Assert.assertNotNull(AccessCodeImpl_.password);
+
+ // Broken with Hibernate 3.6 and MetamodelGenerator 1.1
+ Assert.assertNotNull(AddressImpl_.town);
+ Assert.assertNotNull(AddressImpl_.country);
+ }
+
+}
Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java 2010-11-26 14:17:17 UTC (rev 441)
@@ -1,9 +1,11 @@
package org.nuiton.sandbox.jsr317.jpa2.persistence;
import javax.persistence.PersistenceException;
+import java.util.Arrays;
import org.junit.Assert;
import org.junit.Test;
+import org.junit.matchers.JUnitMatchers;
import org.nuiton.sandbox.jsr317.jpa2.config.JpaHelper;
import org.nuiton.sandbox.jsr317.jpa2.entity.Address;
import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
@@ -36,10 +38,11 @@
address.setStreet("createStreet");
address.setZipCode("40000");
- user.setAddress(address);
+ user.setAddresses(Arrays.asList(address));
- Assert.assertNotNull(user.getAddress());
- Assert.assertEquals("createStreet", user.getAddress().getStreet());
+ Assert.assertNotNull(user.getAddresses());
+ Assert.assertThat(user.getAddresses(), JUnitMatchers.hasItem(address));
+ Assert.assertEquals("createStreet", user.getAddresses().get(0).getStreet());
}
/**
@@ -59,7 +62,7 @@
address.setStreet("fakeStreet");
address.setZipCode("40000");
- user.setAddress(address);
+ user.setAddresses(Arrays.asList(address));
userDAO.save(user);
}
Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java 2010-11-26 14:17:17 UTC (rev 441)
@@ -2,6 +2,7 @@
import org.nuiton.sandbox.jsr317.jpa2.config.JpaHelper;
import org.nuiton.sandbox.jsr317.jpa2.entity.Address;
+import org.nuiton.sandbox.jsr317.jpa2.entity.Country;
/**
* Fake implementation of address to test Embeddable target management (need explicit cast provided by {@link
@@ -51,11 +52,11 @@
}
@Override
- public String getCountry() {
+ public Country getCountry() {
return null;
}
@Override
- public void setCountry(String country) {
+ public void setCountry(Country country) {
}
}
Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml 2010-11-26 14:17:17 UTC (rev 441)
@@ -5,6 +5,7 @@
<persistence-unit name="jsr317-test" transaction-type="RESOURCE_LOCAL">
<class>org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl</class>
+ <class>org.nuiton.sandbox.jsr317.jpa2.entity.CountryImpl</class>
</persistence-unit>
</persistence>
\ No newline at end of file
Modified: jpa2-validation/trunk/pom.xml
===================================================================
--- jpa2-validation/trunk/pom.xml 2010-11-22 14:13:30 UTC (rev 440)
+++ jpa2-validation/trunk/pom.xml 2010-11-26 14:17:17 UTC (rev 441)
@@ -81,7 +81,7 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
- <version>${jpa2ApiVersion}</version>
+ <version>${hibernateMetamodelGeneratorVersion}</version>
<scope>provided</scope>
</dependency>
@@ -173,13 +173,14 @@
<properties>
<!-- Dependencies versions -->
- <springVersion>3.0.4.RELEASE</springVersion>
+ <springVersion>3.0.5.RELEASE</springVersion>
<jpa2ApiVersion>1.0.0.Final</jpa2ApiVersion>
<validationApiVersion>1.0.0.GA</validationApiVersion>
<!-- For test only : Hibernate implementation for JSR used -->
- <hibernateVersion>3.5.6-Final</hibernateVersion>
- <hibernateValidatorVersion>4.0.2.GA</hibernateValidatorVersion>
+ <hibernateVersion>3.6.0.Final</hibernateVersion>
+ <hibernateValidatorVersion>4.1.0.Final</hibernateValidatorVersion>
+ <hibernateMetamodelGeneratorVersion>1.1.0.Final</hibernateMetamodelGeneratorVersion>
<slf4jVersion>1.6.1</slf4jVersion>
</properties>
@@ -194,17 +195,19 @@
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>1.3.7</version>
- </plugin>
+ <configuration>
+ <!-- source output directory -->
+ <outputDirectory>${maven.gen.dir}/annotations</outputDirectory>
+ </configuration>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.3</version>
- </plugin>
+ <!--<dependencies>-->
+ <!--<dependency>-->
+ <!--<groupId>org.hibernate</groupId>-->
+ <!--<artifactId>hibernate-jpamodelgen</artifactId>-->
+ <!--<version>${hibernateMetamodelGeneratorVersion}</version>-->
+ <!--</dependency>-->
+ <!--</dependencies>-->
- <plugin>
- <artifactId>maven-invoker-plugin</artifactId>
- <version>1.5</version>
</plugin>
</plugins>
1
0
r440 - in jpa2-validation/trunk/jsr303-validation/src: it/hibernate it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate it/hibernate/src/main/resources it/hibernate/src/main/resources/META-INF main/java/org/nuiton/sandbox/jsr303/validation/services
by fdesbois@users.nuiton.org 22 Nov '10
by fdesbois@users.nuiton.org 22 Nov '10
22 Nov '10
Author: fdesbois
Date: 2010-11-22 15:13:30 +0100 (Mon, 22 Nov 2010)
New Revision: 440
Url: http://nuiton.org/repositories/revision/sandbox/440
Log:
- Repair compilation issues
- Add missing configuration for transactionManager
- Use properties file for configuration options
Added:
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/application.properties
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/hibernate-spring-context.xml
Removed:
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/spring/
Modified:
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/pom.xml
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/persistence.xml
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BaseService.java
Modified: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/pom.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/pom.xml 2010-11-22 11:16:07 UTC (rev 439)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/pom.xml 2010-11-22 14:13:30 UTC (rev 440)
@@ -17,17 +17,17 @@
<dependencies>
- <!--<dependency>-->
- <!--<groupId>${project.groupId}</groupId>-->
- <!--<artifactId>tivimmo-services</artifactId>-->
- <!--<version>${project.version}</version>-->
- <!--</dependency>-->
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>jsr317-jpa2</artifactId>
+ <version>${project.version}</version>
+ </dependency>
- <!--<dependency>-->
- <!--<groupId>${project.groupId}</groupId>-->
- <!--<artifactId>tivimmo-model</artifactId>-->
- <!--<version>${project.version}</version>-->
- <!--</dependency>-->
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>jsr303-validation</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.springframework</groupId>
@@ -56,36 +56,48 @@
<artifactId>commons-logging</artifactId>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>compile</scope>
+ </dependency>
+
<!-- RUNTIME scope for implementations -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <scope>runtime</scope>
+ <scope>compile</scope>
</dependency>
<!-- Hibernate implementation used in tests -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
- <scope>runtime</scope>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
- <scope>runtime</scope>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <scope>runtime</scope>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- <scope>runtime</scope>
+ <scope>compile</scope>
</dependency>
<!--<dependency>-->
Modified: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java 2010-11-22 11:16:07 UTC (rev 439)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java 2010-11-22 14:13:30 UTC (rev 440)
@@ -36,10 +36,13 @@
Customer customerOk = serviceCustomer.newCustomer();
customerOk.setFirstName("FIRST_NAME");
- customerOk.setFirstName("LAST_NAME");
+ customerOk.setLastName("LAST_NAME");
serviceCustomer.saveCustomer(customerOk);
+ // Check number of customer in safe transaction
+ logger.info("CountCustomers = " + countCustomers(customerDAO));
+
Customer customerKo = serviceCustomer.newCustomer();
// Will throw an ConstraintViolationException and rollback, but first agency is still in database
@@ -51,13 +54,13 @@
logger.info("ConstraintViolationException", ex);
} finally {
- // Check number of agency in safe transaction
+ // Check number of customer in safe transaction
logger.info("CountCustomers = " + countCustomers(customerDAO));
}
}
@Transactional
- protected static int countCustomers(CustomerDAO customerDAO) {
+ public int countCustomers(CustomerDAO customerDAO) {
return customerDAO.count();
}
Modified: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/persistence.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/persistence.xml 2010-11-22 11:16:07 UTC (rev 439)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/persistence.xml 2010-11-22 14:13:30 UTC (rev 440)
@@ -3,7 +3,7 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
- <persistence-unit name="tivimmo" transaction-type="RESOURCE_LOCAL">
+ <persistence-unit name="jsr317" transaction-type="RESOURCE_LOCAL">
<class>org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl</class>
<!--<validation-mode>NONE</validation-mode>-->
</persistence-unit>
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/application.properties
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/application.properties (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/application.properties 2010-11-22 14:13:30 UTC (rev 440)
@@ -0,0 +1,15 @@
+# JDBC configuration
+jdbc.url=jdbc:h2:file:./target/surefire-data/hibernate
+jdbc.username=sa
+jdbc.password=
+
+# Dialect to use
+database.dialect=org.hibernate.dialect.H2Dialect
+option.showSql=true
+option.generateDdl=true
+
+# Option to generate the schema
+option.hbm2ddl.auto=create
+# Option to genate unique ids in all database (@GeneratedValue)
+option.id.new_generator_mappings=true
+
\ No newline at end of file
Copied: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/hibernate-spring-context.xml (from rev 436, jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/spring/hibernate-spring-context.xml)
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/hibernate-spring-context.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/hibernate-spring-context.xml 2010-11-22 14:13:30 UTC (rev 440)
@@ -0,0 +1,55 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
+
+ <!-- SERVICES CONFIGURATION -->
+ <import resource="classpath:/jsr303-spring-context.xml"/>
+
+ <!-- MODEL INJECTION and JPA CONFIGURATION -->
+ <import resource="classpath:/jsr317-spring-context.xml"/>
+
+ <!-- Read properties file to inject properties using ${} -->
+ <context:property-placeholder location="application.properties"/>
+
+ <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <property name="url" value="${jdbc.url}"/>
+ <property name="username" value="${jdbc.username}"/>
+ <property name="password" value="${jdbc.password}"/>
+ </bean>
+
+ <!-- Activate transactionManager using @Transactional annotations -->
+ <tx:annotation-driven transaction-manager="transactionManager"/>
+
+ <bean id="transactionManager"
+ class="org.springframework.orm.jpa.JpaTransactionManager">
+ <property name="entityManagerFactory" ref="entityManagerFactory"/>
+ </bean>
+
+ <bean id="entityManagerFactory"
+ class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+ <property name="dataSource" ref="dataSource"/>
+ <property name="jpaVendorAdapter">
+ <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
+ <property name="showSql" value="${option.showSql}"/>
+ <property name="generateDdl" value="${option.generateDdl}"/>
+ <property name="databasePlatform" value="${database.dialect}"/>
+ </bean>
+ </property>
+ <property name="jpaProperties">
+ <props>
+ <prop key="hibernate.hbm2ddl.auto">${option.hbm2ddl.auto}</prop>
+ <!-- IdGenerator Strategy : one unique number for each row for all database -->
+ <prop key="hibernate.id.new_generator_mappings">${option.id.new_generator_mappings}</prop>
+ </props>
+ </property>
+ <property name="loadTimeWeaver">
+ <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
+ </property>
+ </bean>
+
+</beans>
\ No newline at end of file
Modified: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BaseService.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BaseService.java 2010-11-22 11:16:07 UTC (rev 439)
+++ jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BaseService.java 2010-11-22 14:13:30 UTC (rev 440)
@@ -32,15 +32,15 @@
if (!errors.isEmpty()) {
- if (logger.isTraceEnabled()) {
+ if (logger.isDebugEnabled()) {
for (ConstraintViolation<T> constraint : errors) {
- logger.trace("constraint.getMessageTemplate = " + constraint.getMessageTemplate());
- logger.trace("constraint.getMessage = " + constraint.getMessage());
- logger.trace("constraint.getInvalidValue = " + constraint.getInvalidValue());
- logger.trace("constraint.getLeafBean = " + constraint.getLeafBean());
- logger.trace("constraint.getPropertyPath = " + constraint.getPropertyPath());
- logger.trace("constraint.getRootBean = " + constraint.getRootBean());
- logger.trace("constraint.getRootBeanClass = " + constraint.getRootBeanClass());
+ logger.debug("constraint.getMessageTemplate = " + constraint.getMessageTemplate());
+ logger.debug("constraint.getMessage = " + constraint.getMessage());
+ logger.debug("constraint.getInvalidValue = " + constraint.getInvalidValue());
+ logger.debug("constraint.getLeafBean = " + constraint.getLeafBean());
+ logger.debug("constraint.getPropertyPath = " + constraint.getPropertyPath());
+ logger.debug("constraint.getRootBean = " + constraint.getRootBean());
+ logger.debug("constraint.getRootBeanClass = " + constraint.getRootBeanClass());
}
}
1
0
r439 - jpa2-validation/trunk/jsr303-validation/src/it/hibernate
by tchemit@users.nuiton.org 22 Nov '10
by tchemit@users.nuiton.org 22 Nov '10
22 Nov '10
Author: tchemit
Date: 2010-11-22 12:16:07 +0100 (Mon, 22 Nov 2010)
New Revision: 439
Url: http://nuiton.org/repositories/revision/sandbox/439
Log:
make it works
Added:
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/LICENSE.txt
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/README.txt
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/changelog.txt
Modified:
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/invoker.properties
Property changes on: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/LICENSE.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Property changes on: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/README.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Property changes on: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/changelog.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/invoker.properties
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/invoker.properties 2010-11-22 11:06:39 UTC (rev 438)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/invoker.properties 2010-11-22 11:16:07 UTC (rev 439)
@@ -1,7 +1,7 @@
# A comma or space separated list of goals/phases to execute, may
# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean exec:java -Dexec.mainClass="org.nuiton.sandbox.jsr303.validation.hibernate.Launcher"
+invoker.goals=clean compile exec:java -Dexec.mainClass="org.nuiton.sandbox.jsr303.validation.hibernate.Launcher"
# Optionally, a list of goals to run during further invocations of Maven
#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
1
0
r438 - in jpa2-validation/trunk/jsr303-validation: . src/it src/it/hibernate
by fdesbois@users.nuiton.org 22 Nov '10
by fdesbois@users.nuiton.org 22 Nov '10
22 Nov '10
Author: fdesbois
Date: 2010-11-22 12:06:39 +0100 (Mon, 22 Nov 2010)
New Revision: 438
Url: http://nuiton.org/repositories/revision/sandbox/438
Log:
Resolve it issues
Added:
jpa2-validation/trunk/jsr303-validation/src/it/settings.xml
Removed:
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/settings.xml
Modified:
jpa2-validation/trunk/jsr303-validation/pom.xml
Modified: jpa2-validation/trunk/jsr303-validation/pom.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/pom.xml 2010-11-22 10:57:39 UTC (rev 437)
+++ jpa2-validation/trunk/jsr303-validation/pom.xml 2010-11-22 11:06:39 UTC (rev 438)
@@ -153,6 +153,7 @@
</property>
</activation>
<build>
+ <defaultGoal>verify</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-invoker-plugin</artifactId>
Deleted: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/settings.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/settings.xml 2010-11-22 10:57:39 UTC (rev 437)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/settings.xml 2010-11-22 11:06:39 UTC (rev 438)
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<settings>
-
- <profiles>
- <profile>
- <id>it-repo</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
-
- <!--<mirrors>-->
- <!--<mirror>-->
- <!--<id>internal-proxy</id>-->
- <!--<name>internal proxy</name>-->
- <!--<url>http://maven.lan.wiztivi.com/repository/central-proxy</url>-->
- <!--<mirrorOf>central</mirrorOf>-->
- <!--</mirror>-->
- <!--</mirrors>-->
-
- <repositories>
- <repository>
- <id>local.central</id>
- <url>file:///@localRepository@</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
-
- <!-- depot des releases nuiton -->
- <!--<repository>-->
- <!--<id>nuiton.release</id>-->
- <!--<name>NuitonReleaseRepository</name>-->
- <!--<url>http://maven.nuiton.org/release</url>-->
- <!--<snapshots>-->
- <!--<enabled>false</enabled>-->
- <!--</snapshots>-->
- <!--<releases>-->
- <!--<enabled>true</enabled>-->
- <!--<checksumPolicy>warn</checksumPolicy>-->
- <!--</releases>-->
- <!--</repository>-->
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>local.central</id>
- <url>file:///@localRepository@</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
-
- <!--<pluginRepository>-->
- <!--<id>nuiton.release</id>-->
- <!--<name>NuitonReleaseRepository</name>-->
- <!--<url>http://maven.nuiton.org/release</url>-->
- <!--<snapshots>-->
- <!--<enabled>false</enabled>-->
- <!--</snapshots>-->
- <!--<releases>-->
- <!--<enabled>true</enabled>-->
- <!--</releases>-->
- <!--</pluginRepository>-->
- </pluginRepositories>
- </profile>
- </profiles>
-</settings>
Copied: jpa2-validation/trunk/jsr303-validation/src/it/settings.xml (from rev 436, jpa2-validation/trunk/jsr303-validation/src/it/hibernate/settings.xml)
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/settings.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/settings.xml 2010-11-22 11:06:39 UTC (rev 438)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<settings>
+
+ <profiles>
+ <profile>
+ <id>it-repo</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+
+ <!--<mirrors>-->
+ <!--<mirror>-->
+ <!--<id>internal-proxy</id>-->
+ <!--<name>internal proxy</name>-->
+ <!--<url>http://maven.lan.wiztivi.com/repository/central-proxy</url>-->
+ <!--<mirrorOf>central</mirrorOf>-->
+ <!--</mirror>-->
+ <!--</mirrors>-->
+
+ <repositories>
+ <repository>
+ <id>local.central</id>
+ <url>file:///@localRepository@</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+
+ <!-- depot des releases nuiton -->
+ <!--<repository>-->
+ <!--<id>nuiton.release</id>-->
+ <!--<name>NuitonReleaseRepository</name>-->
+ <!--<url>http://maven.nuiton.org/release</url>-->
+ <!--<snapshots>-->
+ <!--<enabled>false</enabled>-->
+ <!--</snapshots>-->
+ <!--<releases>-->
+ <!--<enabled>true</enabled>-->
+ <!--<checksumPolicy>warn</checksumPolicy>-->
+ <!--</releases>-->
+ <!--</repository>-->
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>local.central</id>
+ <url>file:///@localRepository@</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+
+ <!--<pluginRepository>-->
+ <!--<id>nuiton.release</id>-->
+ <!--<name>NuitonReleaseRepository</name>-->
+ <!--<url>http://maven.nuiton.org/release</url>-->
+ <!--<snapshots>-->
+ <!--<enabled>false</enabled>-->
+ <!--</snapshots>-->
+ <!--<releases>-->
+ <!--<enabled>true</enabled>-->
+ <!--</releases>-->
+ <!--</pluginRepository>-->
+ </pluginRepositories>
+ </profile>
+ </profiles>
+</settings>
1
0
Author: fdesbois
Date: 2010-11-22 11:57:39 +0100 (Mon, 22 Nov 2010)
New Revision: 437
Url: http://nuiton.org/repositories/revision/sandbox/437
Log:
Missing declaring plugin versions
Modified:
jpa2-validation/trunk/pom.xml
Modified: jpa2-validation/trunk/pom.xml
===================================================================
--- jpa2-validation/trunk/pom.xml 2010-11-22 10:36:05 UTC (rev 436)
+++ jpa2-validation/trunk/pom.xml 2010-11-22 10:57:39 UTC (rev 437)
@@ -191,6 +191,18 @@
<plugins>
<plugin>
+ <groupId>org.bsc.maven</groupId>
+ <artifactId>maven-processor-plugin</artifactId>
+ <version>1.3.7</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.3</version>
+ </plugin>
+
+ <plugin>
<artifactId>maven-invoker-plugin</artifactId>
<version>1.5</version>
</plugin>
1
0
Author: fdesbois
Date: 2010-11-22 11:36:05 +0100 (Mon, 22 Nov 2010)
New Revision: 436
Url: http://nuiton.org/repositories/revision/sandbox/436
Log:
- Add basic example for validation
- Add unworking it test using hibernate implementation...
Added:
jpa2-validation/trunk/jsr303-validation/src/
jpa2-validation/trunk/jsr303-validation/src/it/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/invoker.properties
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/pom.xml
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/settings.xml
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/Launcher.java
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/persistence.xml
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/validation.xml
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/log4j.properties
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/spring/
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/spring/hibernate-spring-context.xml
jpa2-validation/trunk/jsr303-validation/src/it/hibernate/verify.groovy
jpa2-validation/trunk/jsr303-validation/src/main/
jpa2-validation/trunk/jsr303-validation/src/main/java/
jpa2-validation/trunk/jsr303-validation/src/main/java/org/
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/Email.java
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/ValidationConstants.java
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BaseService.java
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomer.java
jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImpl.java
jpa2-validation/trunk/jsr303-validation/src/main/resources/
jpa2-validation/trunk/jsr303-validation/src/main/resources/jsr303-spring-context.xml
jpa2-validation/trunk/jsr303-validation/src/main/resources/org/
jpa2-validation/trunk/jsr303-validation/src/main/resources/org/nuiton/
jpa2-validation/trunk/jsr303-validation/src/main/resources/org/nuiton/sandbox/
jpa2-validation/trunk/jsr303-validation/src/main/resources/org/nuiton/sandbox/jsr303/
jpa2-validation/trunk/jsr303-validation/src/main/resources/org/nuiton/sandbox/jsr303/validation/
jpa2-validation/trunk/jsr303-validation/src/main/resources/org/nuiton/sandbox/jsr303/validation/constraints-customer.xml
jpa2-validation/trunk/jsr303-validation/src/test/
jpa2-validation/trunk/jsr303-validation/src/test/java/
jpa2-validation/trunk/jsr303-validation/src/test/java/org/
jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/
jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/
jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/
jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/
jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/CustomerValidationTest.java
jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/test/
jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/test/BaseTest.java
jpa2-validation/trunk/jsr303-validation/src/test/resources/
jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/
jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml
jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/validation.xml
jpa2-validation/trunk/jsr303-validation/src/test/resources/log4j.properties
jpa2-validation/trunk/jsr303-validation/src/test/resources/test-spring-context.xml
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaConfig.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaConfigSource.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaHelper.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/UpdateTechnicalFieldListener.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/ModelContext.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/ModelContextImpl.java
Removed:
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfig.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfigSource.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaHelper.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/UpdateTechnicalFieldListener.java
Modified:
jpa2-validation/trunk/jsr303-validation/
jpa2-validation/trunk/jsr303-validation/pom.xml
jpa2-validation/trunk/jsr317-jpa2/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntityImpl.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/JpaConfigTestSource.java
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/SpringTestConfig.java
jpa2-validation/trunk/pom.xml
Property changes on: jpa2-validation/trunk/jsr303-validation
___________________________________________________________________
Modified: svn:ignore
- *.iml
+ *.iml
target
Modified: jpa2-validation/trunk/jsr303-validation/pom.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/pom.xml 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr303-validation/pom.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -17,10 +18,99 @@
<dependencies>
<dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>jsr317-jpa2</artifactId>
+ <version>${project.version}</version>
</dependency>
+ <!-- SPRING -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ </dependency>
+
+ <!-- COMMONS -->
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-utils</artifactId>
+ </dependency>
+
+ <!-- JPA : JSR-317- -->
+ <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ </dependency>
+
+ <!-- Bean Validation : JSR-303 -->
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ </dependency>
+
+ <!-- LOGGING -->
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+
+ <!-- TESTS -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
+
+ <!-- Hibernate implementation used in tests -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ </dependency>
+
+
</dependencies>
<!-- ************************************************************* -->
@@ -31,13 +121,13 @@
<description>Validation tests</description>
<inceptionYear>2010</inceptionYear>
<url>http://maven-site.nuiton.org/${project.artifactId}</url>
-
+
<!-- ************************************************************* -->
<!-- *** Build Settings ****************************************** -->
<!-- ************************************************************* -->
<packaging>jar</packaging>
-
+
<build>
<resources>
@@ -52,12 +142,55 @@
</build>
+ <profiles>
+
+ <profile>
+ <id>run-its</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <configuration>
+ <pomIncludes>
+ <pomInclude>hibernate/pom.xml</pomInclude>
+ </pomIncludes>
+ <postBuildHookScript>verify</postBuildHookScript>
+ <localRepositoryPath>${basedir}/target/local-repo
+ </localRepositoryPath>
+ <settingsFile>src/it/settings.xml</settingsFile>
+ <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo>
+ <debug>${maven.verbose}</debug>
+ </configuration>
+ <executions>
+ <execution>
+ <id>integration-test</id>
+ <goals>
+ <goal>install</goal>
+ <goal>run</goal>
+ </goals>
+ <phase>integration-test</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ </profiles>
+
<!-- Source control management. -->
<scm>
<connection>scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr303-vali…</connection>
- <developerConnection>scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr303-vali…</developerConnection>
+ <developerConnection>scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr303-vali…
+ </developerConnection>
<url>http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk/jsr…</url>
</scm>
-
+
</project>
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/invoker.properties
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/invoker.properties (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/invoker.properties 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,22 @@
+
+# A comma or space separated list of goals/phases to execute, may
+# specify an empty list to execute the default goal of the IT project
+invoker.goals=clean exec:java -Dexec.mainClass="org.nuiton.sandbox.jsr303.validation.hibernate.Launcher"
+
+# Optionally, a list of goals to run during further invocations of Maven
+#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
+
+# A comma or space separated list of profiles to activate
+#invoker.profiles=run-all run-once
+
+# The value for the environment variable MAVEN_OPTS
+#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
+
+# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
+invoker.failureBehavior=fail-fast
+
+# The expected result of the build, possible values are "success" (default) and "failure"
+#invoker.buildResult=success
+
+# A boolean value controlling the -N flag, defaults to "false"
+#invoker.nonRecursive=false
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/pom.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/pom.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/pom.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,103 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.nuiton.sandbox</groupId>
+ <artifactId>jsr-tests</artifactId>
+ <version>@pom.version@</version>
+ </parent>
+
+ <artifactId>hibernate-test</artifactId>
+
+ <packaging>jar</packaging>
+ <name>jpa2-validation :: hibernate implementation</name>
+ <description>Tests using Hibernate as JPA implementation</description>
+
+ <dependencies>
+
+ <!--<dependency>-->
+ <!--<groupId>${project.groupId}</groupId>-->
+ <!--<artifactId>tivimmo-services</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>${project.groupId}</groupId>-->
+ <!--<artifactId>tivimmo-model</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--</dependency>-->
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ </dependency>
+
+ <!-- Bean Validation : JSR-303 -->
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ </dependency>
+
+ <!-- LOGGING -->
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+
+ <!-- RUNTIME scope for implementations -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- Hibernate implementation used in tests -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!--<dependency>-->
+ <!--<groupId>junit</groupId>-->
+ <!--<artifactId>junit</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.springframework</groupId>-->
+ <!--<artifactId>spring-test</artifactId>-->
+ <!--</dependency>-->
+
+ </dependencies>
+
+</project>
\ No newline at end of file
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/settings.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/settings.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/settings.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<settings>
+
+ <profiles>
+ <profile>
+ <id>it-repo</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+
+ <!--<mirrors>-->
+ <!--<mirror>-->
+ <!--<id>internal-proxy</id>-->
+ <!--<name>internal proxy</name>-->
+ <!--<url>http://maven.lan.wiztivi.com/repository/central-proxy</url>-->
+ <!--<mirrorOf>central</mirrorOf>-->
+ <!--</mirror>-->
+ <!--</mirrors>-->
+
+ <repositories>
+ <repository>
+ <id>local.central</id>
+ <url>file:///@localRepository@</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+
+ <!-- depot des releases nuiton -->
+ <!--<repository>-->
+ <!--<id>nuiton.release</id>-->
+ <!--<name>NuitonReleaseRepository</name>-->
+ <!--<url>http://maven.nuiton.org/release</url>-->
+ <!--<snapshots>-->
+ <!--<enabled>false</enabled>-->
+ <!--</snapshots>-->
+ <!--<releases>-->
+ <!--<enabled>true</enabled>-->
+ <!--<checksumPolicy>warn</checksumPolicy>-->
+ <!--</releases>-->
+ <!--</repository>-->
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>local.central</id>
+ <url>file:///@localRepository@</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+
+ <!--<pluginRepository>-->
+ <!--<id>nuiton.release</id>-->
+ <!--<name>NuitonReleaseRepository</name>-->
+ <!--<url>http://maven.nuiton.org/release</url>-->
+ <!--<snapshots>-->
+ <!--<enabled>false</enabled>-->
+ <!--</snapshots>-->
+ <!--<releases>-->
+ <!--<enabled>true</enabled>-->
+ <!--</releases>-->
+ <!--</pluginRepository>-->
+ </pluginRepositories>
+ </profile>
+ </profiles>
+</settings>
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/Launcher.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/Launcher.java (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/Launcher.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,36 @@
+package org.nuiton.sandbox.jsr303.validation.hibernate;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ * Created on 19 nov. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+public class Launcher {
+
+ private static final Log logger = LogFactory.getLog(Launcher.class);
+
+ public static void main(String[] args) {
+ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/hibernate-spring-context.xml");
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("> > > ApplicationContext loaded");
+ }
+
+ TransactionTest transactionTest = new TransactionTest(applicationContext);
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("> > > Execute TransactionTest");
+ }
+
+ transactionTest.executeAll();
+
+ }
+
+
+}
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,64 @@
+package org.nuiton.sandbox.jsr303.validation.hibernate;
+
+import javax.validation.ConstraintViolationException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.sandbox.jsr303.validation.services.ServiceCustomer;
+import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.CustomerDAO;
+import org.springframework.context.ApplicationContext;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Created on 19 nov. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+public class TransactionTest {
+
+ private static final Log logger = LogFactory.getLog(TransactionTest.class);
+
+ protected ApplicationContext context;
+
+ public TransactionTest(ApplicationContext context) {
+ this.context = context;
+ }
+
+ public void executeAll() {
+ testSaveAgency();
+ }
+
+ public void testSaveAgency() {
+ ServiceCustomer serviceCustomer = context.getBean(ServiceCustomer.class);
+ CustomerDAO customerDAO = context.getBean(CustomerDAO.class);
+
+ Customer customerOk = serviceCustomer.newCustomer();
+ customerOk.setFirstName("FIRST_NAME");
+ customerOk.setFirstName("LAST_NAME");
+
+ serviceCustomer.saveCustomer(customerOk);
+
+ Customer customerKo = serviceCustomer.newCustomer();
+
+ // Will throw an ConstraintViolationException and rollback, but first agency is still in database
+ try {
+ serviceCustomer.saveCustomer(customerKo);
+ throw new Error("FAILED ConstraintViolationException is expected");
+ } catch (ConstraintViolationException ex) {
+
+ logger.info("ConstraintViolationException", ex);
+
+ } finally {
+ // Check number of agency in safe transaction
+ logger.info("CountCustomers = " + countCustomers(customerDAO));
+ }
+ }
+
+ @Transactional
+ protected static int countCustomers(CustomerDAO customerDAO) {
+ return customerDAO.count();
+ }
+
+}
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/persistence.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/persistence.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/persistence.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,11 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+ version="2.0">
+
+ <persistence-unit name="tivimmo" transaction-type="RESOURCE_LOCAL">
+ <class>org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl</class>
+ <!--<validation-mode>NONE</validation-mode>-->
+ </persistence-unit>
+
+</persistence>
\ No newline at end of file
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/validation.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/validation.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/META-INF/validation.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,7 @@
+<validation-config xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration http://jboss.org/xml/ns/javax/validation/configuration/validation-configura…">
+
+ <constraint-mapping>/org/nuiton/sandbox/jsr303/validation/constraints-customer.xml</constraint-mapping>
+
+</validation-config>
\ No newline at end of file
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/log4j.properties
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/log4j.properties (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/log4j.properties 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,12 @@
+# Default to info level output; this is very handy if you eventually use Hibernate as well.
+log4j.rootCategory=warn, A1
+
+# A1 is set to be a ConsoleAppender.
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%d [%p] (%c:%L) %m%n
+
+log4j.logger.org.nuiton.sandbox=debug
+log4j.logger.org.hibernate=info
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/spring/hibernate-spring-context.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/spring/hibernate-spring-context.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/resources/spring/hibernate-spring-context.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,48 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+
+ <!-- SERVICES CONFIGURATION -->
+ <import resource="classpath:/jsr303-spring-context.xml"/>
+
+ <!-- MODEL INJECTION and JPA CONFIGURATION -->
+ <import resource="classpath:/jsr317-spring-context.xml"/>
+
+ <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <property name="url"
+ value="jdbc:h2:file:./target/surefire-data/hibernate"/>
+ <property name="username" value="sa"/>
+ <property name="password" value=""/>
+ </bean>
+
+ <bean id="transactionManager"
+ class="org.springframework.orm.jpa.JpaTransactionManager">
+ <property name="entityManagerFactory" ref="entityManagerFactory"/>
+ </bean>
+
+ <bean id="entityManagerFactory"
+ class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+ <property name="dataSource" ref="dataSource"/>
+ <property name="jpaVendorAdapter">
+ <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
+ <property name="showSql" value="true"/>
+ <property name="generateDdl" value="true"/>
+ <property name="databasePlatform" value="org.hibernate.dialect.H2Dialect"/>
+ </bean>
+ </property>
+ <property name="jpaProperties">
+ <props>
+ <prop key="hibernate.hbm2ddl.auto">create</prop>
+ <!-- IdGenerator Strategy : one unique number for each row for all database -->
+ <prop key="hibernate.id.new_generator_mappings">true</prop>
+ </props>
+ </property>
+ <property name="loadTimeWeaver">
+ <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
+ </property>
+ </bean>
+
+</beans>
\ No newline at end of file
Added: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/verify.groovy
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/verify.groovy (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/verify.groovy 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,2 @@
+return true;
+
Added: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/Email.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/Email.java (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/Email.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,38 @@
+package org.nuiton.sandbox.jsr303.validation;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import javax.validation.ReportAsSingleViolation;
+import javax.validation.constraints.Pattern;
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Email constraint for bean com.wiztivi.apps.tivimmo.validation. Use this annotation to check email elements. This
+ * constraint use a regex {@link Pattern} defined by {@link ValidationConstants#PATTERN_EMAIL}. This constraint is also
+ * declared as {@link ReportAsSingleViolation} to retrieve only principle custom message defined by {@link #message()}
+ * method instead of pattern default one. An other solution could be to override message param directly in Pattern
+ * annotation but in this case, user would not be able to override the Email annotation message.
+ * <p/>
+ * Created on 25 oct. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id: Email.java 46947 2010-10-25 16:01:51Z fdesbois $
+ */
+@Pattern(regexp = ValidationConstants.PATTERN_EMAIL)
+(a)Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
+(a)Retention(RetentionPolicy.RUNTIME)
+@Constraint(validatedBy = {})
+@Documented
+@ReportAsSingleViolation
+public @interface Email {
+
+ String message() default "{com.wiztivi.apps.tivimmo.validation.email}";
+
+ Class<?>[] groups() default {};
+
+ Class<? extends Payload>[] payload() default {};
+}
Added: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/ValidationConstants.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/ValidationConstants.java (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/ValidationConstants.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,13 @@
+package org.nuiton.sandbox.jsr303.validation;
+
+/**
+ * Created on 27 oct. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+public class ValidationConstants {
+
+ public static final String PATTERN_EMAIL =
+ "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*(a)[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
+}
Added: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BaseService.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BaseService.java (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BaseService.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,51 @@
+package org.nuiton.sandbox.jsr303.validation.services;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.ConstraintViolationException;
+import javax.validation.Validator;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.ModelContext;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Created on 28 oct. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id: BaseService.java 48517 2010-11-16 09:58:27Z fdesbois $
+ */
+public abstract class BaseService {
+
+ protected final Log logger = LogFactory.getLog(getClass());
+
+ @Autowired
+ protected ModelContext modelContext;
+
+ @Autowired
+ protected Validator validator;
+
+ protected <T> void checkConstraints(T object, Class<?>... groups) throws ConstraintViolationException {
+ Set<ConstraintViolation<T>> errors = validator.validate(object, groups);
+
+ if (!errors.isEmpty()) {
+
+ if (logger.isTraceEnabled()) {
+ for (ConstraintViolation<T> constraint : errors) {
+ logger.trace("constraint.getMessageTemplate = " + constraint.getMessageTemplate());
+ logger.trace("constraint.getMessage = " + constraint.getMessage());
+ logger.trace("constraint.getInvalidValue = " + constraint.getInvalidValue());
+ logger.trace("constraint.getLeafBean = " + constraint.getLeafBean());
+ logger.trace("constraint.getPropertyPath = " + constraint.getPropertyPath());
+ logger.trace("constraint.getRootBean = " + constraint.getRootBean());
+ logger.trace("constraint.getRootBeanClass = " + constraint.getRootBeanClass());
+ }
+ }
+
+ throw new ConstraintViolationException(new HashSet<ConstraintViolation<?>>(errors));
+ }
+ }
+
+}
Added: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomer.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomer.java (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomer.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,18 @@
+package org.nuiton.sandbox.jsr303.validation.services;
+
+import javax.validation.ConstraintViolationException;
+
+import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
+
+/**
+ * Created on 22 nov. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+public interface ServiceCustomer {
+
+ void saveCustomer(Customer customer) throws ConstraintViolationException;
+
+ Customer newCustomer();
+}
Added: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImpl.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImpl.java (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImpl.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,38 @@
+package org.nuiton.sandbox.jsr303.validation.services;
+
+import javax.validation.ConstraintViolationException;
+
+import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.CustomerDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Created on 22 nov. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+@Service
+@Transactional(readOnly = true)
+public class ServiceCustomerImpl extends BaseService implements ServiceCustomer {
+
+ @Autowired
+ protected CustomerDAO customerDAO;
+
+ @Override
+ @Transactional(readOnly = false)
+ public void saveCustomer(Customer customer) throws ConstraintViolationException {
+
+ checkConstraints(customer);
+
+ customerDAO.save(customer);
+ }
+
+ @Override
+ public Customer newCustomer() {
+ return customerDAO.newInstance();
+ }
+
+}
Added: jpa2-validation/trunk/jsr303-validation/src/main/resources/jsr303-spring-context.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/main/resources/jsr303-spring-context.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/main/resources/jsr303-spring-context.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,15 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+
+
+ <!-- Component scanner for Services : detected from @Service annotation -->
+ <context:component-scan base-package="org.nuiton.sandbox.jsr303.validation.services"/>
+
+ <!-- VALIDATION INJECTION -->
+ <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
+
+</beans>
\ No newline at end of file
Added: jpa2-validation/trunk/jsr303-validation/src/main/resources/org/nuiton/sandbox/jsr303/validation/constraints-customer.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/main/resources/org/nuiton/sandbox/jsr303/validation/constraints-customer.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/main/resources/org/nuiton/sandbox/jsr303/validation/constraints-customer.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,19 @@
+<constraint-mappings xmlns="http://jboss.org/xml/ns/javax/validation/mapping"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping http://jboss.org/xml/ns/javax/validation/mapping/validation-mapping-1.0.xsd">
+
+ <default-package>org.nuiton.sandbox.jsr317.jpa2.entity</default-package>
+
+ <bean class="Customer" ignore-annotations="true">
+ <getter name="firstName">
+ <constraint annotation="javax.validation.constraints.NotNull"/>
+ </getter>
+ <getter name="lastName">
+ <constraint annotation="javax.validation.constraints.NotNull"/>
+ </getter>
+ <getter name="email">
+ <constraint annotation="org.nuiton.sandbox.jsr303.validation.Email"/>
+ </getter>
+ </bean>
+
+</constraint-mappings>
\ No newline at end of file
Added: jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/CustomerValidationTest.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/CustomerValidationTest.java (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/CustomerValidationTest.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,122 @@
+package org.nuiton.sandbox.jsr303.validation;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.ConstraintViolationException;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.sandbox.jsr303.validation.test.BaseTest;
+import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.CustomerDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Created on 27 oct. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id: CustomerValidationTest.java 48934 2010-11-18 16:17:46Z fdesbois $
+ */
+public class CustomerValidationTest extends BaseTest {
+
+ private static final Log log = LogFactory.getLog(CustomerValidationTest.class);
+
+ @Autowired
+ protected CustomerDAO userDAO;
+
+ @Test
+ @Transactional
+ public void testCreateCustomerNeedFields() {
+
+ // ---- PREPARE DATA ---- //
+ Customer user = userDAO.newInstance();
+
+ // Create user without setting any field will throw a ConstraintViolationException. FirstName and LastName are needed
+ try {
+ // ---- EXECUTE ---- //
+ userDAO.save(user);
+ Assert.fail();
+ } catch (ConstraintViolationException ex) {
+
+ // ---- CHECK DATA ---- //
+ Set<ConstraintViolation<?>> errors = ex.getConstraintViolations();
+ Assert.assertEquals(2, errors.size());
+ }
+ }
+
+ @Test
+ @Transactional
+ public void testCreateCustomerValidEmail() {
+
+ // ---- PREPARE DATA ---- //
+ Customer user = userDAO.newInstance();
+ user.setLastName("createCustomerValidEmailLastName");
+ user.setFirstName("createCustomerValidEmailFirstName");
+
+ user.setEmail("validEmail(a)domain.fr");
+
+ Assert.assertTrue(Pattern.matches(ValidationConstants.PATTERN_EMAIL, user.getEmail()));
+
+ // ---- EXECUTE ---- //
+ log.info("test 1 : create user with correct email");
+ userDAO.create(user);
+
+ user.setEmail("invalidEmail");
+
+ Assert.assertFalse(Pattern.matches(ValidationConstants.PATTERN_EMAIL, user.getEmail()));
+
+ try {
+ log.info("test 2 : update the same user with fake email : throw ConstraintViolationException");
+ user = userDAO.update(user);
+ Assert.fail();
+
+ } catch (ConstraintViolationException ex) {
+ // ---- CHECK DATA ---- //
+ Set<ConstraintViolation<?>> errors = ex.getConstraintViolations();
+ Assert.assertEquals(1, errors.size());
+
+ ConstraintViolation<?> error = errors.iterator().next();
+
+ // Ensure retrieving custom constraint Email and not the one from Hibernate. Depends on configuration
+ if (error instanceof Email) {
+ Assert.assertEquals("{com.wiztivi.apps.tivimmo.validation.email}", error.getMessageTemplate());
+ }
+ Assert.assertEquals(user, error.getRootBean());
+ }
+ }
+
+ @Test
+ @Transactional
+ public void testManualValidation() {
+
+ // ---- PREPARE DATA ---- //
+ Customer user = userDAO.newInstance();
+ user.setLastName("manualValidationLastName");
+ user.setFirstName("manualValidationFirstName");
+ user.setEmail("manualValidation(a)email.fr");
+
+ // ---- EXECUTE ---- //
+
+ log.info("test 1 : manual validation : nothing wrong");
+ try {
+ validator.validate(user);
+ } catch (ConstraintViolationException ex) {
+ Assert.fail();
+ }
+
+ user.setEmail("fakeEmail");
+ // Set null will normally throw Constraint exception but in this test we will only validate the email property
+ user.setFirstName(null);
+
+ log.info("test 2 : manual validation only on email property : throw ConstraintViolationException");
+ try {
+ validator.validateProperty(user, "email");
+ } catch (ConstraintViolationException ex) {
+ Assert.assertEquals(1, ex.getConstraintViolations().size());
+ }
+ }
+}
Added: jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/test/BaseTest.java
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/test/BaseTest.java (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/test/BaseTest.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,115 @@
+package org.nuiton.sandbox.jsr303.validation.test;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.ConstraintViolationException;
+import javax.validation.Validator;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.rules.TestName;
+import org.junit.runner.RunWith;
+import org.junit.runners.model.FrameworkMethod;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.BaseDAOImpl.SaveStrategy;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.ModelContext;
+import org.nuiton.sandbox.jsr317.jpa2.sample.DataSampleProvider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+/**
+ * Created on 26 oct. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id: BaseTest.java 48934 2010-11-18 16:17:46Z fdesbois $
+ */
+(a)RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = {"/test-spring-context.xml"})
+public abstract class BaseTest {
+
+ private static final Log logger = LogFactory.getLog(BaseTest.class);
+
+ @Autowired
+ protected ModelContext modelContext;
+
+ @Autowired
+ protected DataSampleProvider dataProvider;
+
+ @Autowired
+ protected Validator validator;
+
+ @Rule
+ public TestName rule = new TestName() {
+
+ @Override
+ public void starting(FrameworkMethod method) {
+ super.starting(method);
+
+ // Apply persist flush saveStrategy for all tests, this will effectively keep instance in session and flush
+ // it after each {@link BaseDAO#save()} call
+ modelContext.setSaveStrategy(SaveStrategy.PERSIST_FLUSH);
+
+ // Use DataProvider depends on annotation declaration in tests
+// useDataProvider(method.getAnnotation(UseDataProvider.class));
+ }
+
+// protected void useDataProvider(UseDataProvider useDataProvider) {
+// boolean useData = DataSampleProvider.isUseDataProviderFromMethod(BaseTest.this.getClass(), useDataProvider);
+//
+// if (useData) {
+// try {
+// dataProvider.createAllData();
+// } catch (ConstraintViolationException ex) {
+// logger.error(ex);
+// if (logger.isInfoEnabled()) {
+// for (ConstraintViolation<?> constraint : ex.getConstraintViolations()) {
+// logger.info("constraint.getRootBeanClass = " + constraint.getRootBeanClass());
+// logger.info("constraint.getPropertyPath = " + constraint.getPropertyPath());
+// logger.info("constraint.getMessageTemplate = " + constraint.getMessageTemplate());
+// logger.info("constraint.getInvalidValue = " + constraint.getInvalidValue());
+// }
+// }
+// throw new TivimmoRuntimeException("Error while creating all data", ex);
+// } catch (Exception ex) {
+// logger.error(ex.getClass().getSimpleName(), ex);
+// throw new TivimmoRuntimeException("Error while creating all data", ex);
+// }
+// }
+// }
+ };
+
+ protected interface ConstraintChecker {
+
+ void execute();
+ }
+
+ protected void assertConstraintViolationException(ConstraintChecker checker, String field, Class<?> annotationClass) {
+
+ try {
+ checker.execute();
+ Assert.fail();
+
+ } catch (ConstraintViolationException ex) {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Expected error", ex);
+ }
+
+ ConstraintViolation<?> constraint = ex.getConstraintViolations().iterator().next();
+ Assert.assertEquals(field, constraint.getPropertyPath().toString());
+ Assert.assertTrue(constraint.getMessageTemplate().contains(annotationClass.getSimpleName()));
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("constraint.getMessageTemplate = " + constraint.getMessageTemplate());
+ logger.debug("constraint.getMessage = " + constraint.getMessage());
+ logger.debug("constraint.getInvalidValue = " + constraint.getInvalidValue());
+ logger.debug("constraint.getLeafBean = " + constraint.getLeafBean());
+ logger.debug("constraint.getPropertyPath = " + constraint.getPropertyPath());
+ logger.debug("constraint.getRootBean = " + constraint.getRootBean());
+ logger.debug("constraint.getRootBeanClass = " + constraint.getRootBeanClass());
+ }
+
+ }
+ }
+}
Added: jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/persistence.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,11 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+ version="2.0">
+
+ <persistence-unit name="jsr303-test" transaction-type="RESOURCE_LOCAL">
+ <class>org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl</class>
+ <!--<validation-mode>NONE</validation-mode>-->
+ </persistence-unit>
+
+</persistence>
\ No newline at end of file
Added: jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/validation.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/validation.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/test/resources/META-INF/validation.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,7 @@
+<validation-config xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration http://jboss.org/xml/ns/javax/validation/configuration/validation-configura…">
+
+ <constraint-mapping>/org/nuiton/sandbox/jsr303/validation/constraints-customer.xml</constraint-mapping>
+
+</validation-config>
\ No newline at end of file
Added: jpa2-validation/trunk/jsr303-validation/src/test/resources/log4j.properties
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/test/resources/log4j.properties (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/test/resources/log4j.properties 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,12 @@
+# Default to info level output; this is very handy if you eventually use Hibernate as well.
+log4j.rootCategory=warn, A1
+
+# A1 is set to be a ConsoleAppender.
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%d [%p] (%c:%L) %m%n
+
+log4j.logger.org.nuiton.sandbox=debug
+log4j.logger.org.hibernate=info
Added: jpa2-validation/trunk/jsr303-validation/src/test/resources/test-spring-context.xml
===================================================================
--- jpa2-validation/trunk/jsr303-validation/src/test/resources/test-spring-context.xml (rev 0)
+++ jpa2-validation/trunk/jsr303-validation/src/test/resources/test-spring-context.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,51 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+
+ <!-- TEST CONFIGURATION :: sample used to fill database -->
+ <context:component-scan base-package="org.nuiton.sandbox.jsr317.jpa2.sample"/>
+
+ <!-- SERVICES CONFIGURATION -->
+ <import resource="classpath:/jsr303-spring-context.xml"/>
+
+ <!-- MODEL INJECTION and JPA CONFIGURATION -->
+ <import resource="classpath:/jsr317-spring-context.xml"/>
+
+ <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <property name="url"
+ value="jdbc:h2:file:./target/surefire-data/jsr303"/>
+ <property name="username" value="sa"/>
+ <property name="password" value=""/>
+ </bean>
+
+ <bean id="transactionManager"
+ class="org.springframework.orm.jpa.JpaTransactionManager">
+ <property name="entityManagerFactory" ref="entityManagerFactory"/>
+ </bean>
+
+ <bean id="entityManagerFactory"
+ class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+ <property name="dataSource" ref="dataSource"/>
+ <property name="jpaVendorAdapter">
+ <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
+ <property name="showSql" value="false"/>
+ <property name="generateDdl" value="true"/>
+ <property name="databasePlatform" value="org.hibernate.dialect.H2Dialect"/>
+ </bean>
+ </property>
+ <property name="jpaProperties">
+ <props>
+ <prop key="hibernate.hbm2ddl.auto">create</prop>
+ <!-- IdGenerator Strategy : one unique number for each row for all database -->
+ <prop key="hibernate.id.new_generator_mappings">true</prop>
+ </props>
+ </property>
+ <property name="loadTimeWeaver">
+ <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
+ </property>
+ </bean>
+
+</beans>
\ No newline at end of file
Property changes on: jpa2-validation/trunk/jsr317-jpa2
___________________________________________________________________
Modified: svn:ignore
- *.iml
+ *.iml
target
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaConfig.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaConfig.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaConfig.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,80 @@
+package org.nuiton.sandbox.jsr317.jpa2.config;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.ImportResource;
+import org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver;
+import org.springframework.instrument.classloading.LoadTimeWeaver;
+import org.springframework.orm.jpa.JpaTransactionManager;
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
+
+/**
+ * Created on 21 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id: JpaConfig.java 433 2010-11-12 17:53:20Z fdesbois $
+ */
+@Configuration
+@ImportResource("classpath:/jsr317-spring-context.xml")
+public class JpaConfig {
+
+ private static final Log log = LogFactory.getLog(JpaConfig.class);
+
+ @Autowired
+ private JpaConfigSource configSource;
+
+ /**
+ * Create bean transactionManager used for injection of EntityManager. Need EntityManagerFactory bean provided by
+ * {@link #entityManagerFactory()}.
+ *
+ * @return the JpaTransactionManager used for Jpa transactions in EntityManager
+ */
+ @Bean
+ public JpaTransactionManager transactionManager() {
+ JpaTransactionManager transactionManager = new JpaTransactionManager();
+ transactionManager.setEntityManagerFactory(entityManagerFactory());
+ return transactionManager;
+ }
+
+ /**
+ * Create bean entityManagerFactory used by transactionManager. The factory is created using {@link
+ * LocalContainerEntityManagerFactoryBean}. {@link JpaConfigSource} implementation is needed to provide parameters
+ * for the BeanFactory. The FactoryBean is directly used to provide EntityManagerFactory as object returned by this
+ * method.
+ *
+ * @return the EntityManagerFactory constructed by a BeanFactory provided by Spring.
+ * @see JpaConfigSource
+ */
+ @Bean
+ public EntityManagerFactory entityManagerFactory() {
+ LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
+
+ if (log.isDebugEnabled()) {
+ log.debug("new LocalContainerEntityManagerFactoryBean()");
+ }
+
+ // DataSource to specify Database connection
+ factoryBean.setDataSource(configSource.dataSource());
+
+ // Extra VendorAdapter
+ factoryBean.setJpaVendorAdapter(configSource.jpaVendorAdapter());
+
+ // Extra JPA properties
+ factoryBean.setJpaProperties(configSource.jpaProperties());
+
+ // Instrumentation
+ LoadTimeWeaver loadTimeWeaver = new InstrumentationLoadTimeWeaver();
+ factoryBean.setLoadTimeWeaver(loadTimeWeaver);
+
+ // Ensure properties for the EntityManagerFactory object
+ factoryBean.afterPropertiesSet();
+
+ return factoryBean.getObject();
+ }
+
+}
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaConfigSource.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaConfigSource.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaConfigSource.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,45 @@
+package org.nuiton.sandbox.jsr317.jpa2.config;
+
+import javax.sql.DataSource;
+import java.util.Properties;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.orm.jpa.JpaVendorAdapter;
+
+/**
+ * Defined ConfigSource used for Jpa configuration. This will provide parameters to configure the Jpa connection that
+ * depends from implementation. Jpa will not work until some implementation implement this contract.
+ * <p/>
+ * Created on 21 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id: JpaConfigSource.java 433 2010-11-12 17:53:20Z fdesbois $
+ */
+@Configuration
+public interface JpaConfigSource {
+
+ /**
+ * DataSource to use to configure connection with database.
+ *
+ * @return the DataSource to used in EntityManagerFactory as database connection.
+ */
+ @Bean
+ DataSource dataSource();
+
+ /**
+ * Additional properties from Vendor implementation of JPA.
+ *
+ * @return the JpaVendorAdapter to used in EntityManagerFactory
+ */
+ @Bean
+ JpaVendorAdapter jpaVendorAdapter();
+
+ /**
+ * Additional Jpa properties.
+ *
+ * @return the Properties to set directly as Jpa Properties in EntityManagerFactory
+ */
+ @Bean
+ Properties jpaProperties();
+}
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaHelper.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaHelper.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/JpaHelper.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,51 @@
+package org.nuiton.sandbox.jsr317.jpa2.config;
+
+import javax.persistence.Embeddable;
+
+/**
+ * Created on 25 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id: JpaHelper.java 433 2010-11-12 17:53:20Z fdesbois $
+ */
+public class JpaHelper {
+
+ /**
+ * Util method to check embeddable assignment from an {@code inputInstance} to an {@code embeddableImplClass}. JPA
+ * doesn't provide property or annotation to use other target as attribute type for Embedded classes. In our case,
+ * we use only interfaces for all objects, so as Embedded ones. It's better to call this method before each manual
+ * cast to Embedded object in setter methods because the declaration need to be of implementation type. This method
+ * resulting a safe cast to correct implementation class for Embeddable objects.
+ *
+ * @param inputInstance Input type to check
+ * @param embeddableImplClass Embeddable instance with {@link Embeddable} annotation
+ * @return the correct embeddable type to use for persistence support
+ * @throws ClassCastException Exception thrown if inputInstance doesn't correspond to implementation class
+ * @throws IllegalArgumentException Exception thrown if embeddable implementation class doesn't have Embeddable
+ * annotation
+ */
+ public static <T> T safeEmbeddableCast(Object inputInstance, Class<T> embeddableImplClass)
+ throws ClassCastException, IllegalArgumentException {
+
+ if (inputInstance == null) {
+ return null;
+ }
+
+ if (!embeddableImplClass.isAnnotationPresent(Embeddable.class)) {
+ throw new IllegalArgumentException(String.format(
+ "Embeddable implementation '%s' doesn't have correct @Embeddable annotation",
+ embeddableImplClass.getName()
+ ));
+ }
+
+ if (!inputInstance.getClass().isAssignableFrom(embeddableImplClass)) {
+ throw new ClassCastException(String.format(
+ "Unable to set element of type '%s', it is not supported as Embeddable instance '%s'",
+ inputInstance.getClass().getName(),
+ embeddableImplClass.getName()
+ ));
+ }
+
+ return embeddableImplClass.cast(inputInstance);
+ }
+}
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/UpdateTechnicalFieldListener.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/UpdateTechnicalFieldListener.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/config/UpdateTechnicalFieldListener.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,59 @@
+package org.nuiton.sandbox.jsr317.jpa2.config;
+
+import javax.persistence.PrePersist;
+import javax.persistence.PreUpdate;
+import java.util.Date;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.sandbox.jsr317.jpa2.entity.BaseEntityImpl;
+
+/**
+ * Listener used to update technical fields such as {@code createDate}, {@code updateDate} and {@code version} defined
+ * in {@link BaseEntityImpl}.
+ * <p/>
+ * Created on 18 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id: UpdateTechnicalFieldListener.java 433 2010-11-12 17:53:20Z fdesbois $
+ */
+public class UpdateTechnicalFieldListener {
+
+ private static final Log log = LogFactory.getLog(UpdateTechnicalFieldListener.class);
+
+ /**
+ * Callback to set updateDate and increment version on each entity update.
+ *
+ * @param entity Entity to update
+ */
+ @PreUpdate
+ public void onPreUpdate(BaseEntityImpl entity) {
+
+ // Update date
+ Date updateDate = new Date();
+ entity.setUpdateDate(updateDate);
+ // Update version
+ int newVersion = entity.getVersion() + 1;
+ entity.setVersion(newVersion);
+
+ if (log.isTraceEnabled()) {
+ log.trace("PreUpdate :: " + entity + " _ updateDate = " + updateDate + " _ version = " + newVersion);
+ }
+ }
+
+ /**
+ * Callback to set createDate on each entity creation.
+ *
+ * @param entity Entity to update
+ */
+ @PrePersist
+ public void onPrePersist(BaseEntityImpl entity) {
+
+ Date createDate = new Date();
+ entity.setCreateDate(createDate);
+
+ if (log.isTraceEnabled()) {
+ log.trace("PrePersist :: " + entity + " _ createDate = " + createDate);
+ }
+ }
+}
Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntityImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntityImpl.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntityImpl.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -9,8 +9,9 @@
import javax.persistence.TemporalType;
import javax.persistence.Version;
import java.util.Date;
-import org.nuiton.sandbox.jsr317.jpa2.persistence.UpdateTechnicalFieldListener;
+import org.nuiton.sandbox.jsr317.jpa2.config.UpdateTechnicalFieldListener;
+
/**
* Created on 18 oct. 2010
*
Modified: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -6,8 +6,9 @@
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Table;
-import org.nuiton.sandbox.jsr317.jpa2.persistence.JpaHelper;
+import org.nuiton.sandbox.jsr317.jpa2.config.JpaHelper;
+
/**
* @author fdesbois <fdesbois(a)codelutin.com>
* @version $Id$
@@ -172,5 +173,5 @@
public void setAccessCode(AccessCode accessCode) {
this.accessCode = accessCode;
}
-
+
}
Deleted: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfig.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfig.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfig.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -1,79 +0,0 @@
-package org.nuiton.sandbox.jsr317.jpa2.persistence;
-
-import javax.persistence.EntityManagerFactory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.ImportResource;
-import org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver;
-import org.springframework.instrument.classloading.LoadTimeWeaver;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-
-/**
- * Created on 21 oct. 2010
- *
- * @author fdesbois <fdesbois(a)codelutin.com>
- * @version $Id$
- */
-@Configuration
-@ImportResource("classpath:/jsr317-spring-context.xml")
-public class JpaConfig {
-
- private static final Log log = LogFactory.getLog(JpaConfig.class);
-
- @Autowired
- private JpaConfigSource configSource;
-
- /**
- * Create bean transactionManager used for injection of EntityManager. Need EntityManagerFactory bean provided by
- * {@link #entityManagerFactory()}.
- *
- * @return the JpaTransactionManager used for Jpa transactions in EntityManager
- */
- @Bean
- public JpaTransactionManager transactionManager() {
- JpaTransactionManager transactionManager = new JpaTransactionManager();
- transactionManager.setEntityManagerFactory(entityManagerFactory());
- return transactionManager;
- }
-
- /**
- * Create bean entityManagerFactory used by transactionManager. The factory is created using
- * {@link LocalContainerEntityManagerFactoryBean}. {@link JpaConfigSource} implementation is needed to provide
- * parameters for the BeanFactory. The FactoryBean is directly used to provide EntityManagerFactory as object
- * returned by this method.
- *
- * @return the EntityManagerFactory constructed by a BeanFactory provided by Spring.
- * @see JpaConfigSource
- */
- @Bean
- public EntityManagerFactory entityManagerFactory() {
- LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
-
- if (log.isDebugEnabled()) {
- log.debug("new LocalContainerEntityManagerFactoryBean()");
- }
-
- // DataSource to specify Database connection
- factoryBean.setDataSource(configSource.dataSource());
-
- // Extra VendorAdapter
- factoryBean.setJpaVendorAdapter(configSource.jpaVendorAdapter());
-
- // Extra JPA properties
- factoryBean.setJpaProperties(configSource.jpaProperties());
-
- // Instrumentation
- LoadTimeWeaver loadTimeWeaver = new InstrumentationLoadTimeWeaver();
- factoryBean.setLoadTimeWeaver(loadTimeWeaver);
-
- // Ensure properties for the EntityManagerFactory object
- factoryBean.afterPropertiesSet();
-
- return factoryBean.getObject();
- }
-
-}
Deleted: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfigSource.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfigSource.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfigSource.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -1,44 +0,0 @@
-package org.nuiton.sandbox.jsr317.jpa2.persistence;
-
-import javax.sql.DataSource;
-import java.util.Properties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.orm.jpa.JpaVendorAdapter;
-
-/**
- * Defined ConfigSource used for Jpa configuration. This will provide parameters to configure the Jpa connection that
- * depends from implementation. Jpa will not work until some implementation implement this contract.
- * <p />
- * Created on 21 oct. 2010
- *
- * @author fdesbois <fdesbois(a)codelutin.com>
- * @version $Id$
- */
-@Configuration
-public interface JpaConfigSource {
-
- /**
- * DataSource to use to configure connection with database.
- *
- * @return the DataSource to used in EntityManagerFactory as database connection.
- */
- @Bean
- DataSource dataSource();
-
- /**
- * Additional properties from Vendor implementation of JPA.
- *
- * @return the JpaVendorAdapter to used in EntityManagerFactory
- */
- @Bean
- JpaVendorAdapter jpaVendorAdapter();
-
- /**
- * Additional Jpa properties.
- *
- * @return the Properties to set directly as Jpa Properties in EntityManagerFactory
- */
- @Bean
- Properties jpaProperties();
-}
Deleted: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaHelper.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaHelper.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaHelper.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -1,50 +0,0 @@
-package org.nuiton.sandbox.jsr317.jpa2.persistence;
-
-import javax.persistence.Embeddable;
-
-/**
- * Created on 25 oct. 2010
- *
- * @author fdesbois <fdesbois(a)codelutin.com>
- * @version $Id$
- */
-public class JpaHelper {
-
- /**
- * Util method to check embeddable assignment from an {@code inputInstance} to an {@code embeddableImplClass}.
- * JPA doesn't provide property or annotation to use other target as attribute type for Embedded classes. In our case, we use
- * only interfaces for all objects, so as Embedded ones. It's better to call this method before each manual cast to Embedded object
- * in setter methods because the declaration need to be of implementation type. This method resulting a safe cast to correct
- * implementation class for Embeddable objects.
- *
- * @param inputInstance Input type to check
- * @param embeddableImplClass Embeddable instance with {@link Embeddable} annotation
- * @return the correct embeddable type to use for persistence support
- * @throws ClassCastException Exception thrown if inputInstance doesn't correspond to implementation class
- * @throws IllegalArgumentException Exception thrown if embeddable implementation class doesn't have Embeddable annotation
- */
- public static <T> T safeEmbeddableCast(Object inputInstance, Class<T> embeddableImplClass)
- throws ClassCastException, IllegalArgumentException {
-
- if (inputInstance == null) {
- return null;
- }
-
- if (!embeddableImplClass.isAnnotationPresent(Embeddable.class)) {
- throw new IllegalArgumentException(String.format(
- "Embeddable implementation '%s' doesn't have correct @Embeddable annotation",
- embeddableImplClass.getName()
- ));
- }
-
- if (!inputInstance.getClass().isAssignableFrom(embeddableImplClass)) {
- throw new ClassCastException(String.format(
- "Unable to set element of type '%s', it is not supported as Embeddable instance '%s'",
- inputInstance.getClass().getName(),
- embeddableImplClass.getName()
- ));
- }
-
- return embeddableImplClass.cast(inputInstance);
- }
-}
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/ModelContext.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/ModelContext.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/ModelContext.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,28 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import org.nuiton.sandbox.jsr317.jpa2.persistence.BaseDAOImpl.SaveStrategy;
+
+/**
+ * Global context for Model. Useful for manual flushing or change strategy for saving.
+ * <p/>
+ * Created on 19 nov. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+public interface ModelContext {
+
+ /**
+ * Set the {@code strategy} to apply on each call to {@link BaseDAO#save(Object)} method.
+ *
+ * @param strategy SaveStrategy to use everywhere
+ */
+ void setSaveStrategy(SaveStrategy strategy);
+
+ /**
+ * Manual flushing of the persistent session to ensure data being saved in database. This could be useful inside a
+ * transactional method to have persisted results at a specified moment.
+ */
+ void flushSession();
+
+}
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/ModelContextImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/ModelContextImpl.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/ModelContextImpl.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -0,0 +1,53 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.util.Map;
+
+import org.nuiton.sandbox.jsr317.jpa2.persistence.BaseDAOImpl.SaveStrategy;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Service;
+
+/**
+ * Created on 19 nov. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+@Service
+public class ModelContextImpl implements ModelContext {
+
+ @Autowired
+ protected ApplicationContext context;
+
+ @PersistenceContext
+ protected EntityManager entityManager;
+
+ protected Map<String, BaseDAOImpl> daos;
+
+ /**
+ * Retrieve daos from Spring applicationContext if needed.
+ *
+ * @return the registered DAOs
+ */
+ public Map<String, BaseDAOImpl> getDAOs() {
+ if (daos == null) {
+ daos = context.getBeansOfType(BaseDAOImpl.class);
+ }
+ return daos;
+ }
+
+ @Override
+ public void setSaveStrategy(SaveStrategy strategy) {
+ for (BaseDAOImpl dao : getDAOs().values()) {
+ dao.setSaveStrategy(strategy);
+ }
+ }
+
+ @Override
+ public void flushSession() {
+ entityManager.flush();
+ }
+
+}
Deleted: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/UpdateTechnicalFieldListener.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/UpdateTechnicalFieldListener.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/UpdateTechnicalFieldListener.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -1,59 +0,0 @@
-package org.nuiton.sandbox.jsr317.jpa2.persistence;
-
-import javax.persistence.PrePersist;
-import javax.persistence.PreUpdate;
-import java.util.Date;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.sandbox.jsr317.jpa2.entity.BaseEntityImpl;
-
-/**
- *
- * Listener used to update technical fields such as {@code createDate}, {@code updateDate}
- * and {@code version} defined in {@link BaseEntityImpl}.
- *
- * Created on 18 oct. 2010
- *
- * @author fdesbois <fdesbois(a)codelutin.com>
- * @version $Id$
- */
-public class UpdateTechnicalFieldListener {
-
- private static final Log log = LogFactory.getLog(UpdateTechnicalFieldListener.class);
-
- /**
- * Callback to set updateDate and increment version on each entity update.
- *
- * @param entity Entity to update
- */
- @PreUpdate
- public void onPreUpdate(BaseEntityImpl entity) {
-
- // Update date
- Date updateDate = new Date();
- entity.setUpdateDate(updateDate);
- // Update version
- int newVersion = entity.getVersion() + 1;
- entity.setVersion(newVersion);
-
- if (log.isTraceEnabled()) {
- log.trace("PreUpdate :: " + entity + " _ updateDate = " + updateDate + " _ version = " + newVersion);
- }
- }
-
- /**
- * Callback to set createDate on each entity creation.
- *
- * @param entity Entity to update
- */
- @PrePersist
- public void onPrePersist(BaseEntityImpl entity) {
-
- Date createDate = new Date();
- entity.setCreateDate(createDate);
-
- if (log.isTraceEnabled()) {
- log.trace("PrePersist :: " + entity + " _ createDate = " + createDate);
- }
- }
-}
Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -1,8 +1,10 @@
package org.nuiton.sandbox.jsr317.jpa2.persistence;
import javax.persistence.PersistenceException;
+
import org.junit.Assert;
import org.junit.Test;
+import org.nuiton.sandbox.jsr317.jpa2.config.JpaHelper;
import org.nuiton.sandbox.jsr317.jpa2.entity.Address;
import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
import org.nuiton.sandbox.jsr317.jpa2.test.AddressFake;
@@ -37,13 +39,13 @@
user.setAddress(address);
Assert.assertNotNull(user.getAddress());
- Assert.assertEquals("createStreet", user.getAddress().getStreet());
+ Assert.assertEquals("createStreet", user.getAddress().getStreet());
}
/**
- * Test to check that an other address that AddressImpl can't be save into Customer entity..
- * This test is for {@link JpaHelper#safeEmbeddableCast(Object, Class)} method in real context. Note that @Transactional will break
- * this test because flushing the session reproduce the Exception a second time after saving the entity.
+ * Test to check that an other address that AddressImpl can't be save into Customer entity.. This test is for {@link
+ * JpaHelper#safeEmbeddableCast(Object, Class)} method in real context. Note that @Transactional will break this
+ * test because flushing the session reproduce the Exception a second time after saving the entity.
*/
@Test(expected = PersistenceException.class)
public void testCreateCustomerWithFakeAddressImplementation() {
Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -1,12 +1,12 @@
package org.nuiton.sandbox.jsr317.jpa2.test;
+import org.nuiton.sandbox.jsr317.jpa2.config.JpaHelper;
import org.nuiton.sandbox.jsr317.jpa2.entity.Address;
-import org.nuiton.sandbox.jsr317.jpa2.persistence.JpaHelper;
/**
* Fake implementation of address to test Embeddable target management (need explicit cast provided by {@link
* JpaHelper#safeEmbeddableCast(Object, Class)}
- *
+ * <p/>
* Created on 22 oct. 2010
*
* @author fdesbois <fdesbois(a)codelutin.com>
Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/JpaConfigTestSource.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/JpaConfigTestSource.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/JpaConfigTestSource.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -2,8 +2,9 @@
import javax.sql.DataSource;
import java.util.Properties;
+
import org.hibernate.dialect.H2Dialect;
-import org.nuiton.sandbox.jsr317.jpa2.persistence.JpaConfigSource;
+import org.nuiton.sandbox.jsr317.jpa2.config.JpaConfigSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -13,7 +14,7 @@
/**
* Jpa configuration for tests.
- * <p />
+ * <p/>
* Created on 21 oct. 2010
*
* @author fdesbois <fdesbois(a)codelutin.com>
@@ -39,7 +40,7 @@
jpaVendorAdapter.setGenerateDdl(true);
jpaVendorAdapter.setDatabasePlatform(H2Dialect.class.getName());
return jpaVendorAdapter;
- }
+ }
@Bean
@Override
Modified: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/SpringTestConfig.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/SpringTestConfig.java 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/SpringTestConfig.java 2010-11-22 10:36:05 UTC (rev 436)
@@ -1,7 +1,7 @@
package org.nuiton.sandbox.jsr317.jpa2.test;
-import org.nuiton.sandbox.jsr317.jpa2.persistence.JpaConfig;
-import org.nuiton.sandbox.jsr317.jpa2.persistence.JpaConfigSource;
+import org.nuiton.sandbox.jsr317.jpa2.config.JpaConfig;
+import org.nuiton.sandbox.jsr317.jpa2.config.JpaConfigSource;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -9,9 +9,9 @@
import org.springframework.core.io.ClassPathResource;
/**
- * Configuration used for tests. This will import default {@link JpaConfig} and use {@link JpaConfigTestSource} as {@link JpaConfigSource}
- * implementation needed by the JpaConfig.
- * <p />
+ * Configuration used for tests. This will import default {@link JpaConfig} and use {@link JpaConfigTestSource} as
+ * {@link JpaConfigSource} implementation needed by the JpaConfig.
+ * <p/>
* Created on 21 oct. 2010
*
* @author fdesbois <fdesbois(a)codelutin.com>
@@ -21,9 +21,10 @@
@Configuration
@Import({JpaConfig.class, JpaConfigTestSource.class})
public class SpringTestConfig {
-
+
/**
- * Used to retrieve properties from jdbc-test.properties file. @Value annotation can be used to inject those properties
+ * Used to retrieve properties from jdbc-test.properties file. @Value annotation can be used to inject those
+ * properties
*
* @return PropertyPlaceholderConfigurer defined
*/
Modified: jpa2-validation/trunk/pom.xml
===================================================================
--- jpa2-validation/trunk/pom.xml 2010-11-21 19:27:40 UTC (rev 435)
+++ jpa2-validation/trunk/pom.xml 2010-11-22 10:36:05 UTC (rev 436)
@@ -2,200 +2,215 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
- <!-- ************************************************************* -->
- <!-- *** POM Relationships *************************************** -->
- <!-- ************************************************************* -->
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
- <parent>
- <groupId>org.nuiton</groupId>
- <artifactId>mavenpom</artifactId>
- <version>2.4.1</version>
- </parent>
+ <parent>
+ <groupId>org.nuiton</groupId>
+ <artifactId>mavenpom</artifactId>
+ <version>2.4.1</version>
+ </parent>
- <groupId>org.nuiton.sandbox</groupId>
- <artifactId>jsr-tests</artifactId>
- <version>0.1-SNAPSHOT</version>
+ <groupId>org.nuiton.sandbox</groupId>
+ <artifactId>jsr-tests</artifactId>
+ <version>0.1-SNAPSHOT</version>
- <modules>
- <!-- JSR-317 -->
- <module>jsr317-jpa2</module>
- <!-- JSR-303 -->
- <module>jsr303-validation</module>
- </modules>
+ <modules>
+ <!-- JSR-317 -->
+ <module>jsr317-jpa2</module>
+ <!-- JSR-303 -->
+ <module>jsr303-validation</module>
+ </modules>
- <dependencyManagement>
- <dependencies>
+ <dependencyManagement>
+ <dependencies>
- <dependency>
- <groupId>org.nuiton</groupId>
- <artifactId>nuiton-utils</artifactId>
- <version>1.4.2</version>
- </dependency>
+ <dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-utils</artifactId>
+ <version>1.4.2</version>
+ </dependency>
- <!-- SPRING -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <!-- SPRING -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <!-- JPA : JSR-317- -->
- <dependency>
- <groupId>org.hibernate.javax.persistence</groupId>
- <artifactId>hibernate-jpa-2.0-api</artifactId>
- <version>${jpa2ApiVersion}</version>
- </dependency>
+ <!-- JPA : JSR-317- -->
+ <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ <version>${jpa2ApiVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-jpamodelgen</artifactId>
- <version>${jpa2ApiVersion}</version>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-jpamodelgen</artifactId>
+ <version>${jpa2ApiVersion}</version>
+ <scope>provided</scope>
+ </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>${hibernateVersion}</version>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>${hibernateVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <!-- Bean Validation : JSR-303 -->
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <version>${validationApiVersion}</version>
- </dependency>
+ <!-- Bean Validation : JSR-303 -->
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>${validationApiVersion}</version>
+ </dependency>
- <!-- LOGGING -->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>${log4jVersion}</version>
- <scope>runtime</scope>
- </dependency>
+ <!-- LOGGING -->
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4jVersion}</version>
+ <scope>runtime</scope>
+ </dependency>
- <!-- TESTS -->
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>1.2.143</version>
- <scope>test</scope>
- </dependency>
+ <!-- TESTS -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.2.143</version>
+ <scope>test</scope>
+ </dependency>
- <!-- Hibernate implementation used for tests -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>${hibernateVersion}</version>
- <scope>test</scope>
- </dependency>
+ <!-- Hibernate implementation used for tests -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>${hibernateVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>${hibernateValidatorVersion}</version>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>${hibernateValidatorVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>${slf4jVersion}</version>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4jVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>${slf4jVersion}</version>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${slf4jVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <!-- Testing -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${springVersion}</version>
- <scope>test</scope>
- </dependency>
+ <!-- Testing -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>${springVersion}</version>
+ <scope>test</scope>
+ </dependency>
- </dependencies>
- </dependencyManagement>
+ </dependencies>
+ </dependencyManagement>
- <!-- ************************************************************* -->
- <!-- *** Project Information ************************************* -->
- <!-- ************************************************************* -->
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
- <name>JSR Tests</name>
- <description>JPA2 and Validation tests</description>
- <inceptionYear>2010</inceptionYear>
- <url>http://maven-site.nuiton.org/${project.artifactId}</url>
+ <name>JSR Tests</name>
+ <description>JPA2 and Validation tests</description>
+ <inceptionYear>2010</inceptionYear>
+ <url>http://maven-site.nuiton.org/${project.artifactId}</url>
- <!-- ************************************************************* -->
- <!-- *** Build Settings ****************************************** -->
- <!-- ************************************************************* -->
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
- <packaging>pom</packaging>
+ <packaging>pom</packaging>
- <properties>
+ <properties>
- <!-- Dependencies versions -->
- <springVersion>3.0.4.RELEASE</springVersion>
- <jpa2ApiVersion>1.0.0.Final</jpa2ApiVersion>
- <validationApiVersion>1.0.0.GA</validationApiVersion>
+ <!-- Dependencies versions -->
+ <springVersion>3.0.4.RELEASE</springVersion>
+ <jpa2ApiVersion>1.0.0.Final</jpa2ApiVersion>
+ <validationApiVersion>1.0.0.GA</validationApiVersion>
- <!-- For test only : Hibernate implementation for JSR used -->
- <hibernateVersion>3.5.6-Final</hibernateVersion>
- <hibernateValidatorVersion>4.0.2.GA</hibernateValidatorVersion>
- <slf4jVersion>1.6.1</slf4jVersion>
+ <!-- For test only : Hibernate implementation for JSR used -->
+ <hibernateVersion>3.5.6-Final</hibernateVersion>
+ <hibernateValidatorVersion>4.0.2.GA</hibernateValidatorVersion>
+ <slf4jVersion>1.6.1</slf4jVersion>
- </properties>
+ </properties>
- <!-- Source control management. -->
- <scm>
- <connection>
- scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk
- </connection>
- <developerConnection>
- scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk
- </developerConnection>
- <url>
- http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk
- </url>
- </scm>
+ <build>
+ <finalName>${project.artifactId}-${project.version}</finalName>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <version>1.5</version>
+ </plugin>
+
+ </plugins>
+ </pluginManagement>
+ </build>
+
+ <!-- Source control management. -->
+ <scm>
+ <connection>
+ scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk
+ </connection>
+ <developerConnection>
+ scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk
+ </developerConnection>
+ <url>
+ http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk
+ </url>
+ </scm>
+
+
</project>
1
0
Author: tchemit
Date: 2010-11-21 20:27:40 +0100 (Sun, 21 Nov 2010)
New Revision: 435
Url: http://nuiton.org/repositories/revision/sandbox/435
Log:
optimize dependencies
Modified:
jpa2-validation/trunk/jsr317-jpa2/pom.xml
jpa2-validation/trunk/pom.xml
Modified: jpa2-validation/trunk/jsr317-jpa2/pom.xml
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/pom.xml 2010-11-12 17:56:27 UTC (rev 434)
+++ jpa2-validation/trunk/jsr317-jpa2/pom.xml 2010-11-21 19:27:40 UTC (rev 435)
@@ -1,202 +1,218 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
- <!-- ************************************************************* -->
- <!-- *** POM Relationships *************************************** -->
- <!-- ************************************************************* -->
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
- <parent>
- <groupId>org.nuiton.sandbox</groupId>
- <artifactId>jsr-tests</artifactId>
- <version>0.1-SNAPSHOT</version>
- </parent>
+ <parent>
+ <groupId>org.nuiton.sandbox</groupId>
+ <artifactId>jsr-tests</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ </parent>
- <artifactId>jsr317-jpa2</artifactId>
+ <artifactId>jsr317-jpa2</artifactId>
- <dependencies>
+ <dependencies>
- <!--<dependency>-->
- <!--<groupId>org.nuiton</groupId>-->
- <!--<artifactId>nuiton-utils</artifactId>-->
- <!--<version>1.4.2</version>-->
- <!--</dependency>-->
+ <!--<dependency>-->
+ <!--<groupId>org.nuiton</groupId>-->
+ <!--<artifactId>nuiton-utils</artifactId>-->
+ <!--<version>1.4.2</version>-->
+ <!--</dependency>-->
- <!-- SPRING -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- </dependency>
+ <!-- SPRING -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ </dependency>
- <!-- JPA : JSR-317- -->
- <dependency>
- <groupId>org.hibernate.javax.persistence</groupId>
- <artifactId>hibernate-jpa-2.0-api</artifactId>
- </dependency>
+ <!-- JPA : JSR-317- -->
+ <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-jpamodelgen</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-jpamodelgen</artifactId>
+ </dependency>
- <!-- LOGGING -->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ </dependency>
- <!-- TESTS -->
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- </dependency>
+ <!-- LOGGING -->
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
- <!-- Hibernate implementation used for tests -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- </dependency>
+ <!-- TESTS -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
+ <!-- Hibernate implementation used for tests -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
- <!-- Testing -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- </dependency>
+ <!-- Testing -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
- </dependencies>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ </dependency>
- <!-- ************************************************************* -->
- <!-- *** Project Information ************************************* -->
- <!-- ************************************************************* -->
+ </dependencies>
- <name>JSR Tests :: JSR-317 JPA2</name>
- <description>JPA2 tests</description>
- <inceptionYear>2010</inceptionYear>
- <url>http://maven-site.nuiton.org/${project.artifactId}</url>
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
- <!-- ************************************************************* -->
- <!-- *** Build Settings ****************************************** -->
- <!-- ************************************************************* -->
+ <name>JSR Tests :: JSR-317 JPA2</name>
+ <description>JPA2 tests</description>
+ <inceptionYear>2010</inceptionYear>
+ <url>http://maven-site.nuiton.org/${project.artifactId}</url>
- <packaging>jar</packaging>
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
- <build>
+ <packaging>jar</packaging>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <includes>
- <include>**/*</include>
- </includes>
- <filtering>true</filtering>
- </resource>
- </resources>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
- <!-- Configuration to generate metamodel : ref = http://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single… -->
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <!--<compilerArguments>-->
- <!--<!– Generate Jpa MetaModel –>-->
- <!--<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>-->
- <!--</compilerArguments>-->
- <compilerArgument>-proc:none</compilerArgument>
- </configuration>
- </plugin>
+ <!-- Configuration to generate metamodel : ref = http://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single… -->
+ <plugins>
- <plugin>
- <groupId>org.bsc.maven</groupId>
- <artifactId>maven-processor-plugin</artifactId>
- <executions>
- <execution>
- <id>process</id>
- <goals>
- <goal>process</goal>
- </goals>
- <phase>generate-sources</phase>
- <configuration>
- <compilerArguments>-Adebug=TRUE</compilerArguments>
- <!-- source output directory -->
- <outputDirectory>${maven.gen.dir}/java</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <!--<compilerArguments>-->
+ <!--<!– Generate Jpa MetaModel –>-->
+ <!--<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>-->
+ <!--</compilerArguments>-->
+ <compilerArgument>-proc:none</compilerArgument>
+ </configuration>
+ </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>${maven.gen.dir}/java</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
+ <plugin>
+ <groupId>org.bsc.maven</groupId>
+ <artifactId>maven-processor-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>process</id>
+ <goals>
+ <goal>process</goal>
+ </goals>
+ <phase>generate-sources</phase>
+ <configuration>
+ <compilerArguments>-Adebug=TRUE</compilerArguments>
+ <!-- source output directory -->
+ <outputDirectory>${maven.gen.dir}/java</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
- </plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>${maven.gen.dir}/java</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
- </build>
+ </plugins>
- <!-- Source control management. -->
- <scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2</connection>
- <developerConnection>scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2
- </developerConnection>
- <url>http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk/jsr…</url>
- </scm>
+ </build>
+ <!-- Source control management. -->
+ <scm>
+ <connection>
+ scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2
+ </connection>
+ <developerConnection>
+ scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk/jsr317-jpa2
+ </developerConnection>
+ <url>
+ http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk/jsr…
+ </url>
+ </scm>
+
</project>
Modified: jpa2-validation/trunk/pom.xml
===================================================================
--- jpa2-validation/trunk/pom.xml 2010-11-12 17:56:27 UTC (rev 434)
+++ jpa2-validation/trunk/pom.xml 2010-11-21 19:27:40 UTC (rev 435)
@@ -1,185 +1,201 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
- <!-- ************************************************************* -->
- <!-- *** POM Relationships *************************************** -->
- <!-- ************************************************************* -->
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
- <parent>
+ <parent>
+ <groupId>org.nuiton</groupId>
+ <artifactId>mavenpom</artifactId>
+ <version>2.4.1</version>
+ </parent>
+
+ <groupId>org.nuiton.sandbox</groupId>
+ <artifactId>jsr-tests</artifactId>
+ <version>0.1-SNAPSHOT</version>
+
+ <modules>
+ <!-- JSR-317 -->
+ <module>jsr317-jpa2</module>
+ <!-- JSR-303 -->
+ <module>jsr303-validation</module>
+ </modules>
+
+ <dependencyManagement>
+ <dependencies>
+
+ <dependency>
<groupId>org.nuiton</groupId>
- <artifactId>mavenpom</artifactId>
- <version>2.4</version>
- </parent>
+ <artifactId>nuiton-utils</artifactId>
+ <version>1.4.2</version>
+ </dependency>
- <groupId>org.nuiton.sandbox</groupId>
- <artifactId>jsr-tests</artifactId>
- <version>0.1-SNAPSHOT</version>
+ <!-- SPRING -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <modules>
- <!-- JSR-317 -->
- <module>jsr317-jpa2</module>
- <!-- JSR-303 -->
- <module>jsr303-validation</module>
- </modules>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <dependencyManagement>
- <dependencies>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.nuiton</groupId>
- <artifactId>nuiton-utils</artifactId>
- <version>1.4.2</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <!-- SPRING -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <!-- JPA : JSR-317- -->
+ <dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ <version>${jpa2ApiVersion}</version>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-jpamodelgen</artifactId>
+ <version>${jpa2ApiVersion}</version>
+ <scope>provided</scope>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>${hibernateVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- <version>${springVersion}</version>
- </dependency>
+ <!-- Bean Validation : JSR-303 -->
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>${validationApiVersion}</version>
+ </dependency>
- <!-- JPA : JSR-317- -->
- <dependency>
- <groupId>org.hibernate.javax.persistence</groupId>
- <artifactId>hibernate-jpa-2.0-api</artifactId>
- <version>${jpa2ApiVersion}</version>
- </dependency>
+ <!-- LOGGING -->
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4jVersion}</version>
+ <scope>runtime</scope>
+ </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-jpamodelgen</artifactId>
- <version>${jpa2ApiVersion}</version>
- </dependency>
+ <!-- TESTS -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.2.143</version>
+ <scope>test</scope>
+ </dependency>
- <!-- Bean Validation : JSR-303 -->
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <version>${validationApiVersion}</version>
- </dependency>
+ <!-- Hibernate implementation used for tests -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>${hibernateVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <!-- LOGGING -->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>${log4jVersion}</version>
- <scope>runtime</scope>
- </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>${hibernateValidatorVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <!-- TESTS -->
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>1.2.143</version>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4jVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <!-- Hibernate implementation used for tests -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>${hibernateVersion}</version>
- <scope>test</scope>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${slf4jVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>${hibernateValidatorVersion}</version>
- <scope>test</scope>
- </dependency>
+ <!-- Testing -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>${springVersion}</version>
+ <scope>test</scope>
+ </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>${slf4jVersion}</version>
- <scope>test</scope>
- </dependency>
+ </dependencies>
+ </dependencyManagement>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>${slf4jVersion}</version>
- <scope>test</scope>
- </dependency>
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
- <!-- Testing -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${springVersion}</version>
- <scope>test</scope>
- </dependency>
+ <name>JSR Tests</name>
+ <description>JPA2 and Validation tests</description>
+ <inceptionYear>2010</inceptionYear>
+ <url>http://maven-site.nuiton.org/${project.artifactId}</url>
- </dependencies>
- </dependencyManagement>
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
- <!-- ************************************************************* -->
- <!-- *** Project Information ************************************* -->
- <!-- ************************************************************* -->
+ <packaging>pom</packaging>
- <name>JSR Tests</name>
- <description>JPA2 and Validation tests</description>
- <inceptionYear>2010</inceptionYear>
- <url>http://maven-site.nuiton.org/${project.artifactId}</url>
-
- <!-- ************************************************************* -->
- <!-- *** Build Settings ****************************************** -->
- <!-- ************************************************************* -->
+ <properties>
- <packaging>pom</packaging>
+ <!-- Dependencies versions -->
+ <springVersion>3.0.4.RELEASE</springVersion>
+ <jpa2ApiVersion>1.0.0.Final</jpa2ApiVersion>
+ <validationApiVersion>1.0.0.GA</validationApiVersion>
- <properties>
+ <!-- For test only : Hibernate implementation for JSR used -->
+ <hibernateVersion>3.5.6-Final</hibernateVersion>
+ <hibernateValidatorVersion>4.0.2.GA</hibernateValidatorVersion>
+ <slf4jVersion>1.6.1</slf4jVersion>
- <!-- Dependencies versions -->
- <springVersion>3.0.4.RELEASE</springVersion>
- <jpa2ApiVersion>1.0.0.Final</jpa2ApiVersion>
- <validationApiVersion>1.0.0.GA</validationApiVersion>
+ </properties>
- <!-- For test only : Hibernate implementation for JSR used -->
- <hibernateVersion>3.5.6-Final</hibernateVersion>
- <hibernateValidatorVersion>4.0.2.GA</hibernateValidatorVersion>
- <slf4jVersion>1.6.1</slf4jVersion>
-
- </properties>
+ <!-- Source control management. -->
+ <scm>
+ <connection>
+ scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk
+ </connection>
+ <developerConnection>
+ scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk
+ </developerConnection>
+ <url>
+ http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk
+ </url>
+ </scm>
- <!-- Source control management. -->
- <scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk</connection>
- <developerConnection>scm:svn:http://svn.nuiton.org/svn/sandbox/jpa2-validation/trunk</developerConnection>
- <url>http://www.nuiton.org/repositories/browse/sandbox/jpa2-validation/trunk</url>
- </scm>
-
</project>
1
0
r21 - in refComp/skills-client/src/main: java/org/chorem/bonzoms/skills/client java/org/chorem/bonzoms/skills/client/constants resources/org/chorem/bonzoms/skills/client resources/org/chorem/bonzoms/skills/client/logos resources/org/chorem/bonzoms/skills/public
by jcouteau@users.chorem.org 18 Nov '10
by jcouteau@users.chorem.org 18 Nov '10
18 Nov '10
Author: jcouteau
Date: 2010-11-18 14:56:42 +0100 (Thu, 18 Nov 2010)
New Revision: 21
Url: http://chorem.org/repositories/revision/incubator/21
Log:
Improve global cutting between panels. Add history management.
Added:
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Home.java
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Home.ui.xml
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Menu.java
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Menu.ui.xml
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/header.jpg
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/agplv3-88x31.png
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/logoCIAM.jpg
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/logoCIAM.png
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/logoINRA.png
Modified:
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.java
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.ui.xml
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/RefComp.java
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Footer.ui.xml
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Header.java
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Header.ui.xml
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/refcomp.css
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/public/RefComp.html
Added: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Home.java
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Home.java (rev 0)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Home.java 2010-11-18 13:56:42 UTC (rev 21)
@@ -0,0 +1,23 @@
+package org.chorem.bonzoms.skills.client;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiTemplate;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Panel;
+
+/**
+ * User: couteau
+ * Date: 10 nov. 2010
+ */
+public class Home extends Composite {
+ @UiTemplate("Home.ui.xml")
+ interface MyUiBinder extends UiBinder<Panel, Home> {
+ }
+
+ private static final MyUiBinder binder = GWT.create(MyUiBinder.class);
+
+ public Home() {
+ initWidget(binder.createAndBindUi(this));
+ }
+}
\ No newline at end of file
Added: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Home.ui.xml
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Home.ui.xml (rev 0)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Home.ui.xml 2010-11-18 13:56:42 UTC (rev 21)
@@ -0,0 +1,16 @@
+<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
+ xmlns:gwt='urn:import:com.google.gwt.user.client.ui'>
+
+ <gwt:HTMLPanel>
+ <div align="center" class="edito">
+ <p>
+ Bienvenue dans l'Annuaire de compétences du Centre Automatisé de
+ Traitement de l'Information (CATI) du Collectif Informatique
+ d'Appui au département MIA
+ </p>
+ <p>
+ Edito...
+ </p>
+ </div>
+ </gwt:HTMLPanel>
+</ui:UiBinder>
\ No newline at end of file
Modified: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.java
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.java 2010-11-06 14:12:36 UTC (rev 20)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.java 2010-11-18 13:56:42 UTC (rev 21)
@@ -16,6 +16,7 @@
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import org.chorem.bonzoms.skills.client.constants.Header;
+import org.chorem.bonzoms.skills.client.constants.Menu;
import org.chorem.bonzoms.skills.client.services.LoginService;
import org.chorem.bonzoms.skills.client.services.LoginServiceAsync;
@@ -52,11 +53,6 @@
private Boolean tooShort = false;
- /*
- * Method name is not relevant, the binding is done according to the class
- * of the parameter.
- */
-
@UiHandler("buttonSubmit")
void doClickSubmit(ClickEvent event) {
if (tooShort) {
@@ -70,18 +66,12 @@
@Override
public void onSuccess(Boolean result) {
if (result){
- RootPanel content = RootPanel.get("content");
- RootPanel header = RootPanel.get("header");
+ RefComp.logIn();
+ Menu.logIn();
+ RootPanel content = RootPanel.get("content");
content.clear();
- header.clear();
-
content.add(new Search());
-
- Header newHeader = new Header();
-
- header.add(newHeader);
-
} else {
Window.alert("Login failed, try with admin/admin");
}
Modified: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.ui.xml
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.ui.xml 2010-11-06 14:12:36 UTC (rev 20)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.ui.xml 2010-11-18 13:56:42 UTC (rev 21)
@@ -1,28 +1,21 @@
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:gwt='urn:import:com.google.gwt.user.client.ui'>
- <ui:style src="refcomp.css"/>
-
<gwt:HTMLPanel>
- <div align="center">
- <gwt:VerticalPanel styleName="{style.background}">
- <gwt:Label text="Login" styleName="{style.greyText}"/>
- <gwt:TextBox ui:field="loginBox"
- styleName="{style.box}"/>
- <gwt:Label text="Password" styleName="{style.greyText}"/>
- <gwt:PasswordTextBox ui:field="passwordBox" styleName="{style.box}"/>
- <gwt:HorizontalPanel verticalAlignment="ALIGN_MIDDLE">
- <gwt:Button ui:field="buttonSubmit" text="Submit"
- styleName="{style.loginButton}"/>
- <gwt:CheckBox ui:field="myCheckBox"/>
- <gwt:Label ui:field="myLabel" text="Remember me"
- styleName="{style.greyText}"/>
- </gwt:HorizontalPanel>
- <gwt:Label ui:field="completionLabel1"
- styleName="{style.greyText}"/>
- <gwt:Label ui:field="completionLabel2"
- styleName="{style.greyText}"/>
- </gwt:VerticalPanel>
+ <div class="loginPanel">
+ <p class="greyText">Login : </p>
+ <gwt:TextBox ui:field="loginBox" styleName="box"/>
+ <p class="greyText">Password : </p>
+ <gwt:PasswordTextBox ui:field="passwordBox" styleName="box"/>
+ <div>
+ <gwt:Button ui:field="buttonSubmit" text="Submit"
+ styleName="loginButton"/>
+ <gwt:CheckBox ui:field="myCheckBox"/>
+ <span class="greyText">Remember me</span>
+ </div>
+
+ <gwt:Label ui:field="completionLabel1" styleName="greyText"/>
+ <gwt:Label ui:field="completionLabel2" styleName="greyText"/>
</div>
</gwt:HTMLPanel>
</ui:UiBinder>
\ No newline at end of file
Modified: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/RefComp.java
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/RefComp.java 2010-11-06 14:12:36 UTC (rev 20)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/RefComp.java 2010-11-18 13:56:42 UTC (rev 21)
@@ -1,18 +1,66 @@
package org.chorem.bonzoms.skills.client;
import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
+import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.RootPanel;
import org.chorem.bonzoms.skills.client.constants.Footer;
+import org.chorem.bonzoms.skills.client.constants.Header;
+import org.chorem.bonzoms.skills.client.constants.Menu;
/**
* User: couteau
* Date: 3 nov. 2010
*/
public class RefComp implements EntryPoint {
+
+ protected static Boolean loggedIn = false;
+
public void onModuleLoad() {
- RootPanel.get("content").add(new Login());
+ RootPanel.get("header").add(new Header());
+ RootPanel.get("menu").add(new Menu());
+ RootPanel.get("content").add(new Home());
RootPanel.get("footer").add(new Footer());
+
+ /** History management **/
+ History.addValueChangeHandler(new ValueChangeHandler<String>() {
+ public void onValueChange(ValueChangeEvent<String> event) {
+ String historyToken = event.getValue();
+
+ //reload Home page
+ if (historyToken.equals("home")) {
+ RootPanel.get("content").clear();
+ RootPanel.get("content").add(new Home());
+ }
+
+ //reload Login page
+ if (historyToken.equals("login")) {
+ RootPanel.get("content").clear();
+ RootPanel.get("content").add(new Login());
+ }
+
+ //Reload mySkills page
+ if (historyToken.equals("mySkills")) {
+ RootPanel.get("content").clear();
+ RootPanel.get("content").add(new MySkills());
+ }
+ }
+ });
+
}
+
+ public static void logIn(){
+ loggedIn = true;
+ }
+
+ public static void logOut(){
+ loggedIn = false;
+ }
+
+ public static boolean isLoggedIn(){
+ return loggedIn;
+ }
}
Modified: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Footer.ui.xml
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Footer.ui.xml 2010-11-06 14:12:36 UTC (rev 20)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Footer.ui.xml 2010-11-18 13:56:42 UTC (rev 21)
@@ -1,11 +1,11 @@
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:gwt='urn:import:com.google.gwt.user.client.ui'>
- <ui:style src="../refcomp.css"/>
-
-
-
<gwt:HTMLPanel>
- <span class="{style.greyText}">Footer</span>
+ <img src="logos/logoCIAM.png" alt="logo CIAM" height="30px" class="footer_img"/>
+ <img src="logos/logoINRA.png" alt="logo INRA" height="30px" class="footer_img"/>
+ <a href="http://www.gnu.org/licenses/agpl.html">
+ <img src="logos/agplv3-88x31.png" alt="AGPLv3 license" height="30px" class="footer_img"/>
+ </a>
</gwt:HTMLPanel>
</ui:UiBinder>
\ No newline at end of file
Modified: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Header.java
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Header.java 2010-11-06 14:12:36 UTC (rev 20)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Header.java 2010-11-18 13:56:42 UTC (rev 21)
@@ -24,62 +24,9 @@
private static final MyUiBinder binder = GWT.create(MyUiBinder.class);
- private static boolean stylesInjected = false;
-
public Header() {
initWidget(binder.createAndBindUi(this));
}
- @UiHandler("buttonLogout")
- void doClickLogout(ClickEvent event) {
-
- RootPanel content = RootPanel.get("content");
- RootPanel header = RootPanel.get("header");
- RootPanel footer = RootPanel.get("footer");
-
- content.clear();
- header.clear();
- footer.clear();
-
- content.add(new Login());
- }
-
- @UiHandler("buttonMySkills")
- void doClickMySkills(ClickEvent event) {
-
-
- RootPanel content = RootPanel.get("content");
-
- content.clear();
-
- content.add(new MySkills());
- }
-
- @UiHandler("buttonAdminSkills")
- void doClickAdminSkills(ClickEvent event) {
-
- Window.alert("Not implemented yet");
- }
-
- @UiHandler("buttonAdminCati")
- void doClickAdminCati(ClickEvent event) {
-
- Window.alert("Not implemented yet");
- }
-
- @UiHandler("buttonAdminServices")
- void doClickAdminServices(ClickEvent event) {
-
- Window.alert("Not implemented yet");
- }
-
- @UiHandler("buttonAdminUsers")
- void doClickAdminUsers(ClickEvent event) {
-
- RootPanel content = RootPanel.get("content");
-
- content.clear();
-
- content.add(new AdminUsers());
- }
+
}
Modified: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Header.ui.xml
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Header.ui.xml 2010-11-06 14:12:36 UTC (rev 20)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Header.ui.xml 2010-11-18 13:56:42 UTC (rev 21)
@@ -1,22 +1,7 @@
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:gwt='urn:import:com.google.gwt.user.client.ui'>
- <ui:style src="../refcomp.css"/>
-
- <gwt:HTMLPanel>
- <gwt:HorizontalPanel verticalAlignment="ALIGN_MIDDLE">
- <gwt:Button ui:field="buttonLogout" text="Logout"
- styleName="{style.loginButton}"/>
- <gwt:Button ui:field="buttonMySkills" text="My Skills"
- styleName="{style.loginButton}"/>
- <gwt:Button ui:field="buttonAdminSkills" text="Admin. Skills"
- styleName="{style.loginButton}"/>
- <gwt:Button ui:field="buttonAdminCati" text="Admin. Cati"
- styleName="{style.loginButton}"/>
- <gwt:Button ui:field="buttonAdminServices" text="Admin. Services"
- styleName="{style.loginButton}"/>
- <gwt:Button ui:field="buttonAdminUsers" text="Admin. Users"
- styleName="{style.loginButton}"/>
- </gwt:HorizontalPanel>
+ <gwt:HTMLPanel styleName="header">
+ Référentiel de compétences
</gwt:HTMLPanel>
</ui:UiBinder>
\ No newline at end of file
Added: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Menu.java
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Menu.java (rev 0)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Menu.java 2010-11-18 13:56:42 UTC (rev 21)
@@ -0,0 +1,115 @@
+package org.chorem.bonzoms.skills.client.constants;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.uibinder.client.UiHandler;
+import com.google.gwt.uibinder.client.UiTemplate;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.Anchor;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.RootPanel;
+import org.chorem.bonzoms.skills.client.AdminUsers;
+import org.chorem.bonzoms.skills.client.Home;
+import org.chorem.bonzoms.skills.client.Login;
+import org.chorem.bonzoms.skills.client.MySkills;
+import org.chorem.bonzoms.skills.client.RefComp;
+
+/**
+ * User: couteau
+ * Date: 10 nov. 2010
+ */
+public class Menu extends Composite {
+ @UiTemplate("Menu.ui.xml")
+ interface MyUiBinder extends UiBinder<Panel, Menu> {
+ }
+
+ private static final MyUiBinder binder = GWT.create(MyUiBinder.class);
+
+ public Menu() {
+ initWidget(binder.createAndBindUi(this));
+ }
+
+ @UiField
+ static Anchor login;
+
+ @UiHandler("home")
+ void doClickHome(ClickEvent event) {
+ RootPanel content = RootPanel.get("content");
+ content.clear();
+ content.add(new Home());
+ History.newItem("home");
+ }
+
+ @UiHandler("login")
+ void doClickLogout(ClickEvent event) {
+
+ if (RefComp.isLoggedIn()) {
+
+ RootPanel content = RootPanel.get("content");
+ content.clear();
+ content.add(new Home());
+ History.newItem("home");
+
+ Menu.logOut();
+ RefComp.logOut();
+
+ } else {
+ RootPanel content = RootPanel.get("content");
+ content.clear();
+ content.add(new Login());
+ History.newItem("login");
+ }
+ }
+
+ @UiHandler("mySkills")
+ void doClickMySkills(ClickEvent event) {
+
+
+ RootPanel content = RootPanel.get("content");
+
+ content.clear();
+
+ content.add(new MySkills());
+ History.newItem("mySkills");
+ }
+
+ @UiHandler("adminSkills")
+ void doClickAdminSkills(ClickEvent event) {
+
+ Window.alert("Not implemented yet");
+ }
+
+ @UiHandler("adminCati")
+ void doClickAdminCati(ClickEvent event) {
+
+ Window.alert("Not implemented yet");
+ }
+
+ @UiHandler("adminServices")
+ void doClickAdminServices(ClickEvent event) {
+
+ Window.alert("Not implemented yet");
+ }
+
+ @UiHandler("adminUsers")
+ void doClickAdminUsers(ClickEvent event) {
+
+ RootPanel content = RootPanel.get("content");
+
+ content.clear();
+
+ content.add(new AdminUsers());
+ }
+
+ public static void logIn(){
+ login.setText("Logout");
+ }
+
+ public static void logOut() {
+ login.setText("Login");
+ }
+}
Added: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Menu.ui.xml
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Menu.ui.xml (rev 0)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/constants/Menu.ui.xml 2010-11-18 13:56:42 UTC (rev 21)
@@ -0,0 +1,15 @@
+<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
+ xmlns:gwt='urn:import:com.google.gwt.user.client.ui'>
+
+ <gwt:HTMLPanel>
+ <ul class="menu">
+ <li><gwt:Anchor ui:field="home" text="Home"/></li>
+ <li><gwt:Anchor ui:field="login" text="Login"/></li>
+ <li><gwt:Anchor ui:field="mySkills" text="My Skills"/></li>
+ <li><gwt:Anchor ui:field="adminSkills" text="Admin. Skills"/></li>
+ <li><gwt:Anchor ui:field="adminCati" text="Admin. Cati"/></li>
+ <li><gwt:Anchor ui:field="adminServices" text="Admin. Services"/></li>
+ <li><gwt:Anchor ui:field="adminUsers" text="Admin. Users"/></li>
+ </ul>
+ </gwt:HTMLPanel>
+</ui:UiBinder>
\ No newline at end of file
Added: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/header.jpg
===================================================================
(Binary files differ)
Property changes on: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/header.jpg
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/agplv3-88x31.png
===================================================================
(Binary files differ)
Property changes on: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/agplv3-88x31.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/logoCIAM.jpg
===================================================================
(Binary files differ)
Property changes on: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/logoCIAM.jpg
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/logoCIAM.png
===================================================================
(Binary files differ)
Property changes on: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/logoCIAM.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/logoINRA.png
===================================================================
(Binary files differ)
Property changes on: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/logos/logoINRA.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/refcomp.css
===================================================================
--- refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/refcomp.css 2010-11-06 14:12:36 UTC (rev 20)
+++ refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/refcomp.css 2010-11-18 13:56:42 UTC (rev 21)
@@ -1,3 +1,14 @@
+* {
+ margin: 0;
+}
+html, body {
+ height: 100%;
+}
+
+#content {
+ margin-left:162px;
+}
+
.greyText {
font-family: "Lucida Grande", Arial, Sans-serif;
color: #778899;
@@ -6,18 +17,18 @@
}
.loginButton {
- border: 1px solid #3399DD;
+ border: 0px solid transparent;
color: #FFFFFF;
- background: #3322DD;
+ background: #C34758;
font-size: 11px;
font-weight: bold;
margin: 0 5px 0 0;
padding: 4px 10px 5px;
- text-shadow: 0 -1px 0 #3399DD;
+ text-shadow: 0 -1px 0 #000000;
}
.box {
- border: 1px solid #AACCEE;
+ border: 1px solid #C34758;
display: block;
font-size: 12px;
margin: 0 0 5px;
@@ -30,7 +41,71 @@
border: 1px none transparent;
color: #778899;
font-size: 11px;
- margin-left: -8px;
- margin-top: 5px;
padding: 6px;
}
+
+.loginPanel {
+ background-color: #EFEFEF;
+ border: 1px none transparent;
+ color: #778899;
+ font-size: 11px;
+ padding: 6px;
+ margin-top:50px;
+ width:250px;
+}
+
+.menu {
+ float:left;
+ text-align:left;
+ width:150px;
+ padding:10px;
+ background-color: #C34758;
+ border: 1px none white;
+ color: #FFFFFF;
+ font-size: 11px;
+ margin-left: -8px;
+ margin-top: 5px;
+ list-style-type: none;
+}
+
+.edito {
+ align:center;
+ max-width:500px;
+ color: #FFFFFF;
+ background-color: #C34758;
+ margin-top:30px;
+}
+
+.header {
+ text-align:center;
+ font-size:3em;
+ background-image: url("header.jpg");
+ color:white;
+ height:102px;
+ padding-top:40px;
+}
+
+.wrapper {
+ min-height: 100%;
+ height: auto !important;
+ height: 100%;
+ margin: 0 auto -30px;
+}
+
+a:hover{
+ cursor:pointer;
+ cursor:hand;
+}
+
+.footer, .push {
+ height: 30px;
+}
+
+#footer_img {
+ margin-left:10px;
+ margin-right:10px;
+}
+
+a {
+ text-decoration:none;
+}
\ No newline at end of file
Modified: refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/public/RefComp.html
===================================================================
--- refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/public/RefComp.html 2010-11-06 14:12:36 UTC (rev 20)
+++ refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/public/RefComp.html 2010-11-18 13:56:42 UTC (rev 21)
@@ -6,7 +6,7 @@
<title>Bonzoms - Skills</title>
- <meta name='gwt:module' content='org.chorem.bonzoms.skills.RefComp'>
+ <meta name='gwt:module' content='org.chorem.bonzoms.skills.RefComp'>
<!-- -->
<!-- This script loads your compiled module. -->
@@ -17,14 +17,18 @@
</head>
<body>
-<div id="header"></div>
+<div class="wrapper">
+ <div id="header"></div>
-<div id="content"></div>
+ <div id="menu"></div>
-<div id="footer"></div>
+ <div id="content" align="center"></div>
+</div>
+<div id="footer" class="footer" align="center"></div>
- <!-- OPTIONAL: include this if you want history support -->
- <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
+
+<!-- History support -->
+<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
</body>
</html>
\ No newline at end of file
1
0
r434 - jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity
by fdesbois@users.nuiton.org 12 Nov '10
by fdesbois@users.nuiton.org 12 Nov '10
12 Nov '10
Author: fdesbois
Date: 2010-11-12 18:56:27 +0100 (Fri, 12 Nov 2010)
New Revision: 434
Url: http://nuiton.org/repositories/revision/sandbox/434
Log:
Add other interesting test
Added:
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/EntityManagerTest.java
Added: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/EntityManagerTest.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/EntityManagerTest.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/EntityManagerTest.java 2010-11-12 17:56:27 UTC (rev 434)
@@ -0,0 +1,197 @@
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import javax.persistence.PersistenceException;
+import javax.persistence.Query;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.sandbox.jsr317.jpa2.test.BaseTest;
+import org.springframework.test.annotation.Rollback;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Created on 18 oct. 2010
+ *
+ * @author fdesbois <florian.desbois(a)wiztivi.com>
+ * @version $Id$
+ */
+public class EntityManagerTest extends BaseTest {
+
+ private static final Log log = LogFactory.getLog(EntityManagerTest.class);
+
+ @After
+ @Transactional
+ @Rollback(false)
+ public void tearDown() throws Exception {
+ userDAO.deleteAll();
+ }
+
+ @Test
+ @Transactional
+ // Use rollback false to see data in database after tests
+// @Rollback(false)
+ public void testCreateUser() {
+
+ // ---- EXECUTE ---- //
+
+ Customer user = new CustomerImpl();
+ user.setLastName("lastName");
+ user.setFirstName("firstName");
+
+ em.persist(user);
+
+ long userId = user.getId();
+ log.debug("Created entity with id " + userId + " at " + user.getCreateDate());
+
+ // Entity is still in the EntityManager
+ Assert.assertTrue(em.contains(user));
+
+ // Flush session to insert the entity before detach it
+ em.flush();
+ // Detach the entity to find it from database
+ em.detach(user);
+ Assert.assertFalse(em.contains(user));
+
+ // Object not attached to the entityManager, a query will be called
+ Customer userFound = em.find(CustomerImpl.class, userId);
+
+ // Check data
+ Assert.assertNotNull(userFound);
+ Assert.assertNotNull(userFound.getId());
+ Assert.assertEquals(0, userFound.getVersion());
+ Assert.assertNotNull(userFound.getCreateDate());
+ Assert.assertNull(userFound.getUpdateDate());
+ Assert.assertEquals("lastName", userFound.getLastName());
+ Assert.assertEquals("firstName", userFound.getFirstName());
+
+ // Update name, check version changed
+ userFound.setLastName("nameChanged");
+ em.merge(userFound);
+
+ // Version not changed before commit (or manual flush)
+ userFound = em.find(CustomerImpl.class, userId);
+ Assert.assertEquals(0, userFound.getVersion());
+ Assert.assertEquals("nameChanged", userFound.getLastName());
+
+ em.flush();
+
+ // Version is updated
+ Assert.assertEquals(1, userFound.getVersion());
+ }
+
+ @Test
+ @Transactional
+ public void testDeleteAllUsers() {
+
+ // ---- PREPARE DATA ---- //
+
+ Customer user1 = new CustomerImpl();
+ user1.setLastName("lastName1");
+ user1.setFirstName("firstName1");
+
+ em.persist(user1);
+
+ Customer user2 = new CustomerImpl();
+ user2.setLastName("lastName2");
+ user2.setFirstName("firstName2");
+
+ em.persist(user2);
+
+ // ---- EXECUTE ---- //
+
+ String readAllCustomersQuery = new StringBuilder("FROM ").append(CustomerImpl.class.getSimpleName()).toString();
+
+ // Create named query to check all existing accounts
+ Query query = em.createQuery(readAllCustomersQuery);
+ Assert.assertEquals(2, query.getResultList().size());
+
+ // Delete all data from AccountImpl
+ userDAO.deleteAll();
+
+ // Create named query to check all existing accounts
+ query = em.createQuery(readAllCustomersQuery);
+ Assert.assertEquals(0, query.getResultList().size());
+ }
+
+ @Test(expected = PersistenceException.class)
+ @Transactional
+ public void testPersistDetachError() {
+
+ Customer user = new CustomerImpl();
+ user.setLastName("lastName");
+ user.setFirstName("firstName");
+
+ em.persist(user);
+
+ em.detach(user);
+
+ em.persist(user);
+ }
+
+ @Test
+ @Transactional
+ public void testMergeDetachSuccess() {
+
+ Customer user = new CustomerImpl();
+ user.setLastName("lastName");
+ user.setFirstName("firstName");
+
+ em.persist(user);
+
+ // Flush session to insert the entity before detach it
+ em.flush();
+
+ em.detach(user);
+
+ em.merge(user);
+ }
+
+ @Test
+ @Transactional
+ public void testAlwaysMerge() {
+
+ Customer user = new CustomerImpl();
+ user.setLastName("lastName");
+ user.setFirstName("firstName");
+
+ Customer userCreated = em.merge(user);
+
+ // Flush session to insert the entity before detach it
+ em.flush();
+
+ em.detach(userCreated);
+
+ em.merge(userCreated);
+ }
+
+ @Test
+ @Transactional
+ public void testUpdateNewBeanWithExistingId() {
+
+ Customer user = new CustomerImpl();
+ user.setLastName("lastName");
+ user.setFirstName("firstName");
+
+ // Persist the user
+ em.persist(user);
+
+ // Create a new bean with existing id
+ Customer userToUpdate = new CustomerImpl();
+ userToUpdate.setId(user.getId());
+ userToUpdate.setLastName("newLastName");
+
+ Customer userUpdated = em.merge(userToUpdate);
+ // All data are updated, so firstName becomes NULL
+ Assert.assertNull(userUpdated.getFirstName());
+ Assert.assertEquals("newLastName", userUpdated.getLastName());
+ // It's the same id
+ Assert.assertEquals(user.getId(), userUpdated.getId());
+ // It's also the same instance because user is not detached
+ Assert.assertEquals(user, userUpdated);
+ }
+
+
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/EntityManagerTest.java
___________________________________________________________________
Added: svn:keywords
+ HeadURL Id Date Revision Author
1
0