blob: 9f33a1d41f570f95cc3737f6cf99e1fbdfbdb667 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.tests.types;
import java.util.*;
import org.eclipse.persistence.sessions.*;
import org.eclipse.persistence.descriptors.RelationalDescriptor;
import org.eclipse.persistence.tools.schemaframework.*;
import oracle.sql.*;
import org.eclipse.persistence.testing.framework.*;
import org.eclipse.persistence.internal.platform.database.oracle.TIMESTAMPHelper;
//Bug#3950634 Prevent java.lang.ArrayIndexOutOfBoundsException from occuring
public class CalendarToTSTZWithoutSessionTZTest extends TypeTester {
public Calendar calToTSTZ;
public CalendarToTSTZWithoutSessionTZTest () {
super("NEW");
}
public CalendarToTSTZWithoutSessionTZTest (String nameOfTest, int year, int month, int date, int hrs, int min, int sec, int nano, String zoneId)
{
super(nameOfTest);
calToTSTZ = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
calToTSTZ.set(year, month, date, hrs, min, sec);
calToTSTZ.set(Calendar.MILLISECOND, nano / 1000000);
}
public CalendarToTSTZWithoutSessionTZTest (String nameOfTest, Calendar c)
{
super(nameOfTest);
calToTSTZ = c;
}
public CalendarToTSTZWithoutSessionTZTest (String nameOfTest, long time)
{
super(nameOfTest);
calToTSTZ = Calendar.getInstance();
calToTSTZ.setTime(new java.util.Date(time));
}
public Calendar getCalToTSTZ() {
return calToTSTZ;
}
public void setCalToTSTZ(Calendar calToTSTZ) {
this.calToTSTZ = calToTSTZ;
}
public static RelationalDescriptor descriptor()
{
RelationalDescriptor descriptor = new RelationalDescriptor();
/* First define the class, table and descriptor properties. */
descriptor.setJavaClass(CalendarToTSTZWithoutSessionTZTest.class);
descriptor.setTableName("CALENDARTOTSTZ");
descriptor.setPrimaryKeyFieldName("NAME");
/* Next define the attribute mappings. */
descriptor.addDirectMapping("testName", "getTestName", "setTestName", "NAME");
descriptor.addDirectMapping("calToTSTZ", "CALTOTSTZ");
return descriptor;
}
public static TableDefinition tableDefinition(Session session)
{
TableDefinition definition= TypeTester.tableDefinition();
definition.setName("CALENDARTOTSTZ");
definition.addField("CALTOTSTZ", TIMESTAMPTZ.class);
return definition;
}
public String toString()
{
return getTestName() + " -> " + TIMESTAMPHelper.printCalendar(calToTSTZ);
}
static public Vector testInstances ()
{
Vector tests = new Vector();
tests.addElement(new CalendarToTSTZWithoutSessionTZTest("NOW", Calendar.getInstance()));
tests.addElement(new CalendarToTSTZWithoutSessionTZTest("ZERO", 1900,0,1,0,0,0,0,"GMT"));
return tests;
}
@Override
protected void verify(WriteTypeObjectTest testCase) throws TestException
{
try {
super.verify(testCase);
} catch (java.lang.ArrayIndexOutOfBoundsException e0) {
throw new TestErrorException("The test throws java.lang.ArrayIndexOutOfBoundsException");
} catch (TestException e) {
// JConnect in non native mode
if (caughtException != null &&
caughtException.toString().equals("EXCEPTION: org.eclipse.persistence.exceptions.DatabaseException \n"+
"DESCRIPTION: null \n"+
"INTERNAL EXCEPTION: java.sql.SQLException: JZ0S8: An escape sequence in a SQL Query was malformed.\n"+
"ERROR CODE: 0\n\n")) {
throw new TestProblemException("JConnect does not do dates in non-native SQL:\n" + caughtException.getInternalException());
}
if (testCase.getObjectFromDatabase() == null) {
throw new TestErrorException("TIMESTAMPTester throws exception: " + e);
}
}
}
}