OPENJPA-849 Committing code and corresponding tests contributed by Dianne Richards

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@740986 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jeremy Bauer 2009-02-05 03:21:25 +00:00
parent 2e07d6bc8f
commit f99be0c0e0
5 changed files with 169 additions and 8 deletions

View File

@ -552,7 +552,7 @@
<value>DefaultLevel=${openjpa.loglevel}</value>
</property>
<property>
<name>openjpa.ConnectionDriverName</name>
<name>javax.persistence.jdbc.driver</name>
<value>org.apache.commons.dbcp.BasicDataSource</value>
</property>
<property>

View File

@ -59,7 +59,7 @@ public class TestBadJdbcUrl extends TestCase {
*/
public void testBadUrlProtocolValueWithValidDriverClass() {
Properties p = new Properties();
p.put("openjpa.ConnectionDriverName", GOOD_DRIVER);
p.put("javax.persistence.jdbc.driver", GOOD_DRIVER);
p.put("openjpa.ConnectionURL", BAD_URL_PROTOCOL);
verifyConnectException(p, PersistenceException.class,
UserException.class, GOOD_DRIVER, BAD_URL_PROTOCOL);
@ -70,7 +70,7 @@ public class TestBadJdbcUrl extends TestCase {
*/
public void testBadUrlProtocolValueWithValidDataSource() {
Properties p = new Properties();
p.put("openjpa.ConnectionDriverName", GOOD_DATASOURCE);
p.put("javax.persistence.jdbc.driver", GOOD_DATASOURCE);
p.put("openjpa.ConnectionURL", BAD_URL_PROTOCOL);
p.put("openjpa.ConnectionProperties", BAD_CONN_PROPS);
verifyConnectException(p, PersistenceException.class,
@ -82,7 +82,7 @@ public class TestBadJdbcUrl extends TestCase {
*/
public void testBadUrlSubprotocolValueWithValidDriverClass() {
Properties p = new Properties();
p.put("openjpa.ConnectionDriverName", GOOD_DRIVER);
p.put("javax.persistence.jdbc.driver", GOOD_DRIVER);
p.put("openjpa.ConnectionURL", BAD_URL_SUBPROTOCOL);
verifyConnectException(p, PersistenceException.class,
UserException.class, GOOD_DRIVER, BAD_URL_SUBPROTOCOL);
@ -93,7 +93,7 @@ public class TestBadJdbcUrl extends TestCase {
*/
public void testBadUrlSubprotocolValueWithValidDataSource() {
Properties p = new Properties();
p.put("openjpa.ConnectionDriverName", GOOD_DRIVER);
p.put("javax.persistence.jdbc.driver", GOOD_DRIVER);
p.put("openjpa.ConnectionURL", BAD_URL_SUBPROTOCOL);
verifyConnectException(p, PersistenceException.class,
UserException.class, GOOD_DRIVER, BAD_URL_SUBPROTOCOL);
@ -104,7 +104,7 @@ public class TestBadJdbcUrl extends TestCase {
*/
public void testValidUrlWithInvalidDriver() {
Properties p = new Properties();
p.put("openjpa.ConnectionDriverName", BAD_DRIVER);
p.put("javax.persistence.jdbc.driver", BAD_DRIVER);
p.put("openjpa.ConnectionURL", GOOD_URL);
verifyConnectException(p, PersistenceException.class,
UserException.class, GOOD_URL, BAD_DRIVER);

View File

@ -187,7 +187,7 @@ public class TestPersistenceManagerFactoryImpl extends BaseKernelTest {
public void testPlatform() {
OpenJPAEntityManagerFactory pmf =
(OpenJPAEntityManagerFactory) getEmf();
assertNotNull(pmf.getProperties().getProperty("Platform"));
assertNotNull(pmf.getProperties().get("Platform"));
}
protected OpenJPAEntityManagerFactory getEmf(Map props) {

View File

@ -0,0 +1,161 @@
/*
* 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.simple;
import java.util.Map;
import java.util.Set;
import org.apache.openjpa.kernel.AutoClear;
import org.apache.openjpa.lib.conf.Value;
import org.apache.openjpa.persistence.AutoClearType;
import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.test.SingleEMFTestCase;
/**
* This test case tests the getProperties() and getSupportedProperties() methods
* for the EntityManager and EntityManagerFactory.
*
* @author Dianne Richards
*
*/
public class TestPropertiesMethods extends SingleEMFTestCase {
OpenJPAEntityManager em;
public void setUp() throws Exception {
setUp("openjpa.DataCacheTimeout", "3",
"openjpa.ConnectionURL",
"jdbc:derby:target/database/jpa-test-database;create=true");
assertNotNull(emf);
em = emf.createEntityManager();
assertNotNull(em);
}
/**
* Test the EntityManager getProperties() method.
*/
public void testEMGetProperties() {
Map<String, Object> emProperties = em.getProperties();
// First, check a default property
String autoClear = (String) emProperties.get("openjpa.AutoClear");
assertEquals(String.valueOf(AutoClear.CLEAR_DATASTORE), autoClear);
// Next, check that the correct property key is returned for
// some properties that can have 2 keys. The success of this test
// case is dependent on the connection system values that are set
// in the pom.xml file for the test harness. It assumes that the
// system value keys are javax.persistence.jdbc.driver and
// openjpa.ConnectionProperties. If either one of these are changed,
// this test case may fail.
String javaxConnectionDriver =
(String) emProperties.get("javax.persistence.jdbc.driver");
assertNotNull(javaxConnectionDriver);
String openjpaConnectionURL =
(String) emProperties.get("openjpa.ConnectionURL");
assertNotNull(openjpaConnectionURL);
// Next, check that the javax.persistent property is returned instead
// of the corresponding openjpa one when no value has been set.
boolean javaxUserNameExists =
emProperties.containsKey("javax.persistence.jdbc.user");
assertTrue(javaxUserNameExists);
boolean openjpaUserNameExists =
emProperties.containsKey("openjpaConnectionUserName");
assertFalse(openjpaUserNameExists);
// Next, change a property and check for the changed value
em.setAutoClear(AutoClearType.ALL);
emProperties = em.getProperties();
autoClear = (String) emProperties.get("openjpa.AutoClear");
assertEquals(String.valueOf(AutoClear.CLEAR_ALL), autoClear);
// Make sure the password property is not returned.
boolean javaxPasswordExists =
emProperties.containsKey("javax.persistence.jdbc.password");
assertFalse(javaxPasswordExists);
boolean openjpaPasswordExists =
emProperties.containsKey("openjpa.ConnectionPassword");
assertFalse(openjpaPasswordExists);
// Add a dummy javax.persistence... equivalent key to one of the
// values that can be changed to force the code down a specific path.
Value autoClearValue = emf.getConfiguration().getValue("AutoClear");
assertNotNull(autoClearValue);
autoClearValue.addEquivalentKey("javax.persistence.AutoClear");
emProperties = em.getProperties();
assertFalse(emProperties.containsKey("openjpa.AutoClear"));
assertTrue(emProperties.containsKey("javax.persistence.AutoClear"));
}
/**
* Test the EntityManagerFactory getProperties() method.
*/
public void testEMFGetProperties() {
Map<String, Object> emfProperties = emf.getProperties();
// First, check a default property
String dataCacheManager =
(String) emfProperties.get("openjpa.DataCacheManager");
assertEquals("default", dataCacheManager);
// Next, check a property that was set during emf creation
String dataCacheTimeout =
(String) emfProperties.get("openjpa.DataCacheTimeout");
assertEquals(3, Integer.valueOf(dataCacheTimeout).intValue());
// Next get the Platform value set by the JDBCBrokerFactory
// or possibly a subclass
String platform = (String) emfProperties.get("Platform");
assertNotNull(platform);
// Next get one of the values set by the AbstractBrokerFactory
// or possibly a subclass
String vendorName = (String) emfProperties.get("VendorName");
assertNotNull(vendorName);
}
/**
* Test the EntityManagerFactory getSupportedProperties() method.
*/
public void testEMFGetSupportedProperties() {
Set<String> emfSupportedProperties = emf.getSupportedProperties();
assertNotNull(emfSupportedProperties);
assertTrue(emfSupportedProperties.contains("openjpa.IgnoreChanges"));
}
/**
* Test the EntityManager getSupportedProperties() method.
*/
public void testEMGetSupportedProperties() {
Set<String> emSupportedProperties = em.getSupportedProperties();
assertNotNull(emSupportedProperties);
assertTrue(emSupportedProperties.contains("openjpa.AutoDetach"));
// Make sure the all possible keys are returned
assertTrue(emSupportedProperties.contains(
"javax.persistence.lock.timeout"));
assertTrue(emSupportedProperties.contains("openjpa.LockTimeout"));
// Make sure the spec property for query timeout, that only has one
// key, is returned.
assertTrue(emSupportedProperties.contains(
"javax.persistence.query.timeout"));
}
}

View File

@ -71,7 +71,7 @@
<persistence-unit name="invalid">
<properties>
<property name="openjpa.ConnectionDriverName"
<property name="javax.persistence.jdbc.driver"
value="org.apache.commons.dbcp.BasicDataSource" />
<property name="openjpa.ConnectionProperties"
value="DriverClassName=not.a.real.Driver,Url=jdbc:notreal://"/>