/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.tests.types; | |
import org.eclipse.persistence.testing.framework.*; | |
/** | |
* Custom WriteObjectTests that will allow the TypeTester object to pass through the calls to: | |
* test(), setup(), & verify(). This ius required so the tests can customize according to the platform. | |
*/ | |
public class WriteTypeObjectTest extends WriteObjectTest { | |
/** The following allows individual tests to be run with or without using native sql. */ | |
protected boolean useNativeSQL = false; | |
protected boolean didUseNativeSQL = false; | |
public WriteTypeObjectTest(TypeTester originalObject) { | |
super(originalObject); | |
// Need to set shouldMutate to false as the mutator method causes problems | |
// with tests that pass in null values and field length tests. | |
super.setTestShouldMutate(false); | |
} | |
public String getName() { | |
return "WriteTypeObjectTest(" + originalObject.getClass() + ")"; | |
} | |
protected Object getObjectFromDatabase() { | |
return this.objectFromDatabase; | |
} | |
protected void setup() { | |
if (shouldUseNativeSQL()) { | |
if (!getSession().getLogin().shouldUseNativeSQL()) { | |
setDidUseNativeSQL(true); | |
getAbstractSession().getAccessor().disconnect(getAbstractSession()); | |
getSession().getLogin().setUsesNativeSQL(true); | |
getAbstractSession().getAccessor().connect(getSession().getLogin(), getAbstractSession()); | |
} | |
} | |
((TypeTester)this.originalObject).setup(getSession()); | |
super.setup(); | |
} | |
protected void superTest() { | |
super.test(); | |
} | |
/** | |
* Verify if the objects match completely through allowing the session to use the descriptors. | |
* This will compare the objects and all of their privately owned parts. | |
*/ | |
protected void superVerify() throws TestErrorException, TestWarningException { | |
super.verify(); | |
} | |
protected void test() { | |
((TypeTester)this.originalObject).test(this); | |
} | |
public String toString() { | |
return originalObject.toString(); | |
} | |
/** | |
* Verify if the objects match completely through allowing the session to use the descriptors. | |
* This will compare the objects and all of their privately owned parts. | |
*/ | |
protected void verify() throws TestErrorException, TestWarningException { | |
((TypeTester)this.originalObject).verify(this); | |
} | |
/** | |
* Was native sql used for this test only? | |
*/ | |
protected boolean didUseNativeSQL() { | |
return didUseNativeSQL; | |
} | |
public void reset() { | |
super.reset(); | |
if (didUseNativeSQL()) { | |
getAbstractSession().getAccessor().disconnect(getAbstractSession()); | |
getSession().getLogin().setUsesNativeSQL(false); | |
getAbstractSession().getAccessor().connect(getSession().getLogin(), getAbstractSession()); | |
} | |
} | |
/** | |
* Notify the test that the session's usesNativeSQL setting needs to be | |
* reset after the test. | |
*/ | |
protected void setDidUseNativeSQL(boolean value) { | |
didUseNativeSQL = value; | |
} | |
/** | |
* Allows one to set usesNativeSQL to true on a test by test basis. | |
*/ | |
public void setUseNativeSQL(boolean value) { | |
useNativeSQL = value; | |
} | |
public boolean shouldUseNativeSQL() { | |
return useNativeSQL; | |
} | |
} |