| /* |
| * 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.sdo.helper.datahelper; |
| |
| import java.util.ArrayList; |
| import java.util.Calendar; |
| import java.util.Date; |
| import java.util.List; |
| import java.util.TimeZone; |
| |
| import junit.textui.TestRunner; |
| |
| import org.eclipse.persistence.exceptions.SDOException; |
| import org.eclipse.persistence.sdo.SDOConstants; |
| import org.eclipse.persistence.testing.sdo.SDOTestCase; |
| |
| import commonj.sdo.DataObject; |
| import commonj.sdo.Type; |
| |
| public class DateConvertBug5672591TestCases extends SDOTestCase { |
| Type rootType; |
| |
| public DateConvertBug5672591TestCases(String name) { |
| super(name); |
| } |
| |
| public static void main(String[] args) { |
| String[] arguments = { "-c", "org.eclipse.persistence.testing.sdo.helper.datahelper.DateConvertBug5672591TestCases" }; |
| TestRunner.main(arguments); |
| } |
| |
| @Override |
| public void setUp() { |
| super.setUp(); |
| DataObject rootDo = dataFactory.create("commonj.sdo", "Type"); |
| rootDo.set("name", "root"); |
| rootDo.set("uri", "theUri"); |
| addProperty(rootDo, "theProp", SDOConstants.SDO_YEARMONTHDAY, false, false, true); |
| addProperty(rootDo, "theManyProp", SDOConstants.SDO_YEARMONTHDAY, false, true, true); |
| addProperty(rootDo, "theBooleanProp", SDOConstants.SDO_BOOLEAN, false, false, true); |
| addProperty(rootDo, "theBooleanManyProp", SDOConstants.SDO_BOOLEAN, false, true, true); |
| rootType = typeHelper.define(rootDo); |
| } |
| |
| public void testConversion() { |
| DataObject testDataObject = dataFactory.create(rootType); |
| Calendar cal = Calendar.getInstance(); |
| cal.clear(); |
| cal.set(Calendar.YEAR, 1975); |
| cal.set(Calendar.MONTH, Calendar.FEBRUARY); |
| cal.set(Calendar.DATE, 21); |
| cal.setTimeZone(TimeZone.getTimeZone("GMT")); |
| Date dateValue = cal.getTime(); |
| testDataObject.setDate(rootType.getProperty("theProp"), dateValue); |
| Object getValue = testDataObject.get("theProp"); |
| |
| //value should be converted to a string with dataHelper |
| assertEquals("1975-02-21", getValue); |
| } |
| |
| public void testExceptionSet() { |
| DataObject testDataObject = dataFactory.create(rootType); |
| Calendar cal = Calendar.getInstance(); |
| cal.clear(); |
| cal.set(Calendar.YEAR, 1975); |
| cal.set(Calendar.MONTH, Calendar.FEBRUARY); |
| cal.set(Calendar.DATE, 21); |
| Date dateValue = cal.getTime(); |
| try { |
| //value should be converted to a string with dataHelper but unsupported conversion |
| testDataObject.setDate(rootType.getProperty("theBooleanProp"), dateValue); |
| } catch (IllegalArgumentException e) { |
| assertTrue(e.getCause() instanceof SDOException); |
| //assertEquals(SDOException.WRONG_VALUE_FOR_PROPERTY ,((SDOException)e.getCause()).getErrorCode()); |
| //changed from WRONG_VALUE_FOR_PROPERTY to conversion error...this is because of removal of datahelper.isconversionsupported |
| assertEquals(SDOException.CONVERSION_ERROR, ((SDOException)e.getCause()).getErrorCode()); |
| return; |
| } |
| fail("An IllegalArgumentException should have occurred"); |
| } |
| |
| public void testConversionAddToList() { |
| DataObject testDataObject = dataFactory.create(rootType); |
| Calendar cal = Calendar.getInstance(); |
| cal.clear(); |
| cal.set(Calendar.YEAR, 1975); |
| cal.set(Calendar.MONTH, Calendar.FEBRUARY); |
| cal.set(Calendar.DATE, 21); |
| Date dateValue = cal.getTime(); |
| |
| testDataObject.getList("theManyProp").add(dateValue); |
| Object getValue = testDataObject.getList("theManyProp").get(0); |
| |
| //value should be converted to a string with dataHelper |
| // assertEquals("1975-02-21", getValue); |
| assertEquals(dateValue, getValue); |
| } |
| |
| public void testConversionSetList() { |
| DataObject testDataObject = dataFactory.create(rootType); |
| Calendar cal = Calendar.getInstance(); |
| cal.clear(); |
| cal.set(Calendar.YEAR, 1975); |
| cal.set(Calendar.MONTH, Calendar.FEBRUARY); |
| cal.set(Calendar.DATE, 21); |
| cal.setTimeZone(TimeZone.getTimeZone("GMT")); |
| Date dateValue = cal.getTime(); |
| |
| List theList = new ArrayList(); |
| theList.add(dateValue); |
| testDataObject.setList("theManyProp", theList); |
| Object getValue = testDataObject.getList("theManyProp").get(0); |
| |
| //value should be converted to a string with dataHelper |
| assertEquals("1975-02-21", getValue); |
| } |
| |
| public void testConversionSetListGenericSet() { |
| DataObject testDataObject = dataFactory.create(rootType); |
| Calendar cal = Calendar.getInstance(); |
| cal.clear(); |
| cal.set(Calendar.YEAR, 1975); |
| cal.set(Calendar.MONTH, Calendar.FEBRUARY); |
| cal.set(Calendar.DATE, 21); |
| Date dateValue = cal.getTime(); |
| |
| List theList = new ArrayList(); |
| theList.add(dateValue); |
| testDataObject.set("theManyProp", theList); |
| Object getValue = testDataObject.getList("theManyProp").get(0); |
| |
| //no conversion happens with generic set |
| assertEquals(dateValue, getValue); |
| } |
| |
| public void testConversionAddToListException() { |
| DataObject testDataObject = dataFactory.create(rootType); |
| Calendar cal = Calendar.getInstance(); |
| cal.clear(); |
| cal.set(Calendar.YEAR, 1975); |
| cal.set(Calendar.MONTH, Calendar.FEBRUARY); |
| cal.set(Calendar.DATE, 21); |
| Date dateValue = cal.getTime(); |
| List theList = new ArrayList(); |
| theList.add(dateValue); |
| try { |
| //value should be converted to a string with dataHelper but unsupported conversion |
| testDataObject.setList("theBooleanManyProp", theList); |
| } catch (IllegalArgumentException e) { |
| return; |
| } |
| fail("An IllegalArgumentException should have occurred"); |
| } |
| } |