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
- 1825 discussions
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
Author: fdesbois
Date: 2010-11-12 18:53:20 +0100 (Fri, 12 Nov 2010)
New Revision: 433
Url: http://nuiton.org/repositories/revision/sandbox/433
Log:
Add customer test for jpa2 using Spring for IoC and Hibernate as implementation : simple copy of some classes from current project where I worked to keep consistance trace.
Added:
jpa2-validation/trunk/jsr317-jpa2/src/
jpa2-validation/trunk/jsr317-jpa2/src/main/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCode.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCodeImpl.java
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/BaseEntity.java
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/Customer.java
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/persistence/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AccessCodeCreator.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AddressCreator.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAO.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImpl.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAO.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImpl.java
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/Search.java
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/SearchImpl.java
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/sample/
jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/sample/DataSampleProvider.java
jpa2-validation/trunk/jsr317-jpa2/src/main/resources/
jpa2-validation/trunk/jsr317-jpa2/src/main/resources/jsr317-spring-context.xml
jpa2-validation/trunk/jsr317-jpa2/src/test/
jpa2-validation/trunk/jsr317-jpa2/src/test/java/
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/entity/
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/
jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImplTest.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/
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/BaseTest.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/jsr317-jpa2/src/test/resources/
jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/
jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml
jpa2-validation/trunk/jsr317-jpa2/src/test/resources/jdbc-test.properties
jpa2-validation/trunk/jsr317-jpa2/src/test/resources/log4j.properties
jpa2-validation/trunk/jsr317-jpa2/src/test/resources/test-context.xml
Modified:
jpa2-validation/trunk/LICENSE.txt
jpa2-validation/trunk/README.txt
jpa2-validation/trunk/changelog.txt
jpa2-validation/trunk/jsr303-validation/LICENSE.txt
jpa2-validation/trunk/jsr303-validation/README.txt
jpa2-validation/trunk/jsr303-validation/changelog.txt
jpa2-validation/trunk/jsr303-validation/pom.xml
jpa2-validation/trunk/jsr317-jpa2/LICENSE.txt
jpa2-validation/trunk/jsr317-jpa2/README.txt
jpa2-validation/trunk/jsr317-jpa2/changelog.txt
jpa2-validation/trunk/jsr317-jpa2/pom.xml
jpa2-validation/trunk/pom.xml
Property changes on: jpa2-validation/trunk/LICENSE.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: jpa2-validation/trunk/README.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: jpa2-validation/trunk/changelog.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: jpa2-validation/trunk/jsr303-validation/LICENSE.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: jpa2-validation/trunk/jsr303-validation/README.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: jpa2-validation/trunk/jsr303-validation/changelog.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: jpa2-validation/trunk/jsr303-validation/pom.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: jpa2-validation/trunk/jsr317-jpa2/LICENSE.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: jpa2-validation/trunk/jsr317-jpa2/README.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: jpa2-validation/trunk/jsr317-jpa2/changelog.txt
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: jpa2-validation/trunk/jsr317-jpa2/pom.xml
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/pom.xml 2010-11-05 12:45:44 UTC (rev 432)
+++ jpa2-validation/trunk/jsr317-jpa2/pom.xml 2010-11-12 17:53:20 UTC (rev 433)
@@ -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>
@@ -16,11 +17,93 @@
<dependencies>
+ <!--<dependency>-->
+ <!--<groupId>org.nuiton</groupId>-->
+ <!--<artifactId>nuiton-utils</artifactId>-->
+ <!--<version>1.4.2</version>-->
+ <!--</dependency>-->
+
+ <!-- SPRING -->
<dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
+ <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-jdbc</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-tx</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>
+
+ <!-- LOGGING -->
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+
+ <!-- TESTS -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
+
+ <!-- Hibernate implementation used for tests -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+
+ <!-- Testing -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ </dependency>
+
</dependencies>
<!-- ************************************************************* -->
@@ -31,13 +114,13 @@
<description>JPA2 tests</description>
<inceptionYear>2010</inceptionYear>
<url>http://maven-site.nuiton.org/${project.artifactId}</url>
-
+
<!-- ************************************************************* -->
<!-- *** Build Settings ****************************************** -->
<!-- ************************************************************* -->
<packaging>jar</packaging>
-
+
<build>
<resources>
@@ -50,14 +133,70 @@
</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>
+
+ <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>
+ <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>
+
+ </plugins>
+
</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>
+ <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>
Property changes on: jpa2-validation/trunk/jsr317-jpa2/pom.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCode.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCode.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCode.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,28 @@
+/**
+ *
+ */
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import java.io.Serializable;
+
+/**
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public interface AccessCode extends Serializable {
+
+ String PROPERTY_LOGIN = "login";
+
+ String PROPERTY_PASSWORD = "password";
+
+ /**
+ * @param login the login to set
+ */
+ public void setLogin(String login);
+
+ /**
+ * @param password the password to set
+ */
+ public void setPassword(String password);
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCode.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCodeImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCodeImpl.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCodeImpl.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,51 @@
+/**
+ *
+ */
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import javax.persistence.Embeddable;
+
+/**
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+@Embeddable
+public class AccessCodeImpl implements AccessCode {
+
+ public static final long serialVersionUID = 1L;
+
+ /**
+ * the login
+ */
+ private String login;
+
+ /**
+ * the password
+ */
+ private String password;
+
+ /**
+ * @param login the login to set
+ */
+ @Override
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ public String getLogin() {
+ return login;
+ }
+
+ /**
+ * @param password the password to set
+ */
+ @Override
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AccessCodeImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,74 @@
+/**
+ *
+ */
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import java.io.Serializable;
+
+/**
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public interface Address extends Serializable {
+
+ String PROPERTY_STREET = "street";
+
+ String PROPERTY_STREET_2 = "street2";
+
+ String PROPERTY_ZIP_CODE = "zipCode";
+
+ String PROPERTY_TOWN = "town";
+
+ String PROPERTY_COUNTRY = "country";
+
+ /**
+ * @return the street
+ */
+ public String getStreet();
+
+ /**
+ * @param street the street to set
+ */
+ public void setStreet(String street);
+
+ /**
+ * @return the street2
+ */
+ public String getStreet2();
+
+ /**
+ * @param street2 the street2 to set
+ */
+ public void setStreet2(String street2);
+
+ /**
+ * @return the zipCode
+ */
+ public String getZipCode();
+
+ /**
+ * @param zipCode the zipCode to set
+ */
+ public void setZipCode(String zipCode);
+
+ /**
+ * @return the town
+ */
+ public String getTown();
+
+ /**
+ * @param town the town to set
+ */
+ public void setTown(String town);
+
+ /**
+ * @return the country
+ */
+ public String getCountry();
+
+ /**
+ * @param country the country to set
+ */
+ public void setCountry(String country);
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Address.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,128 @@
+/**
+ *
+ */
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import javax.persistence.Embeddable;
+
+/**
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+@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;
+ }
+
+ /**
+ * @param street the street to set
+ */
+ @Override
+ public void setStreet(String street) {
+ this.street = street;
+ }
+
+ /**
+ * @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
+ public String getCountry() {
+ return country;
+ }
+
+ /**
+ * @param country the country to set
+ */
+ @Override
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/AddressImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntity.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntity.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntity.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,51 @@
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Created on 18 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public interface BaseEntity extends Serializable {
+
+ String PROPERTY_ID = "id";
+
+ String PROPERTY_VERSION = "version";
+
+ String PROPERTY_UPDATE_DATE = "updateDate";
+
+ String PROPERTY_CREATE_DATE = "createDate";
+
+ /**
+ * Id of the entity
+ *
+ * @return the id of the entity.
+ */
+ Long getId();
+
+ void setId(Long id);
+
+ /**
+ * Version of the entity, i.e, the number of time it was modified.
+ *
+ * @return the id of the entity.
+ */
+ int getVersion();
+
+ /**
+ * Last date when entity was updated.
+ *
+ * @return the update date of the entity.
+ */
+ Date getUpdateDate();
+
+ /**
+ * Date when entity was created.
+ *
+ * @return the create date of the entity.
+ */
+ Date getCreateDate();
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntity.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntityImpl.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,73 @@
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import javax.persistence.EntityListeners;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Version;
+import java.util.Date;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.UpdateTechnicalFieldListener;
+
+/**
+ * Created on 18 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+@MappedSuperclass
+(a)EntityListeners(UpdateTechnicalFieldListener.class)
+public abstract class BaseEntityImpl implements BaseEntity {
+
+ private Long id;
+
+ private int version;
+
+ private Date createDate;
+
+ private Date updateDate;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Override
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @Version
+ @Override
+ public int getVersion() {
+ return version;
+ }
+
+ public void setVersion(int version) {
+ this.version = version;
+ }
+
+ @Temporal(TemporalType.DATE)
+ @Override
+ public Date getCreateDate() {
+ return createDate;
+ }
+
+ public void setCreateDate(Date createDate) {
+ this.createDate = createDate;
+ }
+
+ @Temporal(TemporalType.DATE)
+ @Override
+ public Date getUpdateDate() {
+ return updateDate;
+ }
+
+ public void setUpdateDate(Date updateDate) {
+ this.updateDate = updateDate;
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/BaseEntityImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,95 @@
+/**
+ *
+ */
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+/**
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public interface Customer extends BaseEntity {
+
+ String PROPERTY_FIRST_NAME = "firstName";
+
+ String PROPERTY_LAST_NAME = "lastName";
+
+ String PROPERTY_ADDRESS = "address";
+
+ String PROPERTY_PHONE = "phone";
+
+ String PROPERTY_CELLPHONE = "cellphone";
+
+ String PROPERTY_EMAIL = "email";
+
+ String PROPERTY_ACCESS_CODE = "accessCode";
+
+ /**
+ * @return the firstName
+ */
+ public String getFirstName() ;
+
+ /**
+ * @param firstName the firstName to set
+ */
+ public void setFirstName(String firstName);
+
+ /**
+ * @return the lastName
+ */
+ public String getLastName();
+
+ /**
+ * @param lastName the lastName to set
+ */
+ public void setLastName(String lastName);
+
+ /**
+ * @return the address
+ */
+ public Address getAddress();
+
+ /**
+ * @param address the address to set
+ */
+ public void setAddress(Address address);
+
+ /**
+ * @return the phone
+ */
+ public String getPhone() ;
+
+ /**
+ * @param phone the phone to set
+ */
+ public void setPhone(String phone) ;
+
+ /**
+ * @return the cellphone
+ */
+ public String getCellphone() ;
+
+ /**
+ * @param cellphone the cellphone to set
+ */
+ public void setCellphone(String cellphone) ;
+
+ /**
+ * @return the email
+ */
+ public String getEmail();
+
+ /**
+ * @param email the email to set
+ */
+ public void setEmail(String email) ;
+
+ /**
+ * @return the accessCode
+ */
+ public AccessCode getAccessCode();
+
+ /**
+ * @param accessCode the accessCode to set
+ */
+ public void setAccessCode(AccessCode accessCode) ;
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/Customer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,176 @@
+/**
+ *
+ */
+package org.nuiton.sandbox.jsr317.jpa2.entity;
+
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.JpaHelper;
+
+/**
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+@Entity
+@Table(name = "CUSTOMER")
+public class CustomerImpl extends BaseEntityImpl implements Customer {
+
+ public static final long serialVersionUID = 1L;
+
+ /**
+ * the firstName
+ */
+ private String firstName;
+
+ /**
+ * the lastName
+ */
+ private String lastName;
+
+ /**
+ * the address
+ */
+ private Address address;
+
+ /**
+ * the phone number
+ */
+ private String phone;
+
+ /**
+ * the cellphone number
+ */
+ private String cellphone;
+
+ /**
+ * the email address
+ */
+ private String email;
+
+ /**
+ * the customer's access code
+ */
+ private AccessCode accessCode;
+
+ /**
+ * Default constructor : constructs an empty Customer
+ */
+ public CustomerImpl() {
+ }
+
+ /**
+ * @return the firstname
+ */
+ @Override
+ public String getFirstName() {
+ return firstName;
+ }
+
+ /**
+ * @param firstName the firstName to set
+ */
+ @Override
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ /**
+ * @return the lastname
+ */
+ @Override
+ public String getLastName() {
+ return lastName;
+ }
+
+ /**
+ * @param lastName the lastName to set
+ */
+ @Override
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ /**
+ * @return the address
+ */
+ @Embedded
+ @Override
+ public AddressImpl getAddress() {
+ return JpaHelper.safeEmbeddableCast(address, AddressImpl.class);
+ }
+
+ /**
+ * @param address the address to set
+ */
+ @Override
+ public void setAddress(Address address) {
+ this.address = address;
+ }
+
+ /**
+ * @return the phone
+ */
+ @Override
+ public String getPhone() {
+ return phone;
+ }
+
+ /**
+ * @param phone the phone to set
+ */
+ @Override
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ /**
+ * @return the cellphone
+ */
+ @Override
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ /**
+ * @param cellphone the cellphone to set
+ */
+ @Override
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone;
+ }
+
+ /**
+ * @return the email
+ */
+ @Override
+ public String getEmail() {
+ return email;
+ }
+
+ /**
+ * @param email the email to set
+ */
+ @Override
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ /**
+ * @return the accessCode
+ */
+ @Embedded
+ @Override
+ public AccessCodeImpl getAccessCode() {
+ return JpaHelper.safeEmbeddableCast(accessCode, AccessCodeImpl.class);
+ }
+
+ /**
+ * @param accessCode the accessCode to set
+ */
+ @Override
+ public void setAccessCode(AccessCode accessCode) {
+ this.accessCode = accessCode;
+ }
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/entity/CustomerImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AccessCodeCreator.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AccessCodeCreator.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AccessCodeCreator.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,17 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import org.nuiton.sandbox.jsr317.jpa2.entity.AccessCode;
+
+/**
+ * Created on 22 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public interface AccessCodeCreator {
+
+ /**
+ * @return a new instance of AccessCode used to be set in different elements related to DAO.
+ */
+ AccessCode newInstanceAccessCode();
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AccessCodeCreator.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AddressCreator.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AddressCreator.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AddressCreator.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,17 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import org.nuiton.sandbox.jsr317.jpa2.entity.Address;
+
+/**
+ * Created on 22 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public interface AddressCreator {
+
+ /**
+ * @return a new instance of Address used to be set in different elements related to DAO.
+ */
+ Address newInstanceAddress();
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/AddressCreator.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAO.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAO.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAO.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,94 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import javax.persistence.EntityManager;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * BaseDAO is the interface to be used by all DAO.
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ * @param <E> the type of data
+ * @param <K> the key of data
+ */
+public interface BaseDAO<E, K extends Serializable> {
+
+ /**
+ * Return a new instance of the entity.
+ *
+ * @return a new instance of the entity
+ */
+ E newInstance();
+
+ /**
+ * Create the {@code element}, i.e, persist it. The {@code element} need to be instantiated using {@link #newInstance()}.
+ *
+ * @param element the object to create.
+ * @see EntityManager#persist(Object)
+ */
+ void create(E element);
+
+ /**
+ * Update the {@code element}. If element is not present in session, it will be retrieved from database and attached to it. The update
+ * is directly executed (flushed) to have proper data in resulting object.
+ *
+ * @param element the object to update
+ * @return the object updated attached to the session
+ * @see EntityManager#merge(Object)
+ */
+ E update(E element);
+
+ /**
+ * Save the {@code element} will create it if no id is defined or update it otherwise. Updated or created element will be returned as result.
+ *
+ * @param element Element to save
+ * @return the element saved this way
+ */
+ E save(E element);
+
+ /**
+ * Remove the {@code element}. The reference is still available after removal but the next read will return a null value using the element id.
+ *
+ * @param element the object to remove
+ */
+ void delete(E element);
+
+ /**
+ * Read an element using it's {@code id}.
+ *
+ * @param id Id of the element to read
+ * @return the element if found or null otherwise
+ */
+ E read(K id);
+
+ /**
+ * Return a list of all existing elements
+ *
+ * @return a list of all elements (never null)
+ */
+ List<E> readAll();
+
+ /**
+ * Return the number of existing elements.
+ *
+ * @return the number of existing elements
+ */
+ int count();
+
+ /**
+ * Clear the current session. Needed after some error occurs.
+ */
+ void clearSession();
+
+ /**
+ * Flush the current session. Needed to manually commit the session.
+ */
+ void flushSession();
+
+ /**
+ * Delete all existing elements of E type
+ */
+ void deleteAll();
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAO.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImpl.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImpl.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,356 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.NonUniqueResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Path;
+import javax.persistence.criteria.Root;
+import java.io.Serializable;
+import java.util.List;
+import org.nuiton.sandbox.jsr317.jpa2.entity.BaseEntity;
+import org.nuiton.sandbox.jsr317.jpa2.entity.BaseEntityImpl;
+
+/**
+ * This class provides basic CRUD mechanism.
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ * @param <C> the Entity contract (interface)
+ * @param <E> the Entity class for JPA
+ */
+public abstract class BaseDAOImpl<C extends BaseEntity, E extends BaseEntityImpl, K extends Serializable> implements BaseDAO<C, K> {
+
+ public enum SaveStrategy {
+ PERSIST(true, false), PERSIST_FLUSH(true, true), MERGE(false, false), MERGE_FLUSH(false, true);
+
+ boolean flush;
+
+ boolean persist;
+
+ SaveStrategy(boolean persist, boolean flush) {
+ this.flush = flush;
+ this.persist = persist;
+ }
+
+ public boolean isFlush() {
+ return flush;
+ }
+
+ public boolean isPersist() {
+ return persist;
+ }
+ }
+
+ protected abstract class QueryWrapper<E extends BaseEntity, R> {
+
+ protected CriteriaBuilder builder;
+
+ protected CriteriaQuery<R> criteria;
+
+ protected Root<E> root;
+
+ protected TypedQuery<R> query;
+
+ public Root<E> root() {
+ if (root == null) {
+ root = criteria().from(entityClass());
+ }
+ return root;
+ }
+
+ public CriteriaQuery<R> criteria() {
+ if (criteria == null) {
+ criteria = builder().createQuery(resultClass());
+ }
+ return criteria;
+ }
+
+ public CriteriaBuilder builder() {
+ if (builder == null) {
+ builder = em.getCriteriaBuilder();
+ }
+ return builder;
+ }
+
+ public TypedQuery<R> computeCriteria() {
+ return em.createQuery(criteria);
+ }
+
+ public TypedQuery<R> query() {
+ if (query == null) {
+ query = computeCriteria();
+ }
+ return query;
+ }
+
+ public <T> void whereEqual(Path<? extends T> propertyPath, T value) {
+ criteria().where(
+ builder().equal(
+ propertyPath,
+ value
+ )
+ );
+ }
+
+ public <T> void whereEqual(String property, T value) {
+ whereEqual(root().<T>get(property), value);
+ }
+
+ @SuppressWarnings({"unchecked"})
+ protected Class<E> entityClass() {
+ // Use entityClass defined in DAO
+ return (Class<E>) getEntityClass();
+ }
+
+ protected abstract Class<R> resultClass();
+
+ }
+
+ protected class BaseQueryWrapper<C extends BaseEntity, E extends BaseEntityImpl> extends QueryWrapper<E, E> {
+
+ @Override
+ protected Class<E> resultClass() {
+ return entityClass();
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public List<C> listResult() {
+ List<E> results = query().getResultList();
+ return (List<C>) results;
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public C singleResult() throws NonUniqueResultException, NoResultException {
+ E result = query().getSingleResult();
+ return (C) result;
+ }
+ }
+
+ protected class CountQueryWrapper<E extends BaseEntity> extends QueryWrapper<E, Long> {
+
+ public int count() {
+ criteria().select(builder.count(root()));
+ return executeCount();
+ }
+
+ public int countDistinct() {
+ criteria().select(builder.countDistinct(root()));
+ return executeCount();
+ }
+
+ protected int executeCount() {
+ // Create the query and retrieve the single result corresponding to the count value
+ TypedQuery<Long> query = computeCriteria();
+ return query.getSingleResult().intValue();
+ }
+
+ @Override
+ protected Class<Long> resultClass() {
+ return Long.class;
+ }
+ }
+
+ /**
+ * Memorizes the Entity Class.
+ */
+ private Class<E> entityClass;
+
+ /**
+ * Private EntityManager through Hibernate implementation.
+ */
+ @PersistenceContext
+ protected EntityManager em;
+
+ /**
+ * The SaveStrategy defined how the save method should be executed, look at {@link #save(BaseEntity)} implementation
+ */
+ protected SaveStrategy saveStrategy;
+
+ /**
+ * Constructor to be called by siblings.
+ */
+ public BaseDAOImpl() {
+ entityClass = getEntityClass();
+ saveStrategy = SaveStrategy.PERSIST;
+ }
+
+ public SaveStrategy getSaveStrategy() {
+ return saveStrategy;
+ }
+
+ public void setSaveStrategy(SaveStrategy saveStrategy) {
+ this.saveStrategy = saveStrategy;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void create(C element) {
+ em.persist(element);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public C update(C entity) {
+ C result = em.merge(entity);
+ em.flush();
+ return result;
+ }
+
+ /**
+ * Save depends on {@link #saveStrategy} defined. By default, it's the {@link SaveStrategy#PERSIST_FLUSH} one.
+ */
+ @Override
+ public C save(C element) {
+ // Keep instance by default
+ C result = element;
+
+ // Type of save, if persist the element need to be in session for an update
+ if (saveStrategy.isPersist()) {
+ em.persist(element);
+ } else {
+ result = em.merge(element);
+ }
+
+ // Explicit flush
+ if (saveStrategy.isFlush()) {
+ em.flush();
+ }
+
+ return result;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void delete(final C entity) {
+ if (entity != null) {
+ em.remove(entity);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @SuppressWarnings({"unchecked"})
+ @Override
+ public C read(final K id) {
+ if (id == null) {
+ return null;
+ }
+ return (C) em.find(entityClass, id);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public List<C> readAll() {
+
+ BaseQueryWrapper<C, E> query = new BaseQueryWrapper<C, E>();
+
+ query.criteria().select(query.root());
+
+ List<C> results = query.listResult();
+
+ return results;
+ }
+
+ protected List<C> readAllByProperty(String property, Object value) {
+
+ BaseQueryWrapper<C, E> query = new BaseQueryWrapper<C, E>();
+
+ query.whereEqual(property, value);
+
+ List<C> results = query.listResult();
+
+ return results;
+ }
+
+ @SuppressWarnings({"unchecked"})
+ protected List<C> readAllByQuery(TypedQuery<E> query) {
+ List<E> results = query.getResultList();
+ return (List<C>) results;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int count() {
+ CountQueryWrapper<E> query = new CountQueryWrapper<E>();
+
+ return query.count();
+ }
+
+ /**
+ * Read first resulting entity from an input {@code query}.
+ *
+ * @param query Input query
+ * @return the resulting first entity
+ */
+ protected static <T> T readFirst(TypedQuery<T> query) {
+ List<T> resultList = query.getResultList();
+ if (!resultList.isEmpty()) {
+ return resultList.get(0);
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public void clearSession() {
+ em.clear();
+ }
+
+ @Override
+ public void flushSession() {
+ em.flush();
+ }
+
+ @Override
+ public void deleteAll() {
+ List<C> elements = readAll();
+ for (C element : elements) {
+ delete(element);
+ }
+ }
+
+ /**
+ * Set the limit of the {@code query} depends on {@code search} parameters.
+ *
+ * @param query Query to add limit parameters
+ * @param search Search containing limit parameters
+ */
+ protected void setSearchLimit(TypedQuery<?> query, Search search) {
+ int start = 0;
+ if (search.getStartIndex() != null) {
+ start = search.getStartIndex();
+ query.setFirstResult(start);
+ }
+
+ if (search.getEndIndex() != null) {
+ query.setMaxResults(search.getEndIndex() - start + 1);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public abstract C newInstance();
+
+ /**
+ * @return the entityClass to manipulate as persistent object (defined in mapping).
+ */
+ protected abstract Class<E> getEntityClass();
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAO.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAO.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAO.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,12 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
+
+/**
+ * Created on 22 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public interface CustomerDAO extends BaseDAO<Customer, Long>, AddressCreator, AccessCodeCreator {
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAO.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImpl.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImpl.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,39 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import org.nuiton.sandbox.jsr317.jpa2.entity.AccessCode;
+import org.nuiton.sandbox.jsr317.jpa2.entity.AccessCodeImpl;
+import org.nuiton.sandbox.jsr317.jpa2.entity.Address;
+import org.nuiton.sandbox.jsr317.jpa2.entity.AddressImpl;
+import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
+import org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Created on 22 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+@Repository
+public class CustomerDAOImpl extends BaseDAOImpl<Customer, CustomerImpl, Long> implements CustomerDAO {
+
+ @Override
+ public Customer newInstance() {
+ return new CustomerImpl();
+ }
+
+ @Override
+ protected Class<CustomerImpl> getEntityClass() {
+ return CustomerImpl.class;
+ }
+
+ @Override
+ public Address newInstanceAddress() {
+ return new AddressImpl();
+ }
+
+ @Override
+ public AccessCode newInstanceAccessCode() {
+ return new AccessCodeImpl();
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfig.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,79 @@
+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();
+ }
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfig.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfigSource.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,44 @@
+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();
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaConfigSource.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaHelper.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,50 @@
+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);
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/JpaHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/Search.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/Search.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/Search.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,26 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import java.io.Serializable;
+
+/**
+ * Created on 2 nov. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public interface Search extends Serializable {
+
+ String getOrderBy();
+
+ void setOrderBy(String orderBy);
+
+ Integer getStartIndex();
+
+ void setStartIndex(Integer startIndex);
+
+ Integer getEndIndex();
+
+ /** @deprecated FIXME-fdesbois-2010-11-09 : criteria api need maxResults param so nbElementsByPage in PaginatedSearch */
+ @Deprecated
+ void setEndIndex(Integer endIndex);
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/Search.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/SearchImpl.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/SearchImpl.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/SearchImpl.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,48 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+/**
+ * Created on 2 nov. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public class SearchImpl implements Search {
+
+ public static final long serialVersionUID = 1L;
+
+ private String orderBy;
+
+ private Integer startIndex;
+
+ private Integer endIndex;
+
+ @Override
+ public String getOrderBy() {
+ return orderBy;
+ }
+
+ @Override
+ public void setOrderBy(String orderBy) {
+ this.orderBy = orderBy;
+ }
+
+ @Override
+ public Integer getStartIndex() {
+ return startIndex;
+ }
+
+ @Override
+ public void setStartIndex(Integer startIndex) {
+ this.startIndex = startIndex;
+ }
+
+ @Override
+ public Integer getEndIndex() {
+ return endIndex;
+ }
+
+ @Override
+ public void setEndIndex(Integer endIndex) {
+ this.endIndex = endIndex;
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/SearchImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/UpdateTechnicalFieldListener.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,59 @@
+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);
+ }
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/persistence/UpdateTechnicalFieldListener.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/sample/DataSampleProvider.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/sample/DataSampleProvider.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/sample/DataSampleProvider.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,108 @@
+package org.nuiton.sandbox.jsr317.jpa2.sample;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.sandbox.jsr317.jpa2.entity.BaseEntity;
+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;
+
+/**
+ * Provider of data sample usefull for tests or having usable data in the database. Defined as a {@link Service} to be injected using Spring
+ * {@link Autowired} annotation.
+ * <p />
+ * Created on 3 nov. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+@Service
+public class DataSampleProvider {
+
+ private static final Log logger = LogFactory.getLog(DataSampleProvider.class);
+
+ /**
+ * Extension of {@link LinkedHashMap} with getter on index. Use {@link #get(int)} method to retrieve element at provided index.
+ *
+ * @param <K> Key type of the Map
+ * @param <O> Object type of the Map
+ */
+ protected class IndexedMap<K, O extends BaseEntity> extends LinkedHashMap<K, O> {
+
+ public O get(int index) {
+ int i = 0;
+ for (O o : values()) {
+ if (i == index) {
+ return o;
+ }
+ i++;
+ }
+ return null;
+ }
+
+ @Override
+ public O put(K key, O value) {
+ if (logger.isTraceEnabled()) {
+ logger.trace("Add " + value.getClass().getSimpleName() + " with id = " + value.getId() +
+ " _ @" + Integer.toHexString(value.hashCode()));
+ }
+ return super.put(key, value);
+ }
+ }
+
+ @Autowired
+ protected CustomerDAO customerDAO;
+
+ protected IndexedMap<Long, Customer> customers = new IndexedMap<Long, Customer>();
+
+ public void createAllData() {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("#### SAMPLE INSERT START ####");
+ }
+
+ createCustomers();
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("#### SAMPLE INSERT FINISHED ####");
+ }
+ }
+
+ public void deleteAllData() {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("#### SAMPLE DELETE START ####");
+ }
+
+ customerDAO.deleteAll();
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("#### SAMPLE DELETE FINISHED ####");
+ }
+ }
+
+ // ---- CREATORS ---- //
+
+ public void createCustomers() {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("CREATE SAMPLE for " + Customer.class.getName());
+ }
+
+ customers.clear();
+ }
+
+ public Customer getCustomer(int index) {
+ if (customers.isEmpty()) {
+ createCustomers();
+ }
+ return customers.get(index);
+ }
+
+ public Map<Long, Customer> getCustomers() {
+ return customers;
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/java/org/nuiton/sandbox/jsr317/jpa2/sample/DataSampleProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/main/resources/jsr317-spring-context.xml
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/main/resources/jsr317-spring-context.xml (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/main/resources/jsr317-spring-context.xml 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,14 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ 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/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+
+
+ <!-- Component scanner for DAOS : detected from @Repository annotation -->
+ <context:component-scan base-package="org.nuiton.sandbox.jsr317.jpa2.persistence" />
+
+</beans>
\ No newline at end of file
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/main/resources/jsr317-spring-context.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImplTest.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImplTest.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImplTest.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,243 @@
+package org.nuiton.sandbox.jsr317.jpa2.persistence;
+
+import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
+import org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.BaseDAOImpl.SaveStrategy;
+import org.nuiton.sandbox.jsr317.jpa2.test.BaseTest;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Test methods in BaseDAO. The CustomerDAO will be used as implementation of abstract class BaseDAOImpl.
+ *
+ * Created on 20 oct. 2010
+ *
+ * @author fdesbois <florian.desbois(a)codelutin.com>
+ * @version $Id$
+ */
+public class BaseDAOImplTest extends BaseTest {
+
+ private static final Log log = LogFactory.getLog(BaseDAOImplTest.class);
+
+ @Override
+ protected boolean autoDataEnabled() {
+ return true;
+ }
+
+ @Test
+ @Transactional
+ public void testCreate() throws Exception {
+
+ // ---- PREPARE DATA ---- //
+ Customer user = new CustomerImpl();
+ user.setLastName("createLastName");
+ user.setFirstName("createFirstName");
+
+ // ---- EXECUTE ---- //
+ log.info("CREATE user " + user);
+ userDAO.create(user);
+ log.debug("AFTER CREATE user " + user);
+
+ // ---- CHECK DATA ---- //
+ Assert.assertNotNull(user.getId());
+ Assert.assertNotNull(user.getCreateDate());
+ Assert.assertNull(user.getUpdateDate());
+ Assert.assertEquals(0, user.getVersion());
+
+ Customer userFound = em.find(CustomerImpl.class, user.getId());
+ Assert.assertNotNull(userFound);
+ Assert.assertEquals("createLastName", userFound.getLastName());
+ Assert.assertEquals("createFirstName", userFound.getFirstName());
+ }
+
+ @Test
+ @Transactional
+ public void testUpdate() throws Exception {
+
+ // ---- PREPARE DATA ---- //
+ Customer user = new CustomerImpl();
+ user.setLastName("updateLastName");
+ user.setFirstName("updateFirstName");
+
+ em.persist(user);
+ em.flush();
+ em.detach(user);
+
+ // ---- EXECUTE ---- //
+ user.setLastName("nameUpdated");
+
+ log.info("UPDATE user " + user);
+ Customer userUpdated = userDAO.update(user);
+ log.debug("AFTER UPDATE user " + userUpdated);
+
+ // ---- CHECK DATA ---- //
+ Assert.assertFalse(em.contains(user));
+ Assert.assertTrue(em.contains(userUpdated));
+ Assert.assertNotNull(userUpdated.getUpdateDate());
+ Assert.assertEquals(1, userUpdated.getVersion());
+ Assert.assertEquals("nameUpdated", userUpdated.getLastName());
+ }
+
+ @Test
+ @Transactional
+ public void testSave() throws Exception {
+
+ // ---- PREPARE DATA ---- //
+ Customer user = new CustomerImpl();
+ user.setLastName("saveLastName");
+ user.setFirstName("saveFirstName");
+
+ // ---- EXECUTE ---- //
+
+ BaseDAOImpl daoImpl = (BaseDAOImpl) userDAO;
+
+ SaveStrategy strategy = daoImpl.getSaveStrategy();
+
+ // ## CREATE ## //
+ Customer userCreated = userDAO.save(user);
+
+ if (!strategy.isPersist()) {
+ // Same as a create instead of returning the instance instead of modifying the input one
+ Assert.assertNotSame(user, userCreated);
+ } else {
+ Assert.assertEquals(user, userCreated);
+ }
+
+ Assert.assertNotNull(userCreated.getId());
+ Assert.assertNotNull(userCreated.getCreateDate());
+ Assert.assertNull(userCreated.getUpdateDate());
+ Assert.assertEquals(0, userCreated.getVersion());
+
+ // ## UPDATE ## //
+ userCreated.setLastName("updateLastName");
+ Customer userUpdated = userDAO.save(userCreated);
+
+ // Same instance because not detached from session
+ Assert.assertEquals(userUpdated, userCreated);
+ if (strategy.isFlush()) {
+ Assert.assertNotNull(userUpdated.getUpdateDate());
+ Assert.assertEquals(1, userUpdated.getVersion());
+
+ } else {
+ Assert.assertNull(userUpdated.getUpdateDate());
+ Assert.assertEquals(0, userUpdated.getVersion());
+ // need explicit Flush
+ userDAO.flushSession();
+ }
+
+ // Other update no change, no version increment
+ Customer userUpdatedTwice = userDAO.save(userUpdated);
+ Assert.assertEquals(1, userUpdatedTwice.getVersion());
+ }
+
+
+ @Test
+ @Transactional
+ public void testDelete() throws Exception {
+
+ // ---- PREPARE DATA ---- //
+ Customer user = new CustomerImpl();
+ user.setLastName("deleteLastName");
+ user.setFirstName("deleteFirstName");
+
+ em.persist(user);
+
+ // ---- EXECUTE ---- //
+ log.info("DELETE account " + user);
+ userDAO.delete(user);
+ log.debug("AFTER DELETE account " + user);
+
+ // ---- CHECK DATA ---- //
+ Customer accountFound = em.find(CustomerImpl.class, user.getId());
+ Assert.assertNull(accountFound);
+ }
+
+ @Test
+ @Transactional
+ public void testRead() throws Exception {
+
+ // ---- PREPARE DATA ---- //
+ Customer account = new CustomerImpl();
+ account.setLastName("readLastName");
+ account.setFirstName("readFirstName");
+
+ em.persist(account);
+
+ // ---- EXECUTE ---- //
+ log.info("READ account " + account);
+ Customer accountFound = userDAO.read(account.getId());
+
+ // ---- CHECK DATA ---- //
+ Assert.assertNotNull(accountFound);
+ Assert.assertEquals("readLastName", accountFound.getLastName());
+ }
+
+ @Test
+ @Transactional
+ public void testReadAll() throws Exception {
+
+ // ---- PREPARE DATA ---- //
+ Customer user1 = new CustomerImpl();
+ user1.setLastName("readAllLastName1");
+ user1.setFirstName("readAllFirstName1");
+
+ em.persist(user1);
+
+ Customer user2 = new CustomerImpl();
+ user2.setLastName("readAllLastName2");
+ user2.setFirstName("readAllFirstName2");
+
+ em.persist(user2);
+
+ // ---- EXECUTE ---- //
+ log.info("READ_ALL accounts");
+ List<Customer> users = userDAO.readAll();
+
+ // ---- CHECK DATA ---- //
+ Assert.assertEquals(2, users.size());
+ Assert.assertTrue(users.contains(user1));
+ Assert.assertTrue(users.contains(user2));
+ }
+
+ @Test
+ @Transactional
+ public void testCount() throws Exception {
+
+ // ---- PREPARE DATA ---- //
+ Customer user1 = new CustomerImpl();
+ user1.setLastName("readAllLastName1");
+ user1.setFirstName("readAllFirstName1");
+
+ em.persist(user1);
+
+ Customer user2 = new CustomerImpl();
+ user2.setLastName("readAllLastName2");
+ user2.setFirstName("readAllFirstName2");
+
+ em.persist(user2);
+
+ // ---- EXECUTE ---- //
+ log.info("COUNT accounts");
+ int count = userDAO.count();
+
+ // ---- CHECK DATA ---- //
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ @Transactional
+ public void testNewInstance() throws Exception {
+
+ // ---- EXECUTE ---- //
+ log.info("NEW_INSTANCE account");
+ Customer user = userDAO.newInstance();
+
+ // ---- CHECK DATA ---- //
+ Assert.assertNotNull(user);
+ Assert.assertEquals(CustomerImpl.class, user.getClass());
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/BaseDAOImplTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,65 @@
+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.entity.Address;
+import org.nuiton.sandbox.jsr317.jpa2.entity.Customer;
+import org.nuiton.sandbox.jsr317.jpa2.test.AddressFake;
+import org.nuiton.sandbox.jsr317.jpa2.test.BaseTest;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Created on 22 oct. 2010
+ *
+ * @author fdesbois <florian.desbois(a)codelutin.com>
+ * @version $Id$
+ */
+public class CustomerDAOImplTest extends BaseTest {
+
+ @Override
+ protected boolean autoDataEnabled() {
+ return true;
+ }
+
+ @Test
+ @Transactional
+ public void testCreateCustomerWithAddress() {
+
+ Customer user = userDAO.newInstance();
+ user.setLastName("createCustomerWithAddressLastName");
+ user.setFirstName("createCustomerWithAddressFirstName");
+
+ Address address = userDAO.newInstanceAddress();
+ address.setStreet("createStreet");
+ address.setZipCode("40000");
+
+ user.setAddress(address);
+
+ Assert.assertNotNull(user.getAddress());
+ 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(expected = PersistenceException.class)
+ public void testCreateCustomerWithFakeAddressImplementation() {
+
+ Customer user = userDAO.newInstance();
+ user.setLastName("createCustomerWithFakeAddressLastName");
+ user.setFirstName("createCustomerWithFakeAddressFirstName");
+
+ Address address = new AddressFake();
+
+ address.setStreet("fakeStreet");
+ address.setZipCode("40000");
+
+ user.setAddress(address);
+
+ userDAO.save(user);
+ }
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/persistence/CustomerDAOImplTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,61 @@
+package org.nuiton.sandbox.jsr317.jpa2.test;
+
+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)}
+ *
+ * Created on 22 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public class AddressFake implements Address {
+
+ @Override
+ public String getStreet() {
+ return null;
+ }
+
+ @Override
+ public void setStreet(String street) {
+ }
+
+ @Override
+ public String getStreet2() {
+ return null;
+ }
+
+ @Override
+ public void setStreet2(String street2) {
+ }
+
+ @Override
+ public String getZipCode() {
+ return null;
+ }
+
+ @Override
+ public void setZipCode(String zipCode) {
+ }
+
+ @Override
+ public String getTown() {
+ return null;
+ }
+
+ @Override
+ public void setTown(String town) {
+ }
+
+ @Override
+ public String getCountry() {
+ return null;
+ }
+
+ @Override
+ public void setCountry(String country) {
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/AddressFake.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/BaseTest.java
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/BaseTest.java (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/BaseTest.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,76 @@
+package org.nuiton.sandbox.jsr317.jpa2.test;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+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.CustomerDAO;
+import org.nuiton.sandbox.jsr317.jpa2.sample.DataSampleProvider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.Rollback;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+/**
+ * Created on 18 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+(a)RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = {"/test-context.xml"})
+public abstract class BaseTest {
+
+ private static final Log logger = LogFactory.getLog(BaseTest.class);
+
+ @PersistenceContext
+ protected EntityManager em;
+
+ @Autowired
+ protected DataSampleProvider dataProvider;
+
+ @Autowired
+ protected CustomerDAO userDAO;
+
+ @Rule
+ public TestName rule = new TestName() {
+
+ @Override
+ public void starting(FrameworkMethod method) {
+ super.starting(method);
+ if (autoDataEnabled()) {
+ try {
+ dataProvider.createAllData();
+ } catch (Exception eee) {
+ logger.error(eee.getClass().getSimpleName(), eee);
+ }
+ }
+ }
+
+ @Override
+ public void finished(FrameworkMethod method) {
+ if (autoDataEnabled()) {
+
+ Rollback rollback = method.getAnnotation(Rollback.class);
+
+ if (rollback == null || rollback.value()) {
+ dataProvider.deleteAllData();
+ }
+ }
+ super.finished(method);
+ }
+
+ public BaseTest getTest() {
+ return BaseTest.this;
+ }
+ };
+
+ protected boolean autoDataEnabled() {
+ return false;
+ }
+
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/BaseTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/JpaConfigTestSource.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,67 @@
+package org.nuiton.sandbox.jsr317.jpa2.test;
+
+import javax.sql.DataSource;
+import java.util.Properties;
+import org.hibernate.dialect.H2Dialect;
+import org.nuiton.sandbox.jsr317.jpa2.persistence.JpaConfigSource;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.datasource.DriverManagerDataSource;
+import org.springframework.orm.jpa.JpaVendorAdapter;
+import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
+
+/**
+ * Jpa configuration for tests.
+ * <p />
+ * Created on 21 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+@Configuration
+public class JpaConfigTestSource implements JpaConfigSource {
+
+ @Value("${jdbc.url}")
+ private String jdbcUrl;
+
+ @Value("${jdbc.username}")
+ private String jdbcUsername;
+
+ @Value("${jdbc.password}")
+ private String jdbcPassword;
+
+ @Bean
+ @Override
+ public JpaVendorAdapter jpaVendorAdapter() {
+ HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
+ jpaVendorAdapter.setShowSql(true);
+ jpaVendorAdapter.setGenerateDdl(true);
+ jpaVendorAdapter.setDatabasePlatform(H2Dialect.class.getName());
+ return jpaVendorAdapter;
+ }
+
+ @Bean
+ @Override
+ public Properties jpaProperties() {
+ Properties properties = new Properties();
+ properties.put("hibernate.hbm2ddl.auto", "create");
+ // WARNING : when using this property, flushing is needed after first persist and merge to execute INSERT as default strategy does,
+ // otherwise detaching the entity will not insert it
+ properties.put("hibernate.id.new_generator_mappings", "true");
+
+ return properties;
+ }
+
+ @Bean
+ @Override
+ public DataSource dataSource() {
+ DriverManagerDataSource dataSource = new DriverManagerDataSource();
+
+ dataSource.setUrl(jdbcUrl);
+ dataSource.setUsername(jdbcUsername);
+ dataSource.setPassword(jdbcPassword);
+
+ return dataSource;
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/JpaConfigTestSource.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: 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 (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/SpringTestConfig.java 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,36 @@
+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.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+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 />
+ * Created on 21 oct. 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ * @see JpaConfigTestSource
+ */
+@Configuration
+(a)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
+ *
+ * @return PropertyPlaceholderConfigurer defined
+ */
+ @Bean
+ public PropertyPlaceholderConfigurer propertyConfigurer() {
+ PropertyPlaceholderConfigurer propertyConfigurer = new PropertyPlaceholderConfigurer();
+ propertyConfigurer.setLocation(new ClassPathResource("/jdbc-test.properties"));
+ return propertyConfigurer;
+ }
+}
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/java/org/nuiton/sandbox/jsr317/jpa2/test/SpringTestConfig.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,10 @@
+<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="jsr317-test" transaction-type="RESOURCE_LOCAL">
+ <class>org.nuiton.sandbox.jsr317.jpa2.entity.CustomerImpl</class>
+ </persistence-unit>
+
+</persistence>
\ No newline at end of file
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/META-INF/persistence.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/jdbc-test.properties
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/resources/jdbc-test.properties (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/resources/jdbc-test.properties 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,3 @@
+jdbc.url=jdbc:h2:file:./target/surefire-data/jsr317
+jdbc.username=sa
+jdbc.password=
\ No newline at end of file
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/jdbc-test.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/log4j.properties
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/resources/log4j.properties (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/resources/log4j.properties 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,11 @@
+# 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.jsr317.jpa2=info
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/log4j.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/test-context.xml
===================================================================
--- jpa2-validation/trunk/jsr317-jpa2/src/test/resources/test-context.xml (rev 0)
+++ jpa2-validation/trunk/jsr317-jpa2/src/test/resources/test-context.xml 2010-11-12 17:53:20 UTC (rev 433)
@@ -0,0 +1,16 @@
+<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">
+
+ <!--<import resource="classpath:META-INF/jsr317-spring-context.xml"/>-->
+
+ <!-- Load Spring Configuration from Java file -->
+ <bean class="org.nuiton.sandbox.jsr317.jpa2.test.SpringTestConfig" />
+
+ <!-- Scan sample -->
+ <context:component-scan base-package="org.nuiton.sandbox.jsr317.jpa2.sample" />
+
+</beans>
\ No newline at end of file
Property changes on: jpa2-validation/trunk/jsr317-jpa2/src/test/resources/test-context.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: jpa2-validation/trunk/pom.xml
===================================================================
--- jpa2-validation/trunk/pom.xml 2010-11-05 12:45:44 UTC (rev 432)
+++ jpa2-validation/trunk/pom.xml 2010-11-12 17:53:20 UTC (rev 433)
@@ -27,12 +27,121 @@
<dependencies>
<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>
+
+ <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-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-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>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-jpamodelgen</artifactId>
+ <version>${jpa2ApiVersion}</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>
+ <!-- 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>
+
+ <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-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>
+
</dependencies>
</dependencyManagement>
@@ -52,6 +161,17 @@
<packaging>pom</packaging>
<properties>
+
+ <!-- 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>
+
</properties>
<!-- Source control management. -->
Property changes on: jpa2-validation/trunk/pom.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0
06 Nov '10
Author: jcouteau
Date: 2010-11-06 15:12:36 +0100 (Sat, 06 Nov 2010)
New Revision: 20
Url: http://chorem.org/repositories/revision/incubator/20
Log:
Commit tries on wikitty use
Added:
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/skills-client/src/main/resources/org/chorem/bonzoms/skills/public/RefComp.html
Removed:
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/client/
refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/public/
refComp/skills-services/skills-services.iml
Modified:
refComp/pom.xml
refComp/skills-client/pom.xml
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/RefComp.gwt.xml
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/AdminUsers.java
refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.java
refComp/skills-client/src/main/webapp/WEB-INF/web.xml
Modified: refComp/pom.xml
===================================================================
--- refComp/pom.xml 2010-11-06 14:07:51 UTC (rev 19)
+++ refComp/pom.xml 2010-11-06 14:12:36 UTC (rev 20)
@@ -66,7 +66,7 @@
<projectId>skills</projectId>
<!-- libraries version -->
- <gwtVersion>2.0.3</gwtVersion>
+ <gwtVersion>2.1.0</gwtVersion>
<wikittyVersion>3.0-SNAPSHOT</wikittyVersion>
<generatorPluginVersion>2.2</generatorPluginVersion>
</properties>
@@ -129,6 +129,39 @@
<version>8.4-701.jdbc4</version>
<scope>runtime</scope>
</dependency>
+
+ <dependency>
+ <groupId>com.google.code.gwtx</groupId>
+ <artifactId>gwtx</artifactId>
+ <version>1.5.3</version>
+ </dependency>
+
+ <!-- Comment, not maven packaged -->
+ <!--dependency>
+ <groupId>com.spiral</groupId>
+ <artifactId>gwt-calendar</artifactId>
+ <version>1.0-beta1</version>
+ </dependency-->
+
+ <!-- JC Tried this, useless -->
+ <!--dependency>
+ <groupId>com.smartgwt</groupId>
+ <artifactId>smartgwt</artifactId>
+ <version>2.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.gwtwidget</groupId>
+ <artifactId>gwt-widget</artifactId>
+ <version>1.1</version>
+ <type>war</type>
+ </dependency>
+
+ <dependency>
+ <groupId>pl.rmalinowski</groupId>
+ <artifactId>gwtreflect</artifactId>
+ <version>0.8</version>
+ </dependency-->
</dependencies>
@@ -141,7 +174,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
- <version>1.2</version>
+ <version>2.1.0</version>
<executions>
<execution>
<goals>
@@ -154,7 +187,6 @@
<hostedWebapp>src/main/webapp</hostedWebapp>
<runTarget>org.chorem.bonzoms.skills.client.RefComp/RefComp.html</runTarget>
<noServer>false</noServer>
- <gwtVersion>${gwtVersion}</gwtVersion>
</configuration>
</plugin>
@@ -170,7 +202,7 @@
<directory>src/main/webapp/WEB-INF/classes</directory>
</fileset>
<fileset>
- <directory>src/main/webapp/org.chorem.bonzoms.skills.client.RefComp</directory>
+ <directory>src/main/webapp/org.chorem.bonzoms.skills.RefComp</directory>
</fileset>
</filesets>
</configuration>
Modified: refComp/skills-client/pom.xml
===================================================================
--- refComp/skills-client/pom.xml 2010-11-06 14:07:51 UTC (rev 19)
+++ refComp/skills-client/pom.xml 2010-11-06 14:12:36 UTC (rev 20)
@@ -51,6 +51,34 @@
<classifier>sources</classifier>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gwtx</groupId>
+ <artifactId>gwtx</artifactId>
+ </dependency>
+
+ <!-- Not maven packaged -->
+ <!--dependency>
+ <groupId>com.spiral</groupId>
+ <artifactId>gwt-calendar</artifactId>
+ </dependency-->
+
+ <!-- Useless tries -->
+ <!--dependency>
+ <groupId>com.smartgwt</groupId>
+ <artifactId>smartgwt</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.gwtwidget</groupId>
+ <artifactId>gwt-widget</artifactId>
+ <type>war</type>
+ </dependency>
+
+ <dependency>
+ <groupId>pl.rmalinowski</groupId>
+ <artifactId>gwtreflect</artifactId>
+ </dependency-->
+
</dependencies>
<!-- ************************************************************* -->
Modified: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/RefComp.gwt.xml
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/RefComp.gwt.xml 2010-11-06 14:07:51 UTC (rev 19)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/RefComp.gwt.xml 2010-11-06 14:12:36 UTC (rev 20)
@@ -6,8 +6,18 @@
<inherits name='com.google.gwt.user.User'/>
<inherits name="com.google.gwt.uibinder.UiBinder"/>
<inherits name="org.chorem.bonzoms.skills.Entities"/>
+
+ <!--Wikitty dependency-->
<inherits name="org.nuiton.WikittyAPI"/>
+ <!--gwtx dependency-->
+ <inherits name="com.googlecode.gwtx.Java"/>
+
+ <!--gwt-calendar dependancy-->
+ <inherits name='com.spiral.gwt-calendar'/>
+
+ <!--inherits name="com.smartgwt.SmartGwt"/-->
+
<!-- inherit css based theme -->
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
Modified: refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/AdminUsers.java
===================================================================
--- refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/AdminUsers.java 2010-11-06 14:07:51 UTC (rev 19)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/AdminUsers.java 2010-11-06 14:12:36 UTC (rev 20)
@@ -12,6 +12,7 @@
import org.chorem.bonzoms.skills.client.services.UserService;
import org.chorem.bonzoms.skills.client.services.UserServiceAsync;
import org.chorem.bonzoms.skills.entities.User;
+import org.chorem.bonzoms.skills.entities.UserImpl;
/**
* User: couteau
@@ -19,10 +20,10 @@
*/
public class AdminUsers extends Composite {
- private final UserServiceAsync userService = GWT
- .create(UserService.class);
+ /**private final UserServiceAsync userService = GWT
+ .create(UserService.class);**/
- @UiTemplate("Login.ui.xml")
+ @UiTemplate("AdminUsers.ui.xml")
interface MyUiBinder extends UiBinder<Panel, AdminUsers> {
}
@@ -34,7 +35,12 @@
public AdminUsers() {
initWidget(binder.createAndBindUi(this));
- userService.getUser(new AsyncCallback<User>() {
+ User toto = new UserImpl();
+ toto.setNom("Toto");
+
+ //userName.setText(toto.getNom());
+
+ /*userService.getUser(new AsyncCallback<User>() {
@Override
public void onFailure(Throwable caught) {
Window.alert("Server communication error");
@@ -44,6 +50,6 @@
public void onSuccess(User result) {
userName.setText(result.getNom());
}
- });
+ });*/
}
}
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:07:51 UTC (rev 19)
+++ refComp/skills-client/src/main/java/org/chorem/bonzoms/skills/client/Login.java 2010-11-06 14:12:36 UTC (rev 20)
@@ -77,8 +77,11 @@
header.clear();
content.add(new Search());
- header.add(new Header());
+ Header newHeader = new Header();
+
+ header.add(newHeader);
+
} else {
Window.alert("Login failed, try with admin/admin");
}
Added: 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 (rev 0)
+++ refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/client/refcomp.css 2010-11-06 14:12:36 UTC (rev 20)
@@ -0,0 +1,36 @@
+.greyText {
+ font-family: "Lucida Grande", Arial, Sans-serif;
+ color: #778899;
+ font-size: 11px;
+ text-align: left;
+}
+
+.loginButton {
+ border: 1px solid #3399DD;
+ color: #FFFFFF;
+ background: #3322DD;
+ font-size: 11px;
+ font-weight: bold;
+ margin: 0 5px 0 0;
+ padding: 4px 10px 5px;
+ text-shadow: 0 -1px 0 #3399DD;
+}
+
+.box {
+ border: 1px solid #AACCEE;
+ display: block;
+ font-size: 12px;
+ margin: 0 0 5px;
+ padding: 3px;
+ width: 203px;
+}
+
+.background {
+ background-color: #DDEEF6;
+ border: 1px none transparent;
+ color: #778899;
+ font-size: 11px;
+ margin-left: -8px;
+ margin-top: 5px;
+ padding: 6px;
+}
Added: 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 (rev 0)
+++ refComp/skills-client/src/main/resources/org/chorem/bonzoms/skills/public/RefComp.html 2010-11-06 14:12:36 UTC (rev 20)
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+
+ <title>Bonzoms - Skills</title>
+
+ <meta name='gwt:module' content='org.chorem.bonzoms.skills.RefComp'>
+
+ <!-- -->
+ <!-- This script loads your compiled module. -->
+ <!-- If you add any GWT meta tags, they must -->
+ <!-- be added before this line. -->
+ <!-- -->
+ <script type="text/javascript" language="javascript" src="org.chorem.bonzoms.skills.RefComp.nocache.js"></script>
+</head>
+<body>
+
+<div id="header"></div>
+
+<div id="content"></div>
+
+<div id="footer"></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>
+</body>
+</html>
\ No newline at end of file
Modified: refComp/skills-client/src/main/webapp/WEB-INF/web.xml
===================================================================
--- refComp/skills-client/src/main/webapp/WEB-INF/web.xml 2010-11-06 14:07:51 UTC (rev 19)
+++ refComp/skills-client/src/main/webapp/WEB-INF/web.xml 2010-11-06 14:12:36 UTC (rev 20)
@@ -16,7 +16,7 @@
</servlet>
<servlet-mapping>
<servlet-name>LoginService</servlet-name>
- <url-pattern>/org.chorem.bonzoms.skills.client.RefComp/login</url-pattern>
+ <url-pattern>/org.chorem.bonzoms.skills.RefComp/login</url-pattern>
</servlet-mapping>
<servlet>
@@ -26,7 +26,7 @@
</servlet>
<servlet-mapping>
<servlet-name>SearchService</servlet-name>
- <url-pattern>/org.chorem.bonzoms.skills.client.RefComp/search</url-pattern>
+ <url-pattern>/org.chorem.bonzoms.skills.RefComp/search</url-pattern>
</servlet-mapping>
</web-app>
Deleted: refComp/skills-services/skills-services.iml
===================================================================
--- refComp/skills-services/skills-services.iml 2010-11-06 14:07:51 UTC (rev 19)
+++ refComp/skills-services/skills-services.iml 2010-11-06 14:12:36 UTC (rev 20)
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/target/classes" />
- <output-test url="file://$MODULE_DIR$/target/test-classes" />
- <content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/.svn" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/annotations" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
- <excludeFolder url="file://$MODULE_DIR$/target/.svn" />
- <excludeFolder url="file://$MODULE_DIR$/target/classes" />
- <excludeFolder url="file://$MODULE_DIR$/target/extra" />
- <excludeFolder url="file://$MODULE_DIR$/target/maven-archiver" />
- <excludeFolder url="file://$MODULE_DIR$/target/services-0.1-SNAPSHOT" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="library" scope="PROVIDED" name="Maven: com.google.gwt:gwt-user:2.0.3" level="project" />
- </component>
-</module>
-
1
0
Author: jcouteau
Date: 2010-11-06 15:07:51 +0100 (Sat, 06 Nov 2010)
New Revision: 19
Url: http://chorem.org/repositories/revision/incubator/19
Log:
Add info on how to compile and run
Modified:
refComp/README.txt
Modified: refComp/README.txt
===================================================================
--- refComp/README.txt 2010-11-05 16:20:48 UTC (rev 18)
+++ refComp/README.txt 2010-11-06 14:07:51 UTC (rev 19)
@@ -0,0 +1,25 @@
+Pour lancer bonzoms-skills en mode développement :
+--------------------------------------------------
+
+1. Compiler skills-entities :
+
+cd skills-entities
+mvn install
+
+2. Lancer skills-client :
+
+cd skills-client
+mvn gwt:run
+
+(il vous faudra le plugin gwt pour votre navigateur)
+
+Pour déployer bonzoms-skills sur son serveur :
+----------------------------------------------
+
+1. Compiler :
+
+mvn compile
+
+2. Déployer le war sur son serveur
+
+cp skills-client/target/skills-client
1
0
Author: jcouteau
Date: 2010-11-05 17:20:48 +0100 (Fri, 05 Nov 2010)
New Revision: 18
Url: http://chorem.org/repositories/revision/incubator/18
Log:
Remove old services module
Removed:
refComp/services/
1
0