blob: e9df72410046e6335dffc27e49617cbfe01bdeea [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 org.apache.jdo.tck.api.exceptions;
import java.lang.reflect.Constructor;
import org.apache.jdo.tck.JDO_Test;
import org.apache.jdo.tck.util.BatchTestRunner;
/**
* <B>Title:</B> Exception Constructor <br>
* <B>Keywords:</B> exception <br>
* <B>Assertion ID:</B> <br>
* <B>Assertion Description: </B>
*/
@SuppressWarnings("rawtypes")
public class ExceptionConstructor extends JDO_Test {
protected static final Class<?>[] classArrayEmpty = new Class[] {};
protected static final Class<?>[] classArrayString = new Class[] {String.class};
protected static final Class<?>[] classArrayStringObject =
new Class[] {String.class, Object.class};
protected static final Class<?>[] classArrayStringThrowable =
new Class[] {String.class, Throwable.class};
protected static final Class<?>[] classArrayStringThrowableArray =
new Class[] {String.class, Throwable[].class};
protected static final Class<?>[] classArrayStringThrowableObject =
new Class[] {String.class, Throwable.class, Object.class};
protected static final Class<?>[] classArrayStringThrowableArrayObject =
new Class[] {String.class, Throwable[].class, Object.class};
protected static final String message = "Message";
protected static final Object object = "Failed Object";
protected static final Throwable throwable = new Throwable("Throwable");
protected static final Object[] objectArrayEmpty = new Object[] {};
protected static final Object[] objectArrayString = new Object[] {message};
protected static final Object[] objectArrayStringObject = new Object[] {message, object};
protected static final Object[] objectArrayStringThrowableArray =
new Object[] {message, new Throwable[] {throwable}};
protected static final Object[] objectArrayStringThrowable = new Object[] {message, throwable};
protected static final Object[] objectArrayStringThrowableArrayObject =
new Object[] {message, new Throwable[] {throwable}, object};
protected static final Object[] objectArrayStringThrowableObject =
new Object[] {message, throwable, object};
/**
* The <code>main</code> is called when the class is directly executed from the command line.
*
* @param args The arguments passed to the program.
*/
public static void main(String[] args) {
BatchTestRunner.run(ExceptionConstructor.class);
}
/* test all constructors
*
*/
public void testConstructors() {
constructJDOCanRetryException();
constructJDODataStoreException();
constructJDODetachedFieldAccessException();
constructJDOException();
constructJDOFatalDataStoreException();
constructJDOFatalException();
constructJDOFatalInternalException();
constructJDOFatalUserException();
constructJDONullIdentityException();
constructJDOObjectNotFoundException();
constructJDOOptimisticVerificationException();
constructJDOUnsupportedOptionException();
constructJDOUserCallbackException();
failOnError();
}
protected void constructJDOCanRetryException() {
constructEmpty(javax.jdo.JDOCanRetryException.class);
constructString(javax.jdo.JDOCanRetryException.class);
constructStringThrowableArray(javax.jdo.JDOCanRetryException.class);
constructStringThrowable(javax.jdo.JDOCanRetryException.class);
constructStringObject(javax.jdo.JDOCanRetryException.class);
constructStringThrowableArrayObject(javax.jdo.JDOCanRetryException.class);
constructStringThrowableObject(javax.jdo.JDOCanRetryException.class);
}
protected void constructJDODataStoreException() {
constructEmpty(javax.jdo.JDODataStoreException.class);
constructString(javax.jdo.JDODataStoreException.class);
constructStringThrowableArray(javax.jdo.JDODataStoreException.class);
constructStringThrowable(javax.jdo.JDODataStoreException.class);
constructStringObject(javax.jdo.JDODataStoreException.class);
constructStringThrowableArrayObject(javax.jdo.JDODataStoreException.class);
constructStringThrowableObject(javax.jdo.JDODataStoreException.class);
}
protected void constructJDODetachedFieldAccessException() {
constructEmpty(javax.jdo.JDODetachedFieldAccessException.class);
constructString(javax.jdo.JDODetachedFieldAccessException.class);
constructStringThrowableArray(javax.jdo.JDODetachedFieldAccessException.class);
constructStringThrowable(javax.jdo.JDODetachedFieldAccessException.class);
constructStringObject(javax.jdo.JDODetachedFieldAccessException.class);
}
protected void constructJDOException() {
constructEmpty(javax.jdo.JDOException.class);
constructString(javax.jdo.JDOException.class);
constructStringThrowableArray(javax.jdo.JDOException.class);
constructStringThrowable(javax.jdo.JDOException.class);
constructStringObject(javax.jdo.JDOException.class);
constructStringThrowableArrayObject(javax.jdo.JDOException.class);
constructStringThrowableObject(javax.jdo.JDOException.class);
}
protected void constructJDOFatalDataStoreException() {
constructEmpty(javax.jdo.JDOFatalDataStoreException.class);
constructString(javax.jdo.JDOFatalDataStoreException.class);
constructStringThrowableArray(javax.jdo.JDOFatalDataStoreException.class);
constructStringThrowable(javax.jdo.JDOFatalDataStoreException.class);
constructStringObject(javax.jdo.JDOFatalDataStoreException.class);
}
protected void constructJDOFatalException() {
constructEmpty(javax.jdo.JDOFatalException.class);
constructString(javax.jdo.JDOFatalException.class);
constructStringThrowableArray(javax.jdo.JDOFatalException.class);
constructStringThrowable(javax.jdo.JDOFatalException.class);
constructStringObject(javax.jdo.JDOFatalException.class);
constructStringThrowableArrayObject(javax.jdo.JDOFatalException.class);
constructStringThrowableObject(javax.jdo.JDOFatalException.class);
}
protected void constructJDOFatalInternalException() {
constructEmpty(javax.jdo.JDOFatalInternalException.class);
constructString(javax.jdo.JDOFatalInternalException.class);
constructStringThrowableArray(javax.jdo.JDOFatalInternalException.class);
constructStringThrowable(javax.jdo.JDOFatalInternalException.class);
constructStringObject(javax.jdo.JDOFatalInternalException.class);
constructStringThrowableArrayObject(javax.jdo.JDOFatalInternalException.class);
constructStringThrowableObject(javax.jdo.JDOFatalInternalException.class);
}
protected void constructJDOFatalUserException() {
constructEmpty(javax.jdo.JDOFatalUserException.class);
constructString(javax.jdo.JDOFatalUserException.class);
constructStringThrowableArray(javax.jdo.JDOFatalUserException.class);
constructStringThrowable(javax.jdo.JDOFatalUserException.class);
constructStringObject(javax.jdo.JDOFatalUserException.class);
constructStringThrowableArrayObject(javax.jdo.JDOFatalUserException.class);
constructStringThrowableObject(javax.jdo.JDOFatalUserException.class);
}
protected void constructJDONullIdentityException() {
constructEmpty(javax.jdo.JDONullIdentityException.class);
constructString(javax.jdo.JDONullIdentityException.class);
constructStringThrowableArray(javax.jdo.JDONullIdentityException.class);
constructStringThrowable(javax.jdo.JDONullIdentityException.class);
constructStringObject(javax.jdo.JDONullIdentityException.class);
}
protected void constructJDOObjectNotFoundException() {
constructEmpty(javax.jdo.JDOObjectNotFoundException.class);
constructString(javax.jdo.JDOObjectNotFoundException.class);
constructStringThrowableArray(javax.jdo.JDOObjectNotFoundException.class);
constructStringObject(javax.jdo.JDOObjectNotFoundException.class);
constructStringThrowableArrayObject(javax.jdo.JDOObjectNotFoundException.class);
constructStringThrowableObject(javax.jdo.JDOObjectNotFoundException.class);
}
protected void constructJDOOptimisticVerificationException() {
constructEmpty(javax.jdo.JDOOptimisticVerificationException.class);
constructString(javax.jdo.JDOOptimisticVerificationException.class);
constructStringThrowableArray(javax.jdo.JDOOptimisticVerificationException.class);
constructStringObject(javax.jdo.JDOOptimisticVerificationException.class);
constructStringThrowableArrayObject(javax.jdo.JDOOptimisticVerificationException.class);
constructStringThrowableObject(javax.jdo.JDOOptimisticVerificationException.class);
}
protected void constructJDOUnsupportedOptionException() {
constructEmpty(javax.jdo.JDOUnsupportedOptionException.class);
constructString(javax.jdo.JDOUnsupportedOptionException.class);
constructStringThrowableArray(javax.jdo.JDOUnsupportedOptionException.class);
constructStringThrowable(javax.jdo.JDOUnsupportedOptionException.class);
}
protected void constructJDOUserCallbackException() {
constructEmpty(javax.jdo.JDOUserCallbackException.class);
constructString(javax.jdo.JDOUserCallbackException.class);
constructStringThrowableArray(javax.jdo.JDOUserCallbackException.class);
constructStringThrowable(javax.jdo.JDOUserCallbackException.class);
constructStringObject(javax.jdo.JDOUserCallbackException.class);
constructStringThrowableArrayObject(javax.jdo.JDOUserCallbackException.class);
constructStringThrowableObject(javax.jdo.JDOUserCallbackException.class);
}
protected void constructEmpty(Class<?> clazz) {
construct(clazz, classArrayEmpty, objectArrayEmpty, null, null, null);
}
protected void constructString(Class<?> clazz) {
construct(clazz, classArrayString, objectArrayString, message, null, null);
}
protected void constructStringObject(Class<?> clazz) {
construct(clazz, classArrayStringObject, objectArrayStringObject, message, object, null);
}
protected void constructStringThrowableArray(Class<?> clazz) {
construct(
clazz,
classArrayStringThrowableArray,
objectArrayStringThrowableArray,
message,
null,
throwable);
}
protected void constructStringThrowable(Class<?> clazz) {
construct(
clazz, classArrayStringThrowable, objectArrayStringThrowable, message, null, throwable);
}
protected void constructStringThrowableArrayObject(Class<?> clazz) {
construct(
clazz,
classArrayStringThrowableArrayObject,
objectArrayStringThrowableArrayObject,
message,
object,
throwable);
}
protected void constructStringThrowableObject(Class<?> clazz) {
construct(
clazz,
classArrayStringThrowableObject,
objectArrayStringThrowableObject,
message,
object,
throwable);
}
protected void construct(
Class<?> clazz,
Class<?>[] formal,
Object[] params,
String expectedMessage,
Object expectedObject,
Throwable expectedCause) {
Constructor<?> ctor = null;
try {
ctor = clazz.getConstructor(formal);
} catch (Throwable ex) {
appendMessage("Throwable caught during getConstructor. " + ex);
return;
}
try {
throw (Throwable) ctor.newInstance(params);
} catch (javax.jdo.JDOException ex) {
// good catch
if (clazz.isInstance(ex)) {
Object actualObject = ex.getFailedObject();
if (expectedObject != null && !expectedObject.equals(actualObject)) {
appendMessage(
"Wrong failed object for exception of "
+ clazz
+ "; Expected: "
+ expectedObject
+ " Actual: "
+ actualObject);
}
String actualMessage = ex.getMessage();
if (expectedMessage != null && !expectedMessage.equals(actualMessage)) {
appendMessage(
"Wrong message for exception of "
+ clazz
+ "; Expected: "
+ expectedMessage
+ " Actual: "
+ actualMessage);
}
Throwable actualCause = ex.getCause();
if (expectedCause != null && !expectedCause.equals(actualCause)) {
appendMessage(
"Wrong cause for exception of "
+ clazz
+ "; Expected: "
+ expectedCause
+ " Actual: "
+ actualCause);
}
return;
} else {
appendMessage(
"Wrong Throwable type caught for "
+ clazz
+ "; Expected:"
+ clazz
+ " Actual: "
+ ex.getClass());
}
} catch (Throwable t) {
appendMessage(
"Wrong Throwable type caught for "
+ clazz
+ "; Expected:"
+ clazz
+ " Actual: "
+ t.getClass());
}
}
}