/******************************************************************************* | |
* Copyright (c) 2011, 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: | |
* David McCann - October 24, 2011 - 2.4 - Initial implementation | |
******************************************************************************/ | |
package dbws.testing.objecttabletype; | |
//javase imports | |
import java.io.StringReader; | |
import java.sql.SQLException; | |
import java.sql.Statement; | |
import org.w3c.dom.Document; | |
//java eXtension imports | |
import javax.wsdl.WSDLException; | |
//JUnit4 imports | |
import org.junit.AfterClass; | |
import org.junit.BeforeClass; | |
import org.junit.Test; | |
import static org.junit.Assert.assertEquals; | |
import static org.junit.Assert.assertNotNull; | |
import static org.junit.Assert.assertTrue; | |
//EclipseLink imports | |
import org.eclipse.persistence.descriptors.ClassDescriptor; | |
import org.eclipse.persistence.internal.xr.Invocation; | |
import org.eclipse.persistence.internal.xr.Operation; | |
import org.eclipse.persistence.oxm.XMLMarshaller; | |
import org.eclipse.persistence.oxm.XMLUnmarshaller; | |
import org.eclipse.persistence.sessions.Project; | |
//test imports | |
import dbws.testing.DBWSTestSuite; | |
/** | |
* Tests Oracle Object Table types. | |
* | |
*/ | |
public class ObjectTableTypeTestSuite extends DBWSTestSuite { | |
static final String PERSON_TYPE_ALIAS = "Dbws_persontype"; | |
static final String PERSON_TYPE_CLASSNAME = "objecttabletypetests.Dbws_persontype"; | |
static final String PERSON_TYPE_TABLE_ALIAS = "Dbws_persontype_table"; | |
static final String PERSON_TYPE_TABLE_CLASSNAME = "objecttabletypetests.Dbws_persontype_table_CollectionWrapper"; | |
static final String CREATE_PERSONTYPE = | |
"CREATE OR REPLACE TYPE DBWS_PERSONTYPE AS OBJECT (" + | |
"\nNAME VARCHAR2(20)," + | |
"\nAGE NUMBER," + | |
"\nGENDER VARCHAR2(1)," + | |
"\nINCARCERATED DATE" + | |
"\n)"; | |
static final String CREATE_PERSONTYPE_TABLE = | |
"CREATE OR REPLACE TYPE DBWS_PERSONTYPE_TABLE AS TABLE OF DBWS_PERSONTYPE"; | |
static final String CREATE_MYEMPOBJECT = | |
"CREATE OR REPLACE TYPE DBWS_MYEMPOBJECT AS OBJECT (" + | |
"\nEMPNO NUMBER(4)," + | |
"\nENAME VARCHAR2(10)" + | |
"\n)"; | |
static final String CREATE_MYEMPOBJECT_TABLE = | |
"CREATE OR REPLACE TYPE DBWS_MYEMPOBJECT_TABLE AS TABLE OF DBWS_MYEMPOBJECT"; | |
static final String CREATE_GROUPTYPE = | |
"CREATE OR REPLACE TYPE DBWS_GROUPTYPE AS OBJECT (" + | |
"\nNAME VARCHAR2(20)," + | |
"\nECOUNT NUMBER," + | |
"\nETABLE DBWS_MYEMPOBJECT_TABLE" + | |
"\n)"; | |
static final String CREATE_GET_PERSONTYPE_PROC = | |
"CREATE OR REPLACE PROCEDURE GET_PERSONTYPE_TABLE(PTABLE OUT DBWS_PERSONTYPE_TABLE) AS" + | |
"\nBEGIN" + | |
"\nPTABLE := DBWS_PERSONTYPE_TABLE();" + | |
"\nPTABLE.EXTEND;" + | |
"\nPTABLE(PTABLE.COUNT) := DBWS_PERSONTYPE('BUBBLES', 32, 'M', " + | |
"TO_DATE('1990-11-19 00:00:00','YYYY-MM-DD HH24:MI:SS'));" + | |
"\nPTABLE.EXTEND;" + | |
"\nPTABLE(PTABLE.COUNT) := DBWS_PERSONTYPE('RICKY', 33, 'M', " + | |
"TO_DATE('1985-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS'));" + | |
"\nPTABLE.EXTEND;" + | |
"\nPTABLE(PTABLE.COUNT) := DBWS_PERSONTYPE('JULIAN', 35, 'M', " + | |
"TO_DATE('1988-02-07 00:00:00','YYYY-MM-DD HH24:MI:SS'));" + | |
"\nPTABLE.EXTEND;" + | |
"\nPTABLE(PTABLE.COUNT) := DBWS_PERSONTYPE('SARAH', 25, 'F', " + | |
"TO_DATE('2002-05-12 00:00:00','YYYY-MM-DD HH24:MI:SS'));" + | |
"\nPTABLE.EXTEND;" + | |
"\nPTABLE(PTABLE.COUNT) := DBWS_PERSONTYPE('J-ROC', 27, 'M', " + | |
"TO_DATE('1998-12-17 00:00:00','YYYY-MM-DD HH24:MI:SS'));" + | |
"\nEND GET_PERSONTYPE_TABLE;"; | |
static final String CREATE_GET_PERSONTYPE_TABLE_PROC2 = | |
"CREATE OR REPLACE PROCEDURE GET_PERSONTYPE_TABLE_PROC2(PTABLE IN OUT DBWS_PERSONTYPE_TABLE) AS" + | |
"\nBEGIN" + | |
"\nPTABLE.EXTEND;" + | |
"\nPTABLE(PTABLE.COUNT) := DBWS_PERSONTYPE('COREY', 20, 'M', " + | |
"TO_DATE('1997-12-09 00:00:00','YYYY-MM-DD HH24:MI:SS'));" + | |
"\nEND GET_PERSONTYPE_TABLE_PROC2;"; | |
static final String CREATE_GET_PERSONTYPE2_FUNC = | |
"CREATE OR REPLACE FUNCTION GET_PERSONTYPE_TABLE2 RETURN DBWS_PERSONTYPE_TABLE AS" + | |
"\nL_DATA DBWS_PERSONTYPE_TABLE;" + | |
"\nBEGIN" + | |
"\nGET_PERSONTYPE_TABLE(L_DATA);" + | |
"\nRETURN L_DATA;" + | |
"\nEND GET_PERSONTYPE_TABLE2;"; | |
static final String CREATE_GROUPTYPE_PROC = | |
"CREATE OR REPLACE PROCEDURE CREATE_GROUPTYPE(GNAME IN VARCHAR2, NEWGROUP OUT DBWS_GROUPTYPE) AS" + | |
"\nETABLE DBWS_MYEMPOBJECT_TABLE;" + | |
"\nBEGIN" + | |
"\nETABLE := DBWS_MYEMPOBJECT_TABLE();" + | |
"\nETABLE.EXTEND;" + | |
"\nETABLE(ETABLE.COUNT) := DBWS_MYEMPOBJECT(20, 'COREY');" + | |
"\nETABLE.EXTEND;" + | |
"\nETABLE(ETABLE.COUNT) := DBWS_MYEMPOBJECT(33, 'RICKY');" + | |
"\nETABLE.EXTEND;" + | |
"\nETABLE(ETABLE.COUNT) := DBWS_MYEMPOBJECT(32, 'BUBBLES');" + | |
"\nNEWGROUP := DBWS_GROUPTYPE(GNAME, 3, ETABLE);" + | |
"\nEND CREATE_GROUPTYPE;"; | |
static final String CREATE_ADD_PERSONTYPE_TO_TABLE_PROC = | |
"CREATE OR REPLACE PROCEDURE ADD_PERSONTYPE_TO_TABLE(PTYPETOADD IN DBWS_PERSONTYPE, OLDTABLE IN DBWS_PERSONTYPE_TABLE, NEWTABLE OUT DBWS_PERSONTYPE_TABLE) AS" + | |
"\nBEGIN" + | |
"\nNEWTABLE := OLDTABLE;" + | |
"\nNEWTABLE.EXTEND;" + | |
"\nNEWTABLE(NEWTABLE.COUNT) := PTYPETOADD;" + | |
"\nEND ADD_PERSONTYPE_TO_TABLE;"; | |
static final String CREATE_ADD_PERSONTYPE_TO_TABLE2_FUNC = | |
"CREATE OR REPLACE FUNCTION ADD_PERSONTYPE_TO_TABLE2(PTYPETOADD IN DBWS_PERSONTYPE, OLDTABLE IN DBWS_PERSONTYPE_TABLE) RETURN DBWS_PERSONTYPE_TABLE AS" + | |
"\nNEWTABLE DBWS_PERSONTYPE_TABLE;" + | |
"\nBEGIN" + | |
"\nADD_PERSONTYPE_TO_TABLE(PTYPETOADD, OLDTABLE, NEWTABLE);" + | |
"\nRETURN NEWTABLE;" + | |
"\nEND ADD_PERSONTYPE_TO_TABLE2;"; | |
static final String DROP_GET_PERSONTYPE_TABLE = | |
"DROP PROCEDURE GET_PERSONTYPE_TABLE"; | |
static final String DROP_GET_PERSONTYPE_TABLE_PROC2 = | |
"DROP PROCEDURE GET_PERSONTYPE_TABLE_PROC2"; | |
static final String DROP_GET_PERSONTYPE2_FUNC = | |
"DROP FUNCTION GET_PERSONTYPE_TABLE2"; | |
static final String DROP_ADD_PERSONTYPE_TO_TABLE_PROC = | |
"DROP PROCEDURE ADD_PERSONTYPE_TO_TABLE"; | |
static final String DROP_ADD_PERSONTYPE_TO_TABLE2_FUNC = | |
"DROP FUNCTION ADD_PERSONTYPE_TO_TABLE2"; | |
static final String DROP_GROUPTYPE_PROC = | |
"DROP PROCEDURE CREATE_GROUPTYPE"; | |
static final String DROP_GROUPTYPE = | |
"DROP TYPE DBWS_GROUPTYPE"; | |
static final String DROP_MYEMPOBJECT_TABLE = | |
"DROP TYPE DBWS_MYEMPOBJECT_TABLE"; | |
static final String DROP_MYEMPOBJECT = | |
"DROP TYPE DBWS_MYEMPOBJECT"; | |
static final String DROP_PERSONTYPE_TABLE = | |
"DROP TYPE DBWS_PERSONTYPE_TABLE"; | |
static final String DROP_PERSONTYPE = | |
"DROP TYPE DBWS_PERSONTYPE"; | |
// ====================================================================== | |
static final String CREATE_EMP_TABLE = | |
"CREATE TABLE DBWS_EMP (" + | |
"\nEMPNO VARCHAR2(10) NOT NULL," + | |
"\nENAME VARCHAR2(35)," + | |
"\nSAL NUMBER(6,0)," + | |
"\nPRIMARY KEY (EMPNO)" + | |
"\n)"; | |
static final String[] POPULATE_EMP_TABLE = new String[] { | |
"INSERT INTO DBWS_EMP (EMPNO, ENAME, SAL) VALUES ('1', 'THEIF', 99000)", | |
"INSERT INTO DBWS_EMP (EMPNO, ENAME, SAL) VALUES ('2', 'BULLY', 0)", | |
"INSERT INTO DBWS_EMP (EMPNO, ENAME, SAL) VALUES ('3', 'CON', 4255)", | |
"INSERT INTO DBWS_EMP (EMPNO, ENAME, SAL) VALUES ('4', 'CON', 4000)", | |
"INSERT INTO DBWS_EMP (EMPNO, ENAME, SAL) VALUES ('5', 'COP', 25000)", | |
}; | |
static final String CREATE_TJOBS = | |
"create or replace TYPE T_JOBS AS OBJECT (" + | |
"JOB_ID VARCHAR2(10)," + | |
"JOB_TITLE VARCHAR2(35)," + | |
"MAX_SALARY NUMBER(6,0)," + | |
"CONSTRUCTOR FUNCTION T_JOBS(JOB_ID VARCHAR2, JOB_TITLE VARCHAR2, MAX_SALARY NUMBER) " + | |
"RETURN SELF AS RESULT" + | |
");"; | |
static final String CREATE_TJOBS_BODY = | |
"CREATE OR REPLACE TYPE BODY T_JOBS AS " + | |
"CONSTRUCTOR FUNCTION T_JOBS(JOB_ID VARCHAR2, JOB_TITLE VARCHAR2, MAX_SALARY NUMBER) " + | |
"RETURN SELF AS RESULT IS " + | |
"BEGIN " + | |
"SELF.JOB_ID := JOB_ID;" + | |
"SELF.JOB_TITLE := JOB_TITLE;" + | |
"SELF.MAX_SALARY := MAX_SALARY;" + | |
"RETURN;" + | |
"END;" + | |
"END;"; | |
static final String CREATE_TJOBS_TABLE = | |
"create or replace TYPE COL_JOBS AS TABLE OF T_JOBS;"; | |
static final String CREATE_TEST_CUSTOM_TYPE_RECORD_PKG = | |
"create or replace PACKAGE TEST_CUSTOM_TYPE_RECORD as " + | |
"\nFUNCTION GET_JOB(p_job_id IN VARCHAR2) RETURN T_JOBS;" + | |
"\nFUNCTION GET_JOBS RETURN COL_JOBS;" + | |
"\nend;"; | |
static final String CREATE_TEST_CUSTOM_TYPE_RECORD_PKG_BODY = | |
"create or replace PACKAGE BODY TEST_CUSTOM_TYPE_RECORD as " + | |
"\nFUNCTION GET_JOB(p_job_id IN VARCHAR2) RETURN T_JOBS IS " + | |
"\nresult T_JOBS;" + | |
"\nl_JOB_ID VARCHAR2(10);" + | |
"\nl_JOB_TITLE VARCHAR2(35);" + | |
"\nl_MAX_SALARY NUMBER(6,0);" + | |
"\nBEGIN" + | |
"\nSELECT EMPNO, ENAME, SAL INTO l_JOB_ID, l_JOB_TITLE, l_MAX_SALARY FROM DBWS_EMP WHERE EMPNO = p_job_id;" + | |
"\nresult := T_JOBS(l_JOB_ID, l_JOB_TITLE, l_MAX_SALARY);" + | |
"\nRETURN result;" + | |
"\nEND;" + | |
"\nfunction GET_JOBS return COL_JOBS is " + | |
"\nCURSOR cur IS select EMPNO, ENAME, SAL from DBWS_EMP;" + | |
"\ncol_result COL_JOBS;" + | |
"\nt_result T_JOBS;" + | |
"\nl_JOB_ID VARCHAR2(10);" + | |
"\nl_JOB_TITLE VARCHAR2(35);" + | |
"\nl_MAX_SALARY NUMBER(6,0);" + | |
"\nbegin" + | |
"\ncol_result := COL_JOBS(NULL);" + | |
"\ncol_result.DELETE;" + | |
"\nfor rec in cur LOOP" + | |
"\nt_result := T_JOBS(rec.EMPNO, rec.ENAME, rec.SAL);" + | |
"\ncol_result.EXTEND(1);" + | |
"\ncol_result(col_result.COUNT) := t_result;" + | |
"\nend loop;" + | |
"\nreturn col_result;" + | |
"\nend;" + | |
"\nend;"; | |
static final String DROP_TEST_CUSTOM_TYPE_RECORD_PKG_BODY = | |
"DROP PACKAGE BODY TEST_CUSTOM_TYPE_RECORD"; | |
static final String DROP_TEST_CUSTOM_TYPE_RECORD_PKG = | |
"DROP PACKAGE TEST_CUSTOM_TYPE_RECORD"; | |
static final String DROP_TJOBS_TABLE = | |
"DROP TYPE COL_JOBS"; | |
static final String DROP_TJOBS_BODY = | |
"DROP TYPE BODY T_JOBS"; | |
static final String DROP_TJOBS = | |
"DROP TYPE T_JOBS"; | |
static final String DROP_EMP_TABLE = | |
"DROP TABLE DBWS_EMP"; | |
// ====================================================================== | |
static boolean ddlCreate = false; | |
static boolean ddlDrop = false; | |
static boolean ddlDebug = false; | |
@BeforeClass | |
public static void setUp() throws WSDLException { | |
if (conn == null) { | |
try { | |
conn = buildConnection(); | |
} | |
catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} | |
String ddlCreateProp = System.getProperty(DATABASE_DDL_CREATE_KEY, DEFAULT_DATABASE_DDL_CREATE); | |
if ("true".equalsIgnoreCase(ddlCreateProp)) { | |
ddlCreate = true; | |
} | |
String ddlDropProp = System.getProperty(DATABASE_DDL_DROP_KEY, DEFAULT_DATABASE_DDL_DROP); | |
if ("true".equalsIgnoreCase(ddlDropProp)) { | |
ddlDrop = true; | |
} | |
String ddlDebugProp = System.getProperty(DATABASE_DDL_DEBUG_KEY, DEFAULT_DATABASE_DDL_DEBUG); | |
if ("true".equalsIgnoreCase(ddlDebugProp)) { | |
ddlDebug = true; | |
} | |
if (ddlCreate) { | |
runDdl(conn, CREATE_PERSONTYPE, ddlDebug); | |
runDdl(conn, CREATE_PERSONTYPE_TABLE, ddlDebug); | |
runDdl(conn, CREATE_MYEMPOBJECT, ddlDebug); | |
runDdl(conn, CREATE_MYEMPOBJECT_TABLE, ddlDebug); | |
runDdl(conn, CREATE_GROUPTYPE, ddlDebug); | |
runDdl(conn, CREATE_GROUPTYPE_PROC, ddlDebug); | |
runDdl(conn, CREATE_GET_PERSONTYPE_PROC, ddlDebug); | |
runDdl(conn, CREATE_GET_PERSONTYPE_TABLE_PROC2, ddlDebug); | |
runDdl(conn, CREATE_GET_PERSONTYPE2_FUNC, ddlDebug); | |
runDdl(conn, CREATE_ADD_PERSONTYPE_TO_TABLE_PROC, ddlDebug); | |
runDdl(conn, CREATE_ADD_PERSONTYPE_TO_TABLE2_FUNC, ddlDebug); | |
runDdl(conn, CREATE_EMP_TABLE, ddlDebug); | |
try { | |
Statement stmt = conn.createStatement(); | |
for (int i = 0; i < POPULATE_EMP_TABLE.length; i++) { | |
stmt.addBatch(POPULATE_EMP_TABLE[i]); | |
} | |
stmt.executeBatch(); | |
} catch (SQLException e) { | |
//e.printStackTrace(); | |
} | |
runDdl(conn, CREATE_TJOBS, ddlDebug); | |
runDdl(conn, CREATE_TJOBS_BODY, ddlDebug); | |
runDdl(conn, CREATE_TJOBS_TABLE, ddlDebug); | |
runDdl(conn, CREATE_TEST_CUSTOM_TYPE_RECORD_PKG, ddlDebug); | |
runDdl(conn, CREATE_TEST_CUSTOM_TYPE_RECORD_PKG_BODY, ddlDebug); | |
} | |
DBWS_BUILDER_XML_USERNAME = | |
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + | |
"<dbws-builder xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + | |
"<properties>" + | |
"<property name=\"projectName\">ObjectTableTypeTests</property>" + | |
"<property name=\"logLevel\">off</property>" + | |
"<property name=\"username\">"; | |
DBWS_BUILDER_XML_PASSWORD = | |
"</property><property name=\"password\">"; | |
DBWS_BUILDER_XML_URL = | |
"</property><property name=\"url\">"; | |
DBWS_BUILDER_XML_DRIVER = | |
"</property><property name=\"driver\">"; | |
DBWS_BUILDER_XML_PLATFORM = | |
"</property><property name=\"platformClassname\">"; | |
DBWS_BUILDER_XML_MAIN = | |
"</property>" + | |
"</properties>" + | |
"<procedure " + | |
"name=\"GetPersonTypeTable\" " + | |
"catalogPattern=\"TOPLEVEL\" " + | |
"procedurePattern=\"GET_PERSONTYPE_TABLE\" " + | |
"isAdvancedJDBC=\"true\" " + | |
"returnType=\"dbws_persontype_tableType\" " + | |
"/>" + | |
"<procedure " + | |
"name=\"GetPersonTypeTableProc2\" " + | |
"catalogPattern=\"TOPLEVEL\" " + | |
"procedurePattern=\"GET_PERSONTYPE_TABLE_PROC2\" " + | |
"returnType=\"dbws_persontype_tableType\" " + | |
"/>" + | |
"<procedure " + | |
"name=\"GetPersonTypeTable2\" " + | |
"catalogPattern=\"TOPLEVEL\" " + | |
"procedurePattern=\"GET_PERSONTYPE_TABLE2\" " + | |
"isAdvancedJDBC=\"true\" " + | |
"returnType=\"dbws_persontype_tableType\" " + | |
"/>" + | |
"<procedure " + | |
"name=\"AddPersonTypeToTable\" " + | |
"catalogPattern=\"TOPLEVEL\" " + | |
"procedurePattern=\"ADD_PERSONTYPE_TO_TABLE\" " + | |
"isAdvancedJDBC=\"true\" " + | |
"returnType=\"dbws_persontype_tableType\" " + | |
"/>" + | |
"<procedure " + | |
"name=\"AddPersonTypeToTable2\" " + | |
"catalogPattern=\"TOPLEVEL\" " + | |
"procedurePattern=\"ADD_PERSONTYPE_TO_TABLE2\" " + | |
"isAdvancedJDBC=\"true\" " + | |
"returnType=\"dbws_persontype_tableType\" " + | |
"/>" + | |
"<procedure " + | |
"name=\"CreateGroupType\" " + | |
"catalogPattern=\"TOPLEVEL\" " + | |
"procedurePattern=\"CREATE_GROUPTYPE\" " + | |
"isAdvancedJDBC=\"true\" " + | |
"returnType=\"dbws_grouptypeType\" " + | |
"/>" + | |
"<plsql-procedure " + | |
"name=\"GetJobTest\" " + | |
"catalogPattern=\"TEST_CUSTOM_TYPE_RECORD\" " + | |
"procedurePattern=\"GET_JOB\" " + | |
"/>" + | |
"<plsql-procedure " + | |
"name=\"GetJobsTest\" " + | |
"catalogPattern=\"TEST_CUSTOM_TYPE_RECORD\" " + | |
"procedurePattern=\"GET_JOBS\" " + | |
"/>" + | |
"</dbws-builder>"; | |
builder = null; | |
DBWSTestSuite.setUp("."); | |
} | |
@AfterClass | |
public static void tearDown() { | |
if (ddlDrop) { | |
runDdl(conn, DROP_ADD_PERSONTYPE_TO_TABLE2_FUNC, ddlDebug); | |
runDdl(conn, DROP_ADD_PERSONTYPE_TO_TABLE_PROC, ddlDebug); | |
runDdl(conn, DROP_GET_PERSONTYPE2_FUNC, ddlDebug); | |
runDdl(conn, DROP_GET_PERSONTYPE_TABLE_PROC2, ddlDebug); | |
runDdl(conn, DROP_GET_PERSONTYPE_TABLE, ddlDebug); | |
runDdl(conn, DROP_GROUPTYPE_PROC, ddlDebug); | |
runDdl(conn, DROP_GROUPTYPE, ddlDebug); | |
runDdl(conn, DROP_MYEMPOBJECT_TABLE, ddlDebug); | |
runDdl(conn, DROP_MYEMPOBJECT, ddlDebug); | |
runDdl(conn, DROP_PERSONTYPE_TABLE, ddlDebug); | |
runDdl(conn, DROP_PERSONTYPE, ddlDebug); | |
runDdl(conn, DROP_TEST_CUSTOM_TYPE_RECORD_PKG_BODY, ddlDebug); | |
runDdl(conn, DROP_TEST_CUSTOM_TYPE_RECORD_PKG, ddlDebug); | |
runDdl(conn, DROP_TJOBS_TABLE, ddlDebug); | |
runDdl(conn, DROP_TJOBS_BODY, ddlDebug); | |
runDdl(conn, DROP_TJOBS, ddlDebug); | |
runDdl(conn, DROP_EMP_TABLE, ddlDebug); | |
} | |
} | |
@Test | |
public void getPersonTypeTable() { | |
Invocation invocation = new Invocation("GetPersonTypeTable"); | |
Operation op = xrService.getOperation(invocation.getName()); | |
Object result = op.invoke(xrService, invocation); | |
assertNotNull("result is null", result); | |
Document doc = xmlPlatform.createDocument(); | |
XMLMarshaller marshaller = xrService.getXMLContext().createMarshaller(); | |
marshaller.marshal(result, doc); | |
Document controlDoc = xmlParser.parse(new StringReader(RESULT_XML)); | |
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc)); | |
} | |
@Test | |
public void getPersonTypeTableProc2() { | |
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller(); | |
Object tableType = unmarshaller.unmarshal(new StringReader(PTABLE_INPUT_XML)); | |
Invocation invocation = new Invocation("GetPersonTypeTableProc2"); | |
invocation.setParameter("PTABLE", tableType); | |
Operation op = xrService.getOperation(invocation.getName()); | |
Object result = op.invoke(xrService, invocation); | |
assertNotNull("result is null", result); | |
Document doc = xmlPlatform.createDocument(); | |
XMLMarshaller marshaller = xrService.getXMLContext().createMarshaller(); | |
marshaller.marshal(result, doc); | |
Document controlDoc = xmlParser.parse(new StringReader(NEW_PTABLE_OUTPUT_XML)); | |
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc)); | |
} | |
@Test | |
public void getPersonTypeTable2() { | |
Invocation invocation = new Invocation("GetPersonTypeTable2"); | |
Operation op = xrService.getOperation(invocation.getName()); | |
Object result = op.invoke(xrService, invocation); | |
assertNotNull("result is null", result); | |
Document doc = xmlPlatform.createDocument(); | |
XMLMarshaller marshaller = xrService.getXMLContext().createMarshaller(); | |
marshaller.marshal(result, doc); | |
Document controlDoc = xmlParser.parse(new StringReader(RESULT_XML)); | |
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc)); | |
} | |
static String RESULT_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_persontype_tableType xmlns=\"urn:ObjectTableTypeTests\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + | |
"<item>" + | |
"<name>BUBBLES</name>" + | |
"<age>32</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1990-11-19</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>RICKY</name>" + | |
"<age>33</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1985-10-01</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>JULIAN</name>" + | |
"<age>35</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1988-02-07</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>SARAH</name>" + | |
"<age>25</age>" + | |
"<gender>F</gender>" + | |
"<incarcerated>2002-05-12</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>J-ROC</name>" + | |
"<age>27</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1998-12-17</incarcerated>" + | |
"</item>" + | |
"</dbws_persontype_tableType>"; | |
@Test | |
public void addPersonTypeToTable() { | |
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller(); | |
Object personType = unmarshaller.unmarshal(new StringReader(PTYPE_INPUT_XML)); | |
Object tableType = unmarshaller.unmarshal(new StringReader(PTABLE_INPUT_XML)); | |
Invocation invocation = new Invocation("AddPersonTypeToTable"); | |
invocation.setParameter("PTYPETOADD", personType); | |
invocation.setParameter("OLDTABLE", tableType); | |
Operation op = xrService.getOperation(invocation.getName()); | |
Object result = op.invoke(xrService, invocation); | |
assertNotNull("result is null", result); | |
Document doc = xmlPlatform.createDocument(); | |
XMLMarshaller marshaller = xrService.getXMLContext().createMarshaller(); | |
marshaller.marshal(result, doc); | |
Document controlDoc = xmlParser.parse(new StringReader(NEW_PTABLE_OUTPUT_XML)); | |
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc)); | |
} | |
@Test | |
public void addPersonTypeToTable2() { | |
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller(); | |
Object personType = unmarshaller.unmarshal(new StringReader(PTYPE_INPUT_XML)); | |
Object tableType = unmarshaller.unmarshal(new StringReader(PTABLE_INPUT_XML)); | |
Invocation invocation = new Invocation("AddPersonTypeToTable2"); | |
invocation.setParameter("PTYPETOADD", personType); | |
invocation.setParameter("OLDTABLE", tableType); | |
Operation op = xrService.getOperation(invocation.getName()); | |
Object result = op.invoke(xrService, invocation); | |
assertNotNull("result is null", result); | |
Document doc = xmlPlatform.createDocument(); | |
XMLMarshaller marshaller = xrService.getXMLContext().createMarshaller(); | |
marshaller.marshal(result, doc); | |
Document controlDoc = xmlParser.parse(new StringReader(NEW_PTABLE_OUTPUT_XML)); | |
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc)); | |
} | |
static String PTYPE_INPUT_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_persontypeType xmlns=\"urn:ObjectTableTypeTests\">" + | |
"<name>COREY</name>" + | |
"<age>20</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1997-12-09</incarcerated>" + | |
"</dbws_persontypeType>"; | |
static String PTYPE_INPUT2_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_persontypeType xmlns=\"urn:ObjectTableTypeTests\">" + | |
"<name>RICKY</name>" + | |
"<age>33</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1985-10-01</incarcerated>" + | |
"</dbws_persontypeType>"; | |
static String PTYPE_INPUT3_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_persontypeType xmlns=\"urn:ObjectTableTypeTests\">" + | |
"<name>BUBBLES</name>" + | |
"<age>32</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1990-11-19</incarcerated>" + | |
"</dbws_persontypeType>"; | |
static String PTABLE_INPUT_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_persontype_tableType xmlns=\"urn:ObjectTableTypeTests\">" + | |
"<item>" + | |
"<name>BUBBLES</name>" + | |
"<age>32</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1990-11-19</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>RICKY</name>" + | |
"<age>33</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1985-10-01</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>JULIAN</name>" + | |
"<age>35</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1988-02-07</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>SARAH</name>" + | |
"<age>25</age>" + | |
"<gender>F</gender>" + | |
"<incarcerated>2002-05-12</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>J-ROC</name>" + | |
"<age>27</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1998-12-17</incarcerated>" + | |
"</item>" + | |
"</dbws_persontype_tableType>"; | |
static String NEW_PTABLE_OUTPUT_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_persontype_tableType xmlns=\"urn:ObjectTableTypeTests\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + | |
"<item>" + | |
"<name>BUBBLES</name>" + | |
"<age>32</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1990-11-19</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>RICKY</name>" + | |
"<age>33</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1985-10-01</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>JULIAN</name>" + | |
"<age>35</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1988-02-07</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>SARAH</name>" + | |
"<age>25</age>" + | |
"<gender>F</gender>" + | |
"<incarcerated>2002-05-12</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>J-ROC</name>" + | |
"<age>27</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1998-12-17</incarcerated>" + | |
"</item>" + | |
"<item>" + | |
"<name>COREY</name>" + | |
"<age>20</age>" + | |
"<gender>M</gender>" + | |
"<incarcerated>1997-12-09</incarcerated>" + | |
"</item>" + | |
"</dbws_persontype_tableType>"; | |
@Test | |
public void validateJavaClassName() { | |
Project orProject = builder.getOrProject(); | |
ClassDescriptor personTypeORDesc = orProject.getDescriptorForAlias(PERSON_TYPE_ALIAS); | |
assertNotNull("No OR descriptor found for alias [" + PERSON_TYPE_ALIAS + "]", personTypeORDesc); | |
assertEquals("Expected class name [" + PERSON_TYPE_CLASSNAME + "] but was [" + personTypeORDesc.getJavaClassName() + "]", personTypeORDesc.getJavaClassName(), PERSON_TYPE_CLASSNAME); | |
ClassDescriptor personTypeTableORDesc = orProject.getDescriptorForAlias(PERSON_TYPE_TABLE_ALIAS); | |
assertNotNull("No OR descriptor found for alias [" + PERSON_TYPE_TABLE_ALIAS + "]", personTypeTableORDesc); | |
assertEquals("Expected class name [" + PERSON_TYPE_TABLE_CLASSNAME + "] but was [" + personTypeTableORDesc.getJavaClassName() + "]", personTypeTableORDesc.getJavaClassName(), PERSON_TYPE_TABLE_CLASSNAME); | |
Project oxProject = builder.getOxProject(); | |
ClassDescriptor personTypeOXDesc = oxProject.getDescriptorForAlias(PERSON_TYPE_ALIAS); | |
assertNotNull("No OX descriptor found for alias [" + PERSON_TYPE_ALIAS + "]", personTypeOXDesc); | |
assertEquals("Expected class name [" + PERSON_TYPE_CLASSNAME + "] but was [" + personTypeOXDesc.getJavaClassName() + "]", personTypeOXDesc.getJavaClassName(), PERSON_TYPE_CLASSNAME); | |
ClassDescriptor personTypeTableOXDesc = oxProject.getDescriptorForAlias(PERSON_TYPE_TABLE_ALIAS); | |
assertNotNull("No OX descriptor found for alias [" + PERSON_TYPE_TABLE_ALIAS + "]", personTypeTableOXDesc); | |
assertEquals("Expected class name [" + PERSON_TYPE_TABLE_CLASSNAME + "] but was [" + personTypeTableOXDesc.getJavaClassName() + "]", personTypeTableOXDesc.getJavaClassName(), PERSON_TYPE_TABLE_CLASSNAME); | |
} | |
@Test | |
public void createGroupTypeTest() { | |
Invocation invocation = new Invocation("CreateGroupType"); | |
invocation.setParameter("GNAME", "MyNewGroup"); | |
Operation op = xrService.getOperation(invocation.getName()); | |
Object result = op.invoke(xrService, invocation); | |
assertNotNull("result is null", result); | |
Document doc = xmlPlatform.createDocument(); | |
XMLMarshaller marshaller = xrService.getXMLContext().createMarshaller(); | |
marshaller.marshal(result, doc); | |
Document controlDoc = xmlParser.parse(new StringReader(NEW_ETABLE_OUTPUT2_XML)); | |
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc)); | |
} | |
static String ETYPE_INPUT_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_myempobjectType xmlns=\"urn:ObjectTableTypeTests\">" + | |
"<empno>20</empno>" + | |
"<ename>COREY</ename>" + | |
"</dbws_myempobjectType>"; | |
static String ETYPE_INPUT2_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_myempobjectType xmlns=\"urn:ObjectTableTypeTests\">" + | |
"<empno>33</empno>" + | |
"<ename>RICKY</ename>" + | |
"</dbws_myempobjectType>"; | |
static String ETYPE_INPUT3_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_myempobjectType xmlns=\"urn:ObjectTableTypeTests\">" + | |
"<empno>32</empno>" + | |
"<ename>BUBBLES</ename>" + | |
"</dbws_myempobjectType>"; | |
static String NEW_ETABLE_OUTPUT2_XML = | |
REGULAR_XML_HEADER + | |
"<dbws_grouptypeType xmlns=\"urn:ObjectTableTypeTests\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + | |
"<name>MyNewGroup</name>" + | |
"<ecount>3</ecount>" + | |
"<etable>" + | |
"<item>" + | |
"<empno>20</empno>" + | |
"<ename>COREY</ename>" + | |
"</item>" + | |
"<item>" + | |
"<empno>33</empno>" + | |
"<ename>RICKY</ename>" + | |
"</item>" + | |
"<item>" + | |
"<empno>32</empno>" + | |
"<ename>BUBBLES</ename>" + | |
"</item>" + | |
"</etable>" + | |
"</dbws_grouptypeType>"; | |
@Test | |
public void getJobTest() { | |
Invocation invocation = new Invocation("GetJobTest"); | |
invocation.setParameter("p_job_id", "3"); | |
Operation op = xrService.getOperation(invocation.getName()); | |
Object result = op.invoke(xrService, invocation); | |
assertNotNull("result is null", result); | |
Document doc = xmlPlatform.createDocument(); | |
XMLMarshaller marshaller = xrService.getXMLContext().createMarshaller(); | |
marshaller.marshal(result, doc); | |
Document controlDoc = xmlParser.parse(new StringReader(TJOBS_XML)); | |
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc)); | |
} | |
static String TJOBS_XML = | |
REGULAR_XML_HEADER + | |
"<t_jobsType xmlns=\"urn:ObjectTableTypeTests\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + | |
"<job_id>3</job_id>" + | |
"<job_title>CON</job_title>" + | |
"<max_salary>4255</max_salary>" + | |
"</t_jobsType>"; | |
@Test | |
public void getJobsTest() { | |
Invocation invocation = new Invocation("GetJobsTest"); | |
Operation op = xrService.getOperation(invocation.getName()); | |
Object result = op.invoke(xrService, invocation); | |
assertNotNull("result is null", result); | |
Document doc = xmlPlatform.createDocument(); | |
XMLMarshaller marshaller = xrService.getXMLContext().createMarshaller(); | |
marshaller.marshal(result, doc); | |
Document controlDoc = xmlParser.parse(new StringReader(COLJOBS_XML)); | |
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc)); | |
} | |
static String COLJOBS_XML = | |
REGULAR_XML_HEADER + | |
"<col_jobsType xmlns=\"urn:ObjectTableTypeTests\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + | |
"<item>" + | |
"<job_id>1</job_id>" + | |
"<job_title>THEIF</job_title>" + | |
"<max_salary>99000</max_salary>" + | |
"</item>" + | |
"<item>" + | |
"<job_id>2</job_id>" + | |
"<job_title>BULLY</job_title>" + | |
"<max_salary>0</max_salary>" + | |
"</item>" + | |
"<item>" + | |
"<job_id>3</job_id>" + | |
"<job_title>CON</job_title>" + | |
"<max_salary>4255</max_salary>" + | |
"</item>" + | |
"<item>" + | |
"<job_id>4</job_id>" + | |
"<job_title>CON</job_title>" + | |
"<max_salary>4000</max_salary>" + | |
"</item>" + | |
"<item>" + | |
"<job_id>5</job_id>" + | |
"<job_title>COP</job_title>" + | |
"<max_salary>25000</max_salary>" + | |
"</item>" + | |
"</col_jobsType>"; | |
} |