Author: dwoods
Date: Thu May 28 10:43:55 2009
New Revision: 779554
URL: http://svn.apache.org/viewvc?rev=779554&view=rev
Log:
OPENJPA-1102 Support application/container provided ValidatorFactory
Added:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/validation/TestValidationFactory.java
(with props)
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/conf/localizer.properties
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java?rev=779554&r1=779553&r2=779554&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
Thu May 28 10:43:55 2009
@@ -1661,4 +1661,20 @@
* @since 2.0.0
*/
public void setValidationMode(String mode);
+
+ /**
+ * The ValidatorFactory provided by the container or application.
+ * Defaults to <code>null</code>.
+ *
+ * @since 2.0.0
+ */
+ public Object getValidationFactory();
+
+ /**
+ * Set the container or application provided ValidatorFactory instance.
+ * If not set, defaults to <code>null</code>.
+ *
+ * @since 2.0.0
+ */
+ public void setValidationFactory(Object factory);
}
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java?rev=779554&r1=779553&r2=779554&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
Thu May 28 10:43:55 2009
@@ -153,6 +153,7 @@
public PluginValue finderCachePlugin;
public ObjectValue specification;
public StringValue validationMode;
+ public ObjectValue validationFactory;
// custom values
public BrokerFactoryValue brokerFactoryPlugin;
@@ -566,6 +567,11 @@
validationMode.set(aliases[0]);
validationMode.setDynamic(true);
+ validationFactory = addObject("javax.persistence.validation.factory");
+ validationFactory.setInstantiatingGetter(
+ "getValidationFactoryInstance");
+ validationFactory.setDynamic(true);
+
// initialize supported options that some runtimes may not support
supportedOptions.add(OPTION_NONTRANS_READ);
supportedOptions.add(OPTION_OPTIMISTIC);
@@ -1587,4 +1593,16 @@
}
return (FinderCache)finderCachePlugin.get();
}
+
+ public Object getValidationFactory() {
+ return validationFactory.get();
+ }
+
+ public Object getValidationFactoryInstance() {
+ return validationFactory.get();
+ }
+
+ public void setValidationFactory(Object factory) {
+ validationFactory.set(factory);
+ }
}
Modified:
openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/conf/localizer.properties
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/conf/localizer.properties?rev=779554&r1=779553&r2=779554&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/conf/localizer.properties
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/conf/localizer.properties
Thu May 28 10:43:55 2009
@@ -152,6 +152,14 @@
LockTimeout-displayorder: 50
LockTimeout-expert: true
+QueryTimeout-name: Statement query timeout
+QueryTimeout-desc: The number of milliseconds to wait for a query timeout \
+ before throwing an exception, or -1 for no limit.
+QueryTimeout-type: Optimization
+QueryTimeout-cat: Queries
+QueryTimeout-displayorder: 50
+QueryTimeout-expert: true
+
ReadLockLevel-name: Default transactional read lock level
ReadLockLevel-desc: The default lock level to use when loading objects within \
non-optimistic transactions. Set to none, read, write, or the numeric \
@@ -559,6 +567,18 @@
CacheMarshallers-expert: true
CacheMarshallers-interface: org.apache.openjpa.conf.CacheMarshaller
+ValidationMode-name: Bean Validation Mode
+ValidationMode-desc: Either "auto", "callback" or "none"
+ValidationMode-type: General
+ValidationMode-cat: Persistence.Advanced
+ValidationMode-displayorder: 50
+
+ValidationFactory-name: Bean Validation ValidatorFactory
+ValidationFactory-desc: Container or application provided instance.
+ValidationFactory-type: General
+ValidationFactory-cat: Persistence.Advanced
+ValidationFactory-displayorder: 50
+
no-named-cf: use a DataSource bound to JNDI
diff-specs: Attempt to configure for multiple specifications. Was configured \
for "{0}". Attempt to now configure for "{1}". This attempt will be \
@@ -608,3 +628,7 @@
correct version format is "<major>[.<minor>]" where <major> is the
integer \
major version number and <minor> is a string.
spec-wrong-obj: Can not set Specification from "{0}" of "{1}".
+class-not-found: Can not set "{0}", which requires class "{1}".
+invalid-config-object: Invalid object provided in configuration property \
+ "{0}". Expected type was "{1}".
+
Added:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/validation/TestValidationFactory.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/validation/TestValidationFactory.java?rev=779554&view=auto
==============================================================================
---
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/validation/TestValidationFactory.java
(added)
+++
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/validation/TestValidationFactory.java
Thu May 28 10:43:55 2009
@@ -0,0 +1,101 @@
+/*
+ * 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.persistence.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.persistence.OpenJPAEntityManagerFactory;
+import org.apache.openjpa.persistence.OpenJPAPersistence;
+import org.apache.openjpa.persistence.query.SimpleEntity;
+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) By default, ValidationFactory is null
+ * 2) ValidationFactory can be provided by createEMF(Map props)
+ *
+ * @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/persistence/validation/persistence.xml");
+ assertNotNull(emf);
+ // verify default validation mode
+ OpenJPAConfiguration conf = emf.getConfiguration();
+ assertNotNull(conf);
+ assertEquals("Default ValidationFactory",
+ null,
+ conf.getValidationFactory());
+ }
+
+ /**
+ * Scenario being tested:
+ * 2) ValidationFactory can be provided by createEMF(Map props)
+ */
+ public void testValidationFactory2() {
+ getLog().trace("testValidationFactory2() - createEMF(Map props)");
+ 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/persistence/validation/persistence.xml",
+ props);
+ assertNotNull(emf);
+ // verify validation mode
+ OpenJPAConfiguration conf = emf.getConfiguration();
+ assertNotNull(conf);
+ assertEquals("ValidationFactory",
+ this.getClass(),
+ conf.getValidationFactory());
+ }
+
+
+ /**
+ * Internal convenience method for getting the OpenJPA logger
+ *
+ * @return
+ */
+ private Log getLog() {
+ return emf.getConfiguration().getLog("Tests");
+ }
+}
Propchange:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/validation/TestValidationFactory.java
------------------------------------------------------------------------------
svn:eol-style = native