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


Reply via email to