mirror of https://github.com/apache/openjpa.git
OPENJPA-1106 Integration tests for Bean Validation providers - Part 1 (not hooked into the builds yet)
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@783503 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7b06c5cfbf
commit
27b0abd46b
|
@ -0,0 +1,281 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
<!--
|
||||
Maven release plugin requires the project tag to be on a single line.
|
||||
-->
|
||||
<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.apache.openjpa</groupId>
|
||||
<artifactId>openjpa-integration</artifactId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>openjpa-integration-validation</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>OpenJPA Integration Tests - Bean Validation</name>
|
||||
<description>OpenJPA Integration Tests - Bean Validation</description>
|
||||
|
||||
<properties>
|
||||
<openjpa.loglevel>INFO</openjpa.loglevel>
|
||||
<!-- to set debug arguments, you might set the following at the command line:
|
||||
-Dtest.jvm.arguments="-Xmx500m -agentlib:jdwp=transport=dt_socket,server=y,address=8000"
|
||||
-->
|
||||
<test.jvm.arguments>-Xmx500m</test.jvm.arguments>
|
||||
<dbcp.maxActive>10</dbcp.maxActive>
|
||||
<dbcp.maxIdle>5</dbcp.maxIdle>
|
||||
<dbcp.minIdle>2</dbcp.minIdle>
|
||||
<dbcp.maxWait>10000</dbcp.maxWait>
|
||||
<dbcp.args>MaxActive=${dbcp.maxActive},MaxIdle=${dbcp.maxIdle},MinIdle=${dbcp.minIdle},MaxWait=${dbcp.maxWait}</dbcp.args>
|
||||
<connection.driver.name>org.apache.derby.jdbc.EmbeddedDriver</connection.driver.name>
|
||||
<connection.url>jdbc:derby:target/database/openjpa-derby-database;create=true</connection.url>
|
||||
<connection.username />
|
||||
<connection.password />
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<!-- Default profile for testing with Agimatec validation provider -->
|
||||
<profile>
|
||||
<id>agimatec</id>
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
<property>
|
||||
<name>agimatec</name>
|
||||
</property>
|
||||
</activation>
|
||||
<dependencies>
|
||||
<!-- See http://code.google.com/p/agimatec-validation/wiki/GettingStarted -->
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>1.0.Beta4</version>
|
||||
<!-- <version>1.0.CR2</version> -->
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.agimatec</groupId>
|
||||
<artifactId>agimatec-jsr303</artifactId>
|
||||
<version>0.9.0-SNAPSHOT</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.agimatec</groupId>
|
||||
<artifactId>agimatec-validation</artifactId>
|
||||
<version>0.9.0-SNAPSHOT</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-beanutils</groupId>
|
||||
<artifactId>commons-beanutils</artifactId>
|
||||
<version>1.8.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<repositories>
|
||||
<repository>
|
||||
<!-- have to use a commiters home dir until released -->
|
||||
<id>dwoods.people.apache.org</id>
|
||||
<name>dwoods Staging Repo</name>
|
||||
<url>http://people.apache.org/~dwoods/staging-repo</url>
|
||||
<layout>default</layout>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
<updatePolicy>daily</updatePolicy>
|
||||
<checksumPolicy>ignore</checksumPolicy>
|
||||
</snapshots>
|
||||
<releases>
|
||||
<enabled>false</enabled>
|
||||
</releases>
|
||||
</repository>
|
||||
</repositories>
|
||||
</profile>
|
||||
|
||||
<!-- Default profile for testing with Derby and Bean Validation RI -->
|
||||
<profile>
|
||||
<id>hibernate</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>hibernate</name>
|
||||
</property>
|
||||
</activation>
|
||||
<dependencies>
|
||||
<!-- Latest matching BV RI versions from 20090427 -->
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>1.0.CR2</version>
|
||||
<!-- <version>1.0.CR3-SNAPSHOT</version> -->
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hibernate</groupId>
|
||||
<artifactId>hibernate-validator</artifactId>
|
||||
<version>4.0.0.Beta1</version>
|
||||
<!-- <version>4.0.0.Beta2-SNAPSHOT</version> -->
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>1.5.6</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-log4j12</artifactId>
|
||||
<version>1.5.6</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>repository.jboss.org</id>
|
||||
<name>JBoss Repository</name>
|
||||
<url>http://repository.jboss.org/maven2</url>
|
||||
<layout>default</layout>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
<releases>
|
||||
<enabled>true</enabled>
|
||||
</releases>
|
||||
</repository>
|
||||
<!--
|
||||
<repository>
|
||||
<id>snapshots.jboss.org</id>
|
||||
<name>JBoss Repository</name>
|
||||
<url>http://snapshots.jboss.org/maven2</url>
|
||||
<layout>default</layout>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
</snapshots>
|
||||
<releases>
|
||||
<enabled>false</enabled>
|
||||
</releases>
|
||||
</repository>
|
||||
-->
|
||||
</repositories>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.openjpa</groupId>
|
||||
<artifactId>openjpa</artifactId>
|
||||
<version>${pom.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.openjpa</groupId>
|
||||
<artifactId>openjpa-persistence-jdbc</artifactId>
|
||||
<version>${pom.version}</version>
|
||||
<classifier>tests</classifier>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-dbcp</groupId>
|
||||
<artifactId>commons-dbcp</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.derby</groupId>
|
||||
<artifactId>derby</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta-regexp</groupId>
|
||||
<artifactId>jakarta-regexp</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>test-compile</phase>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<ant antfile="src/main/ant/enhancer.xml" target="enhance" inheritRefs="true">
|
||||
<property name="maven.test.skip" value="${maven.test.skip}" />
|
||||
<property name="test" value="${test}" />
|
||||
<property name="outdir" value="${project.build.outputDirectory}" />
|
||||
<property name="project.build.testOutputDirectory" value="${project.build.testOutputDirectory}" />
|
||||
<property name="openjpa.loglevel" value="${openjpa.loglevel}" />
|
||||
<property name="build.enhance" value="${build.enhance}" />
|
||||
</ant>
|
||||
</tasks>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<argLine>${test.jvm.arguments}</argLine>
|
||||
<excludes>
|
||||
<!-- exclude classes that end with 'Test'; these
|
||||
are not test cases per OpenJPA standards -->
|
||||
<exclude>org/apache/openjpa/**/*Test.java</exclude>
|
||||
|
||||
<!-- exclude classes that include a $; inner classes
|
||||
are not test cases per OpenJPA standards -->
|
||||
<exclude>org/apache/openjpa/**/*$*.class</exclude>
|
||||
<exclude>org/apache/openjpa/**/*.*.class</exclude>
|
||||
</excludes>
|
||||
<systemProperties>
|
||||
<property>
|
||||
<name>openjpa.Log</name>
|
||||
<value>DefaultLevel=${openjpa.loglevel}</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>openjpa.ConnectionDriverName</name>
|
||||
<value>org.apache.commons.dbcp.BasicDataSource</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>derby.stream.error.file</name>
|
||||
<value>target/derby.log</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>derby.locks.deadlockTimeout</name>
|
||||
<value>5</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>derby.locks.waitTimeout</name>
|
||||
<value>6</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>openjpa.ConnectionProperties</name>
|
||||
<value>DriverClassName=${connection.driver.name},Url=${connection.url},Username=${connection.username},Password=${connection.password},${dbcp.args}</value>
|
||||
</property>
|
||||
</systemProperties>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,91 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
<project name="enhance" basedir=".">
|
||||
<!--
|
||||
This build file executes the PCEnhancer on the test entities. It's in a
|
||||
separate file instead of nested in pom.xml to make some conditional
|
||||
processing easier.
|
||||
|
||||
Test classes will not be compiled if maven is invoked with
|
||||
-Dmaven.test.skip=true.
|
||||
-->
|
||||
|
||||
<condition property="maven.test.skip.istrue">
|
||||
<istrue value="${maven.test.skip}" />
|
||||
</condition>
|
||||
|
||||
<condition property="skip.enhance">
|
||||
<or>
|
||||
<equals arg1="${test}" arg2="false" />
|
||||
<equals arg1="${build.enhance}" arg2="false" />
|
||||
<istrue value="${maven.test.skip}" />
|
||||
<istrue value="${skipTests}" />
|
||||
</or>
|
||||
</condition>
|
||||
|
||||
<!-- =================================
|
||||
target: enhance
|
||||
================================= -->
|
||||
<target name="enhance"
|
||||
description="--> run the enhancer unless test=false"
|
||||
unless="skip.enhance">
|
||||
<antcall target="enhance.all.entities"
|
||||
inheritall="true"
|
||||
inheritrefs="true" />
|
||||
</target>
|
||||
|
||||
<!-- =================================
|
||||
target: enhance.all.entities
|
||||
================================= -->
|
||||
<target name="enhance.all.entities"
|
||||
description="--> enhance the test entities"
|
||||
unless="skip.enhance">
|
||||
<echo> running enhancer</echo>
|
||||
<!--
|
||||
Inherited references won't be present until the task is called.
|
||||
Therefore the path definition needs to stay inside the task.
|
||||
-->
|
||||
<path id="cp">
|
||||
<path refid="maven.test.classpath" />
|
||||
</path>
|
||||
|
||||
<taskdef name="openjpac"
|
||||
classname="org.apache.openjpa.ant.PCEnhancerTask">
|
||||
<classpath refid="cp" />
|
||||
</taskdef>
|
||||
|
||||
<fileset id="enhance.path.ref"
|
||||
dir="${project.build.testOutputDirectory}">
|
||||
<include name="**/integration/validation/*.class" />
|
||||
<exclude name="**/Test*.class" />
|
||||
<exclude name="**/persistence/**/*.class" />
|
||||
<exclude name="**/inheritance/serializable/*.class" />
|
||||
<exclude name="**/xml/*.class" />
|
||||
<exclude name="**/Unenhanced*.class" />
|
||||
<exclude name="**/AbstractUnenhanced*.class" />
|
||||
<exclude name="**/unenhanced/*.class" />
|
||||
</fileset>
|
||||
<openjpac>
|
||||
<classpath refid="cp" />
|
||||
<fileset refid="enhance.path.ref" />
|
||||
<config log="DefaultLevel=${openjpa.loglevel}" />
|
||||
</openjpac>
|
||||
</target>
|
||||
</project>
|
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.openjpa.integration.validation;
|
||||
|
||||
import java.io.Serializable;
|
||||
import javax.persistence.Basic;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EntityResult;
|
||||
import javax.persistence.FieldResult;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.NamedNativeQueries;
|
||||
import javax.persistence.NamedNativeQuery;
|
||||
import javax.persistence.NamedQueries;
|
||||
import javax.persistence.NamedQuery;
|
||||
import javax.persistence.SqlResultSetMapping;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@NamedQueries( {
|
||||
@NamedQuery(name="FindOne",
|
||||
query="select s from simple s where s.name = ?1"),
|
||||
@NamedQuery(name="FindAll", query="select s from simple s")
|
||||
})
|
||||
|
||||
@NamedNativeQueries( {
|
||||
@NamedNativeQuery(name = "findSimpleEntitites",
|
||||
query = "SELECT ID, NAME, VALUE FROM SIMPLE_ENTITY",
|
||||
resultSetMapping = "simpleEntitiesResult") })
|
||||
|
||||
@SqlResultSetMapping(name = "simpleEntitiesResult",
|
||||
entities = @EntityResult(
|
||||
entityClass = org.apache.openjpa.integration.validation.SimpleEntity.class,
|
||||
fields = {@FieldResult(name = "id", column = "ID"),
|
||||
@FieldResult(name = "name", column = "NAME"),
|
||||
@FieldResult(name = "value", column = "VALUE") }))
|
||||
|
||||
@Entity(name = "simple")
|
||||
@Table(name = "SIMPLE_ENTITY")
|
||||
public class SimpleEntity implements Serializable {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column(name = "ID")
|
||||
private long id;
|
||||
|
||||
@Basic
|
||||
@Column(name = "NAME")
|
||||
private String name;
|
||||
|
||||
@Basic
|
||||
@Column(name = "VALUE")
|
||||
private String value;
|
||||
|
||||
public SimpleEntity() {
|
||||
}
|
||||
|
||||
public SimpleEntity(String name, String value) {
|
||||
this();
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with this
|
||||
* work for additional information regarding copyright ownership. The ASF
|
||||
* licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
|
||||
* or agreed to in writing, software distributed under the License is
|
||||
* distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the specific language
|
||||
* governing permissions and limitations under the License.
|
||||
*/
|
||||
package org.apache.openjpa.integration.validation;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.persistence.ValidationMode;
|
||||
|
||||
import org.apache.openjpa.conf.OpenJPAConfiguration;
|
||||
import org.apache.openjpa.lib.log.Log;
|
||||
import org.apache.openjpa.integration.validation.SimpleEntity;
|
||||
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
|
||||
import org.apache.openjpa.persistence.OpenJPAPersistence;
|
||||
import org.apache.openjpa.persistence.test.AllowFailure;
|
||||
import org.apache.openjpa.persistence.test.SingleEMFTestCase;
|
||||
|
||||
/**
|
||||
* Tests the new Bean Validation Factory support in the JPA 2.0 spec.
|
||||
* Basic (no provider) Validation scenarios being tested:
|
||||
* 1) Mode of NONE will create a LifecycleEventManager
|
||||
* 2) Mode of AUTO will create a ValidatingLifecycleEventManager
|
||||
* 3) Mode of CALLBACK will create a ValidatingLifecycleEventManager
|
||||
* 4) Verify passed in ValidatorFactory is used
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class TestValidationFactory extends SingleEMFTestCase {
|
||||
|
||||
@Override
|
||||
public void setUp() {
|
||||
super.setUp(CLEAR_TABLES, SimpleEntity.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario being tested:
|
||||
* 1) By default, ValidationFactory is null
|
||||
*/
|
||||
public void testValidationFactory1() {
|
||||
getLog().trace("testValidationFactory1() - Default is null");
|
||||
OpenJPAEntityManagerFactory emf = null;
|
||||
|
||||
// create our EMF
|
||||
emf = OpenJPAPersistence.createEntityManagerFactory(
|
||||
"simple-none-mode",
|
||||
"org/apache/openjpa/integration/validation/persistence.xml");
|
||||
assertNotNull(emf);
|
||||
// verify default validation mode
|
||||
OpenJPAConfiguration conf = emf.getConfiguration();
|
||||
assertNotNull(conf);
|
||||
assertEquals("Default ValidationFactory",
|
||||
null,
|
||||
conf.getValidationFactoryInstance());
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario being tested:
|
||||
* 2) An invalid ValidationFactory with a mode of NONE will not
|
||||
* cause an exception
|
||||
*/
|
||||
public void testValidationFactory2() {
|
||||
getLog().trace("testValidationFactory2() - ignored invalid factory");
|
||||
OpenJPAEntityManagerFactory emf = null;
|
||||
|
||||
// create the Map to test overrides
|
||||
// Just use current class object, as we have no provider to test with
|
||||
Map<String,Object> props = new HashMap<String,Object>();
|
||||
props.put("javax.persistence.validation.factory",
|
||||
this.getClass());
|
||||
|
||||
// create our EMF
|
||||
emf = OpenJPAPersistence.createEntityManagerFactory(
|
||||
"simple-none-mode",
|
||||
"org/apache/openjpa/integration/validation/persistence.xml",
|
||||
props);
|
||||
assertNotNull(emf);
|
||||
// verify same "validation factory" object is returned
|
||||
OpenJPAConfiguration conf = emf.getConfiguration();
|
||||
assertNotNull(conf);
|
||||
assertEquals("ValidationFactory",
|
||||
this.getClass(),
|
||||
conf.getValidationFactoryInstance());
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario being tested:
|
||||
* 3) An invalid ValidationFactory with a mode of AUTO will not
|
||||
* cause an exception
|
||||
*/
|
||||
public void testValidationFactory3() {
|
||||
getLog().trace("testValidationFactory3() - optional invalid factory");
|
||||
OpenJPAEntityManagerFactory emf = null;
|
||||
|
||||
// create the Map to test overrides
|
||||
// Just use current class object, as we have no provider to test with
|
||||
Map<String,Object> props = new HashMap<String,Object>();
|
||||
props.put("javax.persistence.validation.factory",
|
||||
this.getClass());
|
||||
|
||||
// create our EMF
|
||||
emf = OpenJPAPersistence.createEntityManagerFactory(
|
||||
"simple-auto-mode",
|
||||
"org/apache/openjpa/integration/validation/persistence.xml",
|
||||
props);
|
||||
assertNotNull(emf);
|
||||
// verify same "validation factory" object is returned
|
||||
OpenJPAConfiguration conf = emf.getConfiguration();
|
||||
assertNotNull(conf);
|
||||
assertEquals("ValidationFactory",
|
||||
this.getClass(),
|
||||
conf.getValidationFactoryInstance());
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario being tested:
|
||||
* 4) An invalid ValidationFactory with a mode of CALLBACK will
|
||||
* cause an exception
|
||||
*/
|
||||
@AllowFailure(message="This will fail until OPENJPA-1111 is resolved.")
|
||||
public void testValidationFactory4() {
|
||||
getLog().trace("testValidationFactory4() - required invalid factory");
|
||||
OpenJPAEntityManagerFactory emf = null;
|
||||
|
||||
// create the Map to test overrides
|
||||
// Just use current class object, as we have no provider to test with
|
||||
Map<String,Object> props = new HashMap<String,Object>();
|
||||
props.put("javax.persistence.validation.factory",
|
||||
this.getClass());
|
||||
props.put("javax.persistence.validation.mode",
|
||||
String.valueOf(ValidationMode.CALLBACK));
|
||||
|
||||
try {
|
||||
// create our EMF
|
||||
emf = OpenJPAPersistence.createEntityManagerFactory(
|
||||
"simple-callback-mode",
|
||||
"org/apache/openjpa/integration/validation/persistence.xml",
|
||||
props);
|
||||
assertNotNull(emf);
|
||||
// verify validation mode
|
||||
OpenJPAConfiguration conf = emf.getConfiguration();
|
||||
assertNotNull(conf);
|
||||
assertEquals("Validation mode",
|
||||
String.valueOf(ValidationMode.CALLBACK),
|
||||
conf.getValidationMode());
|
||||
fail("Expected an exception when ValidationMode=CALLBACK and " +
|
||||
"an invalid ValidatorFactory is provided.");
|
||||
} catch (Exception e) {
|
||||
// expected
|
||||
getLog().trace("testValidationFactory4() - caught expected " +
|
||||
"exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Internal convenience method for getting the OpenJPA logger
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private Log getLog() {
|
||||
return emf.getConfiguration().getLog("Tests");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
version="2.0">
|
||||
|
||||
<persistence-unit name="simple">
|
||||
<class>org.apache.openjpa.integration.validation.SimpleEntity</class>
|
||||
</persistence-unit>
|
||||
|
||||
<persistence-unit name="simple-auto-mode">
|
||||
<class>org.apache.openjpa.integration.validation.SimpleEntity</class>
|
||||
<validation-mode>AUTO</validation-mode>
|
||||
</persistence-unit>
|
||||
|
||||
<persistence-unit name="simple-callback-mode">
|
||||
<class>org.apache.openjpa.integration.validation.SimpleEntity</class>
|
||||
<validation-mode>CALLBACK</validation-mode>
|
||||
</persistence-unit>
|
||||
|
||||
<persistence-unit name="simple-none-mode">
|
||||
<class>org.apache.openjpa.integration.validation.SimpleEntity</class>
|
||||
<validation-mode>NONE</validation-mode>
|
||||
</persistence-unit>
|
||||
|
||||
</persistence>
|
Loading…
Reference in New Issue