blob: c7c42afca949a567e6b6cf861b54b56926bdf118 [file] [log] [blame]
/*
* 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
<<<<<<< Updated upstream
*
* 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
=======
*
* https://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
>>>>>>> Stashed changes
* limitations under the License.
*/
package javax.jdo;
import java.net.URL;
import java.util.Enumeration;
import java.util.Map;
import java.util.Random;
import javax.jdo.util.AbstractTest;
public abstract class AbstractJDOConfigTest extends AbstractTest {
/** A class path prefix used in the various tests where the class path needs to be set. */
protected static final String JDOCONFIG_CLASSPATH_PREFIX = initJDOConfigClasspathPrefix();
/**
* Returns the JDO configuration class path prefix's default value, which is the project base
* directory suffixed by the path to the configuration directory
* (<tt>src/test/resources/jdoconfig</tt>).
*
* @return the default class path prefix used by this test suite.
*/
protected static String initJDOConfigClasspathPrefix() {
return initBasedir() + "src/test/resources/jdoconfig";
}
/**
* The class path used to specify the location of test class files.
*
* @return the class path where test class files can be found.
*/
protected static final String TEST_CLASSPATH = initTestClasspath();
/**
* Returns the default class path for JDO test class files (<tt>target/test-classes/</tt>).
*
* @return the default class path for JDO test class files.
*/
protected static String initTestClasspath() {
return initBasedir() + "target/test-classes/";
}
/** The class path used to locate the JDO API class files. */
protected static final String API_CLASSPATH = initAPIClasspath();
/**
* Returns the default class path for JDO API class files (<tt>target/classes/</tt>).
*
* @return the default class path for JDO API class files.
*/
protected static String initAPIClasspath() {
return initBasedir() + "target/classes/";
}
/**
* Returns the base directory for this project. This base directory is used to build up the other
* class paths defined in this test suite. The value returned is the value returned by <code>
* System.getProperty("basedir")</code>. A trailing slash is appended to the path if it doesn't
* exist.
*
* @return the default base directory of the project.
*/
protected static String initBasedir() {
String basedir = System.getProperty("basedir");
if (basedir != null) {
if (!basedir.endsWith("/")) {
basedir += "/";
}
} else {
basedir = "";
}
return basedir;
}
/** A randomizer seeded with the system clock's current time. */
protected static final Random RANDOM = new Random(System.currentTimeMillis());
/**
* Fails the test if the number of properties in the two specified {@link java.util.Map Map}
* objects are not identical or their values do not match.
*
* @param expected the first {@link java.util.Map Map} object to test.
* @param actual the second {@link java.util.Map Map} object to test.
*/
static void assertEqualProperties(Map<?, ?> expected, Map<?, ?> actual) {
for (Map.Entry<?, ?> entry : expected.entrySet()) {
String key = (String) entry.getKey();
String expectedValue = (String) entry.getValue();
String actualValue = (String) actual.get(key);
assertEquals(
"Actual property at key ["
+ key
+ "] with value ["
+ actualValue
+ "] not equal to expected value ["
+ expectedValue
+ "]",
expectedValue,
actualValue);
}
}
protected String getPMFClassNameViaServiceLookup(ClassLoader loader) {
try {
Enumeration<URL> urls = JDOHelper.getResources(loader, SERVICE_LOOKUP_PMF_RESOURCE_NAME);
while (urls.hasMoreElements()) {
// return the first one found
return JDOHelper.getClassNameFromURL(urls.nextElement());
}
} catch (Exception ex) {
// ignore exceptions from i/o errors
}
return null;
}
}