blob: 35beca8f04697b4375a6df0c81290fa39e8bdeaa [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.oxm.mappings.typeddirect;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import java.util.Vector;
import java.io.StringReader;
import java.text.SimpleDateFormat;
import org.eclipse.persistence.internal.helper.Helper;
import org.eclipse.persistence.testing.oxm.mappings.XMLMappingTestCases;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
public class TypedDirectMappingTestCases extends XMLMappingTestCases {
private static final String DATE_FORMAT = "yyyy-MM-dd";
private static final String TIME_FORMAT = "HH:mm:ss";
private static final String DATE_TIME_FORMAT = DATE_FORMAT + "'T'" + TIME_FORMAT;
private static final String CONTROL_XML_DOCUMENT;
static {
CONTROL_XML_DOCUMENT = "<?xml version = '1.0' encoding = 'UTF-8'?>" +
"<test-object>" +
"<binary>MTIzNDU2Nzg5</binary>" +
"<binary>313233343536373839</binary>" +
"<date>2013-02-17</date>" +
"<time>23:21:00</time>" +
"<date-time>2013-02-17T23:21:00</date-time>" +
"<date-vector>" +
"<date-element>2013-02-17</date-element>" +
"<date-element>2013-04-09</date-element>" +
"<date-element>2013-04-18</date-element>" +
"</date-vector>" +
"<time-vector>" +
"<time-element>23:21:00</time-element>" +
"<time-element>23:58:00</time-element>" +
"<time-element>06:00:00</time-element>" +
"</time-vector>" +
"<date-time-vector>" +
"<date-time-element>2013-02-17T23:21:00</date-time-element>" +
"<date-time-element>2013-04-09T23:58:00</date-time-element>" +
"<date-time-element>2013-04-18T06:00:00</date-time-element>" +
"</date-time-vector>" +
"<base-64-vector>" +
"<base-64-element>MTEx</base-64-element>" +
"<base-64-element>MjIy</base-64-element>" +
"<base-64-element>MzMz</base-64-element>" +
"</base-64-vector>" +
"<hex-vector>" +
"<hex-element>313131</hex-element>" +
"<hex-element>323232</hex-element>" +
"<hex-element>333333</hex-element>" +
"</hex-vector>" +
"<untyped-date>2013-02-20T01:00:00"+TIMEZONE_OFFSET+"</untyped-date>" +
"<typed-date>2013-02-20</typed-date>" +
"<untyped-sql-date>2013-02-20</untyped-sql-date>" +
"<typed-sql-date>2013-02-20</typed-sql-date>" +
"<untyped-timestamp>2013-02-20T01:00:00"+TIMEZONE_OFFSET+"</untyped-timestamp>" +
"<typed-timestamp>01:00:00"+(TIMEZONE_OFFSET.equals("Z") ? "+01:00" : TIMEZONE_OFFSET)
+"</typed-timestamp>" +
"</test-object>";
}
public TypedDirectMappingTestCases(String name) throws Exception {
super(name);
// Bug #454154 - TypedDirectMappingTestCases were failing on test farm which run oxms tests in order strange
// to default eclipselink oxm tests repo order. -> The following line ensures the same time zone is always
// used for these test cases and that these test cases will pass on farm when they pass on eclipselink repo.
TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
setProject(new TypedDirectMappingTestProject());
}
@Override
public Object getControlObject() {
try {
String base64 = "123456789";
String hex = "123456789";
Calendar time, time2, time3, date, date2, date3, dateTime, dateTime2, dateTime3;
Vector hexAndBase64Vector, timeVector, dateVector, dateTimeVector;
Date typedDate, untypedDate;
java.sql.Date typedSqlDate, untypedSqlDate;
java.sql.Timestamp typedTimestamp, untypedTimestamp;
hexAndBase64Vector = new Vector();
hexAndBase64Vector.addElement(new String("111").getBytes());
hexAndBase64Vector.addElement(new String("222").getBytes());
hexAndBase64Vector.addElement(new String("333").getBytes());
Date parsedDate = new SimpleDateFormat(TIME_FORMAT).parse("23:21:00");
time = Calendar.getInstance();
time.setTime(parsedDate); time.clear(Calendar.YEAR); time.clear(Calendar.MONTH); time.clear(Calendar.DATE); time.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(TIME_FORMAT).parse("23:58:00");
time2 = Calendar.getInstance();
time2.setTime(parsedDate); time2.clear(Calendar.YEAR); time2.clear(Calendar.MONTH); time2.clear(Calendar.DATE); time2.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(TIME_FORMAT).parse("06:00:00");
time3 = Calendar.getInstance();
time3.setTime(parsedDate); time3.clear(Calendar.YEAR); time3.clear(Calendar.MONTH); time3.clear(Calendar.DATE); time3.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(DATE_FORMAT).parse("2013-02-17");
date = Calendar.getInstance();
date.setTime(parsedDate); date.clear(Calendar.HOUR); date.clear(Calendar.MINUTE); date.clear(Calendar.SECOND); date.clear(Calendar.MILLISECOND); date.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(DATE_FORMAT).parse("2013-04-09");
date2 = Calendar.getInstance();
date2.setTime(parsedDate); date2.clear(Calendar.HOUR); date2.clear(Calendar.MINUTE); date2.clear(Calendar.SECOND); date2.clear(Calendar.MILLISECOND); date2.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(DATE_FORMAT).parse("2013-04-18");
date3 = Calendar.getInstance();
date3.setTime(parsedDate); date3.clear(Calendar.HOUR); date3.clear(Calendar.MINUTE); date3.clear(Calendar.SECOND); date3.clear(Calendar.MILLISECOND); date3.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(DATE_TIME_FORMAT).parse("2013-02-17T23:21:00");
dateTime = Calendar.getInstance(); dateTime.clear();
dateTime.setTime(parsedDate);
dateTime.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(DATE_TIME_FORMAT).parse("2013-04-09T23:58:00");
dateTime2 = Calendar.getInstance(); dateTime2.clear();
dateTime2.setTime(parsedDate);
dateTime2.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(DATE_TIME_FORMAT).parse("2013-04-18T06:00:00");
dateTime3 = Calendar.getInstance(); dateTime3.clear();
dateTime3.setTime(parsedDate);
dateTime3.clear(Calendar.ZONE_OFFSET);
typedDate = new SimpleDateFormat(DATE_FORMAT).parse("2013-02-20");
untypedDate = new SimpleDateFormat(DATE_TIME_FORMAT).parse("2013-02-20T01:00:00");
typedSqlDate = Helper.sqlDateFromUtilDate(typedDate);
untypedSqlDate = Helper.sqlDateFromUtilDate(untypedDate);
untypedTimestamp = Helper.timestampFromDate(untypedDate);
// use DATE_TIME_FORMAT to account for daylight savings
typedTimestamp = Helper.timestampFromDate(new SimpleDateFormat(DATE_TIME_FORMAT).parse("2013-02-20T01:00:00"));
dateVector = new Vector();
dateVector.addElement(date);
dateVector.addElement(date2);
dateVector.addElement(date3);
timeVector = new Vector();
timeVector.addElement(time);
timeVector.addElement(time2);
timeVector.addElement(time3);
dateTimeVector = new Vector();
dateTimeVector.addElement(dateTime);
dateTimeVector.addElement(dateTime2);
dateTimeVector.addElement(dateTime3);
TestObject testObject = new TestObject();
testObject.setBase64(base64.getBytes());
testObject.setHex(hex.getBytes());
testObject.setDate(date);
testObject.setTime(time);
testObject.setDateTime(dateTime);
testObject.setBase64Vector(hexAndBase64Vector);
testObject.setHexVector(hexAndBase64Vector);
testObject.setDateVector(dateVector);
testObject.setTimeVector(timeVector);
testObject.setDateTimeVector(dateTimeVector);
testObject.setUntypedDate(untypedDate);
testObject.setTypedDate(typedDate);
testObject.setUntypedSqlDate(untypedSqlDate);
testObject.setTypedSqlDate(typedSqlDate);
testObject.setUntypedTimestamp(untypedTimestamp);
testObject.setTypedTimestamp(typedTimestamp);
return testObject;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected Document getControlDocument() {
StringReader reader = new StringReader(CONTROL_XML_DOCUMENT);
InputSource is = new InputSource(reader);
Document doc = null;
try {
doc = parser.parse(is);
} catch (Exception e) {
fail("An error occurred setting up the control document");
}
return doc;
}
@Override
public boolean isUnmarshalTest() {
return false;
}
}