/******************************************************************************* | |
* 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 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; | |
} | |
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); | |
} | |
} | |
} | |
} |