blob: 3582778534300344dadf2226a70dfeed7b3be18c [file] [log] [blame]
/*
* Copyright (c) 2011, 2020 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:
// David McCann - November 17, 2011 - 2.4 - Initial implementation
package dbws.testing.complexplsqlsp;
//javase imports
import java.io.StringReader;
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.assertNotNull;
import static org.junit.Assert.assertTrue;
//EclipseLink imports
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;
//test imports
import dbws.testing.DBWSTestSuite;
/**
* Tests PL/SQL stored procedures with complex PL/SQL and advanced
* JDBC args.
*
*/
public class ComplexPLSQLSPTestSuite extends DBWSTestSuite {
static final String CREATE_VARCHARARRAY_VARRAY =
"CREATE OR REPLACE TYPE VARCHARARRAY AS VARRAY(10) OF VARCHAR2(20)";
static final String CREATE_A_PHONE_TYPE =
"CREATE OR REPLACE TYPE A_PHONE_TYPE AS OBJECT (" +
"\nHOME VARCHAR2(20)," +
"\nCELL VARCHAR2(20)" +
"\n)";
static final String CREATE_A_PHONE_TYPE_TABLE =
"CREATE OR REPLACE TYPE A_PHONE_TYPE_TABLE AS TABLE OF A_PHONE_TYPE";
static final String CREATE_A_PHONE_TYPE_VARRAY =
"CREATE OR REPLACE TYPE A_PHONE_TYPE_VARRAY AS VARRAY(10) OF A_PHONE_TYPE";
static final String CREATE_A_CONTACT_TYPE =
"CREATE OR REPLACE TYPE A_CONTACT_TYPE AS OBJECT (" +
"\nADDRESS VARCHAR2(40)," +
"\nPHONE A_PHONE_TYPE" +
"\n)";
static final String CREATE_A_CUSTOMER_TYPE =
"CREATE OR REPLACE TYPE A_CUSTOMER_TYPE AS OBJECT (" +
"\nNAME VARCHARARRAY," +
"\nAGE NUMBER(3)," +
"\nCONTACT A_CONTACT_TYPE" +
"\n)";
static final String CREATE_COMPLEXPKG_TAB1_TYPE =
"CREATE OR REPLACE TYPE COMPLEXPKG_TAB1 AS TABLE OF VARCHAR2(20)";
static final String CREATE_COMPLEXPKG_SIMPLERECORD_TYPE =
"CREATE OR REPLACE TYPE COMPLEXPKG_SIMPLERECORD AS OBJECT (" +
"\nSR1 VARCHAR2(20)," +
"\nSR2 VARCHAR2(20)" +
"\n)";
static final String CREATE_COMPLEXPKG_COMPLEXRECORD_TYPE =
"CREATE OR REPLACE TYPE COMPLEXPKG_COMPLEXRECORD AS OBJECT (" +
"\nCR1 NUMBER," +
"\nCR2 A_CONTACT_TYPE," +
"\nCR3 VARCHARARRAY," +
"\nCR4 A_PHONE_TYPE_TABLE" +
"\n)";
static final String CREATE_COMPLEXPKG_MORECOMPLEXRECORD_TYPE =
"CREATE OR REPLACE TYPE COMPLEXPKG_MORECOMPLEXRECORD AS OBJECT (" +
"\nMCR1 A_PHONE_TYPE_VARRAY" +
"\n)";
static final String CREATE_COMPLEXPKG_PACKAGE =
"CREATE OR REPLACE PACKAGE COMPLEXPKG AS" +
"\nTYPE TAB1 IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER;" +
"\nTYPE SIMPLERECORD IS RECORD (" +
"\nSR1 VARCHAR2(20)," +
"\nSR2 VARCHAR2(20)" +
"\n);" +
"\nTYPE COMPLEXRECORD IS RECORD (" +
"\nCR1 NUMBER," +
"\nCR2 A_CONTACT_TYPE," +
"\nCR3 VARCHARARRAY," +
"\nCR4 A_PHONE_TYPE_TABLE" +
"\n);" +
"\nTYPE MORECOMPLEXRECORD IS RECORD (" +
"\nMCR1 A_PHONE_TYPE_VARRAY" +
"\n);" +
"\nPROCEDURE INARGONLYPROC(OLDTAB IN TAB1);" +
"\nPROCEDURE TABLETOVARRAY(OLDTAB IN TAB1, NEWVARRAY OUT VARCHARARRAY);" +
"\nPROCEDURE TABLESTOVARRAY(OLDTAB IN TAB1, OLDTAB2 IN TAB1, NEWVARRAY OUT VARCHARARRAY);" +
"\nPROCEDURE VARRAYTOTABLE(OLDVARRAY IN VARCHARARRAY, NEWTAB OUT TAB1);" +
"\nPROCEDURE VARRAYSTOTABLE(OLDVARRAY IN VARCHARARRAY, OLDVARRAY2 IN VARCHARARRAY, NEWTAB OUT TAB1);" +
"\nPROCEDURE PHONETOTABLE(APHONE IN A_PHONE_TYPE, NEWTAB OUT TAB1);" +
"\nPROCEDURE PHONEANDVARRAYTOTABLE(APHONE IN A_PHONE_TYPE, OLDVARRAY IN VARCHARARRAY, NEWTAB OUT TAB1);" +
"\nPROCEDURE TABLETOPHONE(OLDTAB IN TAB1, APHONE OUT A_PHONE_TYPE);" +
"\nPROCEDURE TABLEANDVARRAYTOPHONE(OLDTAB IN TAB1, OLDVARRAY IN VARCHARARRAY, APHONE OUT A_PHONE_TYPE);" +
"\nPROCEDURE TABLEANDVARRAYTOVARRAY(OLDTAB IN TAB1, OLDVARRAY IN VARCHARARRAY, NEWVARRAY OUT VARCHARARRAY);" +
"\nPROCEDURE TABLEANDVARRAYTOTABLE(OLDTAB IN TAB1, OLDVARRAY IN VARCHARARRAY, NEWTAB OUT TAB1);" +
"\nPROCEDURE RECORDTOVARRAY(OLDREC IN SIMPLERECORD, NEWVARRAY OUT VARCHARARRAY);" +
"\nPROCEDURE RECORDTOPHONE(OLDREC IN SIMPLERECORD, APHONE OUT A_PHONE_TYPE);" +
"\nPROCEDURE VARRAYTORECORD(OLDVARRAY IN VARCHARARRAY, NEWREC OUT SIMPLERECORD);" +
"\nPROCEDURE PHONETORECORD(APHONE IN A_PHONE_TYPE, NEWREC OUT SIMPLERECORD);" +
"\nPROCEDURE PLSQLTOPHONETYPETABLE(OLDREC IN SIMPLERECORD, OLDTAB IN TAB1, APHONETYPETABLE OUT A_PHONE_TYPE_TABLE);" +
"\nPROCEDURE PHONETYPETABLETOPLSQL(APHONETYPETABLE IN A_PHONE_TYPE_TABLE, NEWREC OUT SIMPLERECORD);" +
"\nPROCEDURE CREATE_A_CUSTOMER(ACUSTOMER OUT A_CUSTOMER_TYPE);" +
"\nPROCEDURE CREATE_COMPLEXRECORD(ACONTACT IN A_CONTACT_TYPE, ANUMBER IN NUMBER, AVARRAY IN VARCHARARRAY, APHONETYPETABLE IN A_PHONE_TYPE_TABLE, ACOMPLEXREC OUT COMPLEXRECORD);" +
"\nPROCEDURE CREATE_PHONETYPEVARRAY(APHONETYPE1 IN A_PHONE_TYPE, APHONETYPE2 IN A_PHONE_TYPE, PHONETYPEARRAY OUT A_PHONE_TYPE_VARRAY);" +
"\nPROCEDURE CREATE_MORECOMPLEXRECORD(APHONETYPE1 IN A_PHONE_TYPE, APHONETYPE2 IN A_PHONE_TYPE, MORECOMPLEXREC OUT MORECOMPLEXRECORD);" +
"\nEND COMPLEXPKG;";
static final String CREATE_COMPLEXPKG_BODY =
"CREATE OR REPLACE PACKAGE BODY COMPLEXPKG AS" +
"\nPROCEDURE INARGONLYPROC(OLDTAB IN TAB1) AS" +
"\nBEGIN" +
"\nNULL;" +
"\nEND INARGONLYPROC;" +
"\nPROCEDURE TABLETOVARRAY(OLDTAB IN TAB1, NEWVARRAY OUT VARCHARARRAY) AS" +
"\nBEGIN" +
"\nNEWVARRAY := VARCHARARRAY();" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(1) := OLDTAB(1);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(2) := OLDTAB(2);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(3) := OLDTAB(3);" +
"\nEND TABLETOVARRAY;" +
"\nPROCEDURE TABLESTOVARRAY(OLDTAB IN TAB1, OLDTAB2 IN TAB1, NEWVARRAY OUT VARCHARARRAY) AS" +
"\nBEGIN" +
"\nNEWVARRAY := VARCHARARRAY();" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(1) := OLDTAB(1);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(2) := OLDTAB(2);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(3) := OLDTAB(3);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(4) := OLDTAB2(1);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(5) := OLDTAB2(2);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(6) := OLDTAB2(3);" +
"\nEND TABLESTOVARRAY;" +
"\nPROCEDURE VARRAYTOTABLE(OLDVARRAY IN VARCHARARRAY, NEWTAB OUT TAB1) AS" +
"\nBEGIN" +
"\nNEWTAB(1) := OLDVARRAY(1);" +
"\nNEWTAB(2) := OLDVARRAY(2);" +
"\nNEWTAB(3) := OLDVARRAY(3);" +
"\nEND VARRAYTOTABLE;" +
"\nPROCEDURE VARRAYSTOTABLE(OLDVARRAY IN VARCHARARRAY, OLDVARRAY2 IN VARCHARARRAY, NEWTAB OUT TAB1) AS" +
"\nBEGIN" +
"\nNEWTAB(1) := OLDVARRAY(1);" +
"\nNEWTAB(2) := OLDVARRAY(2);" +
"\nNEWTAB(3) := OLDVARRAY(3);" +
"\nNEWTAB(4) := OLDVARRAY2(1);" +
"\nNEWTAB(5) := OLDVARRAY2(2);" +
"\nNEWTAB(6) := OLDVARRAY2(3);" +
"\nEND VARRAYSTOTABLE;" +
"\nPROCEDURE PHONETOTABLE(APHONE IN A_PHONE_TYPE, NEWTAB OUT TAB1) AS" +
"\nBEGIN" +
"\nNEWTAB(1) := APHONE.HOME;" +
"\nNEWTAB(2) := APHONE.CELL;" +
"\nEND PHONETOTABLE;" +
"\nPROCEDURE PHONEANDVARRAYTOTABLE(APHONE IN A_PHONE_TYPE, OLDVARRAY IN VARCHARARRAY, NEWTAB OUT TAB1) AS" +
"\nBEGIN" +
"\nNEWTAB(1) := APHONE.HOME;" +
"\nNEWTAB(2) := APHONE.CELL;" +
"\nNEWTAB(3) := OLDVARRAY(1);" +
"\nNEWTAB(4) := OLDVARRAY(2);" +
"\nEND PHONEANDVARRAYTOTABLE;" +
"\nPROCEDURE TABLETOPHONE(OLDTAB IN TAB1, APHONE OUT A_PHONE_TYPE) AS" +
"\nBEGIN" +
"\nAPHONE := A_PHONE_TYPE(OLDTAB(1), OLDTAB(2));" +
"\nEND TABLETOPHONE;" +
"\nPROCEDURE TABLEANDVARRAYTOPHONE(OLDTAB IN TAB1, OLDVARRAY IN VARCHARARRAY, APHONE OUT A_PHONE_TYPE) AS" +
"\nBEGIN" +
"\nAPHONE := A_PHONE_TYPE(OLDTAB(1), OLDVARRAY(1));" +
"\nEND TABLEANDVARRAYTOPHONE;" +
"\nPROCEDURE TABLEANDVARRAYTOVARRAY(OLDTAB IN TAB1, OLDVARRAY IN VARCHARARRAY, NEWVARRAY OUT VARCHARARRAY) AS" +
"\nBEGIN" +
"\nNEWVARRAY := VARCHARARRAY();" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(1) := OLDTAB(1);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(2) := OLDTAB(2);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(3) := OLDTAB(3);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(4) := OLDVARRAY(1);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(5) := OLDVARRAY(2);" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(6) := OLDVARRAY(3);" +
"\nEND TABLEANDVARRAYTOVARRAY;" +
"\nPROCEDURE TABLEANDVARRAYTOTABLE(OLDTAB IN TAB1, OLDVARRAY IN VARCHARARRAY, NEWTAB OUT TAB1) AS" +
"\nBEGIN" +
"\nNEWTAB(1) := OLDTAB(1);" +
"\nNEWTAB(2) := OLDTAB(2);" +
"\nNEWTAB(3) := OLDTAB(3);" +
"\nNEWTAB(4) := OLDVARRAY(1);" +
"\nNEWTAB(5) := OLDVARRAY(2);" +
"\nNEWTAB(6) := OLDVARRAY(3);" +
"\nEND TABLEANDVARRAYTOTABLE;" +
"\nPROCEDURE RECORDTOVARRAY(OLDREC IN SIMPLERECORD, NEWVARRAY OUT VARCHARARRAY) AS" +
"\nBEGIN" +
"\nNEWVARRAY := VARCHARARRAY();" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(1) := OLDREC.SR1;" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(2) := OLDREC.SR2;" +
"\nEND RECORDTOVARRAY;" +
"\nPROCEDURE RECORDTOPHONE(OLDREC IN SIMPLERECORD, APHONE OUT A_PHONE_TYPE) AS" +
"\nBEGIN" +
"\nAPHONE := A_PHONE_TYPE(OLDREC.SR1, OLDREC.SR2);" +
"\nEND RECORDTOPHONE;" +
"\nPROCEDURE VARRAYTORECORD(OLDVARRAY IN VARCHARARRAY, NEWREC OUT SIMPLERECORD) AS" +
"\nBEGIN" +
"\nNEWREC.SR1 := OLDVARRAY(1);" +
"\nNEWREC.SR2 := OLDVARRAY(2);" +
"\nEND VARRAYTORECORD;" +
"\nPROCEDURE PHONETORECORD(APHONE IN A_PHONE_TYPE, NEWREC OUT SIMPLERECORD) AS" +
"\nBEGIN" +
"\nNEWREC.SR1 := APHONE.HOME;" +
"\nNEWREC.SR2 := APHONE.CELL;" +
"\nEND PHONETORECORD;" +
"\nPROCEDURE PLSQLTOPHONETYPETABLE(OLDREC IN SIMPLERECORD, OLDTAB IN TAB1, APHONETYPETABLE OUT A_PHONE_TYPE_TABLE) AS" +
"\nAPHONE1 A_PHONE_TYPE;" +
"\nAPHONE2 A_PHONE_TYPE;" +
"\nBEGIN" +
"\nRECORDTOPHONE(OLDREC, APHONE1);" +
"\nTABLETOPHONE(OLDTAB, APHONE2);" +
"\nAPHONETYPETABLE := A_PHONE_TYPE_TABLE();" +
"\nAPHONETYPETABLE.EXTEND;" +
"\nAPHONETYPETABLE(APHONETYPETABLE.COUNT) := APHONE1;" +
"\nAPHONETYPETABLE.EXTEND;" +
"\nAPHONETYPETABLE(APHONETYPETABLE.COUNT) := APHONE2;" +
"\nEND PLSQLTOPHONETYPETABLE;" +
"\nPROCEDURE PHONETYPETABLETOPLSQL(APHONETYPETABLE IN A_PHONE_TYPE_TABLE, NEWREC OUT SIMPLERECORD) AS" +
"\nAPHONE1 A_PHONE_TYPE;" +
"\nAPHONE2 A_PHONE_TYPE;" +
"\nBEGIN" +
"\nAPHONE1 := APHONETYPETABLE(1);" +
"\nAPHONE2 := APHONETYPETABLE(2);" +
"\nNEWREC.SR1 := APHONE2.HOME;" +
"\nNEWREC.SR2 := APHONE1.HOME;" +
"\nEND PHONETYPETABLETOPLSQL;" +
"\nPROCEDURE CREATE_A_CUSTOMER(ACUSTOMER OUT A_CUSTOMER_TYPE) AS" +
"\nACONTACT A_CONTACT_TYPE;" +
"\nNEWVARRAY VARCHARARRAY;" +
"\nBEGIN" +
"\nNEWVARRAY := VARCHARARRAY();" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(1) := 'John';" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(2) := 'Q';" +
"\nNEWVARRAY.EXTEND;" +
"\nNEWVARRAY(3) := 'Oracle';" +
"\nACONTACT := A_CONTACT_TYPE('1234 Somewhere St, Ottawa, ON', A_PHONE_TYPE('(613)555-1234', '(613)555-4321'));" +
"\nACUSTOMER := A_CUSTOMER_TYPE(NEWVARRAY, 41, ACONTACT);" +
"\nEND CREATE_A_CUSTOMER;" +
"\nPROCEDURE CREATE_COMPLEXRECORD(ACONTACT IN A_CONTACT_TYPE, ANUMBER IN NUMBER, AVARRAY IN VARCHARARRAY, APHONETYPETABLE IN A_PHONE_TYPE_TABLE, ACOMPLEXREC OUT COMPLEXRECORD) AS" +
"\nBEGIN" +
"\nACOMPLEXREC.CR1 := ANUMBER;" +
"\nACOMPLEXREC.CR2 := ACONTACT;" +
"\nACOMPLEXREC.CR3 := AVARRAY;" +
"\nACOMPLEXREC.CR4 := APHONETYPETABLE;" +
"\nEND CREATE_COMPLEXRECORD;" +
"\nPROCEDURE CREATE_PHONETYPEVARRAY(APHONETYPE1 IN A_PHONE_TYPE, APHONETYPE2 IN A_PHONE_TYPE, PHONETYPEARRAY OUT A_PHONE_TYPE_VARRAY) AS" +
"\nBEGIN" +
"\nPHONETYPEARRAY := A_PHONE_TYPE_VARRAY();" +
"\nPHONETYPEARRAY.EXTEND;" +
"\nPHONETYPEARRAY(1) := APHONETYPE1;" +
"\nPHONETYPEARRAY.EXTEND;" +
"\nPHONETYPEARRAY(2) := APHONETYPE2;" +
"\nEND CREATE_PHONETYPEVARRAY;" +
"\nPROCEDURE CREATE_MORECOMPLEXRECORD(APHONETYPE1 IN A_PHONE_TYPE, APHONETYPE2 IN A_PHONE_TYPE, MORECOMPLEXREC OUT MORECOMPLEXRECORD) AS" +
"\nPHONETYPEARRAY A_PHONE_TYPE_VARRAY;" +
"\nBEGIN" +
"\nCREATE_PHONETYPEVARRAY(APHONETYPE1, APHONETYPE2, PHONETYPEARRAY);" +
"\nMORECOMPLEXREC.MCR1 := PHONETYPEARRAY;" +
"\nEND CREATE_MORECOMPLEXRECORD;" +
"\nEND COMPLEXPKG;";
static final String DROP_COMPLEXPKG_PACKAGE =
"DROP PACKAGE COMPLEXPKG";
static final String DROP_COMPLEXPKG_PACKAGE_BODY =
"DROP PACKAGE BODY COMPLEXPKG";
static final String DROP_COMPLEXPKG_TAB1_TYPE =
"DROP TYPE COMPLEXPKG_TAB1";
static final String DROP_COMPLEXPKG_SIMPLERECORD_TYPE =
"DROP TYPE COMPLEXPKG_SIMPLERECORD";
static final String DROP_COMPLEXPKG_COMPLEXRECORD_TYPE =
"DROP TYPE COMPLEXPKG_COMPLEXRECORD";
static final String DROP_VARCHARARRAY_TYPE =
"DROP TYPE VARCHARARRAY";
static final String DROP_A_PHONE_TYPE =
"DROP TYPE A_PHONE_TYPE";
static final String DROP_A_CUSTOMER_TYPE =
"DROP TYPE A_CUSTOMER_TYPE";
static final String DROP_A_CONTACT_TYPE =
"DROP TYPE A_CONTACT_TYPE";
static final String DROP_A_PHONE_TYPE_TABLE =
"DROP TYPE A_PHONE_TYPE_TABLE";
static final String DROP_A_PHONE_TYPE_VARRAY =
"DROP TYPE A_PHONE_TYPE_VARRAY";
static final String DROP_COMPLEXPKG_MORECOMPLEXRECORD_TYPE =
"DROP TYPE COMPLEXPKG_MORECOMPLEXRECORD";
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_VARCHARARRAY_VARRAY, ddlDebug);
runDdl(conn, CREATE_A_PHONE_TYPE, ddlDebug);
runDdl(conn, CREATE_A_PHONE_TYPE_TABLE, ddlDebug);
runDdl(conn, CREATE_A_PHONE_TYPE_VARRAY, ddlDebug);
runDdl(conn, CREATE_A_CONTACT_TYPE, ddlDebug);
runDdl(conn, CREATE_A_CUSTOMER_TYPE, ddlDebug);
runDdl(conn, CREATE_COMPLEXPKG_SIMPLERECORD_TYPE, ddlDebug);
runDdl(conn, CREATE_COMPLEXPKG_COMPLEXRECORD_TYPE, ddlDebug);
runDdl(conn, CREATE_COMPLEXPKG_MORECOMPLEXRECORD_TYPE, ddlDebug);
runDdl(conn, CREATE_COMPLEXPKG_TAB1_TYPE, ddlDebug);
runDdl(conn, CREATE_COMPLEXPKG_PACKAGE, ddlDebug);
runDdl(conn, CREATE_COMPLEXPKG_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\">ComplexPLSQLSP</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>" +
"<plsql-procedure " +
"name=\"InArgOnlyTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"INARGONLYPROC\" " +
"isSimpleXMLFormat=\"true\" " +
"/>" +
"<plsql-procedure " +
"name=\"TableToVArrayTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"TABLETOVARRAY\" " +
"/>" +
"<plsql-procedure " +
"name=\"TablesToVArrayTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"TABLESTOVARRAY\" " +
"/>" +
"<plsql-procedure " +
"name=\"VArrayToTableTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"VARRAYTOTABLE\" " +
"/>" +
"<plsql-procedure " +
"name=\"VArraysToTableTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"VARRAYSTOTABLE\" " +
"/>" +
"<plsql-procedure " +
"name=\"PhoneToTableTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"PHONETOTABLE\" " +
"/>" +
"<plsql-procedure " +
"name=\"PhoneAndVArrayToTableTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"PHONEANDVARRAYTOTABLE\" " +
"/>" +
"<plsql-procedure " +
"name=\"TableToPhoneTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"TABLETOPHONE\" " +
"/>" +
"<plsql-procedure " +
"name=\"TableAndVArrayToPhoneTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"TABLEANDVARRAYTOPHONE\" " +
"/>" +
"<plsql-procedure " +
"name=\"TableAndVArrayToVArrayTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"TABLEANDVARRAYTOVARRAY\" " +
"/>" +
"<plsql-procedure " +
"name=\"TableAndVArrayToTableTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"TABLEANDVARRAYTOTABLE\" " +
"/>" +
"<plsql-procedure " +
"name=\"RecordToVArrayTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"RECORDTOVARRAY\" " +
"/>" +
"<plsql-procedure " +
"name=\"RecordToPhoneTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"RECORDTOPHONE\" " +
"/>" +
"<plsql-procedure " +
"name=\"VArrayToRecordTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"VARRAYTORECORD\" " +
"/>" +
"<plsql-procedure " +
"name=\"PhoneToRecordTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"PHONETORECORD\" " +
"/>" +
"<plsql-procedure " +
"name=\"PLSQLToPhoneTypeTableTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"PLSQLTOPHONETYPETABLE\" " +
"/>" +
"<plsql-procedure " +
"name=\"PhoneTypeTableToPLSQLTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"PHONETYPETABLETOPLSQL\" " +
"/>" +
"<plsql-procedure " +
"name=\"CreateCustomerTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"CREATE_A_CUSTOMER\" " +
"/>" +
"<plsql-procedure " +
"name=\"CreateComplexRecordTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"CREATE_COMPLEXRECORD\" " +
"/>" +
"<plsql-procedure " +
"name=\"CreatePhoneTypeVArrayTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"CREATE_PHONETYPEVARRAY\" " +
"/>" +
"<plsql-procedure " +
"name=\"CreateMoreComplexRecordTest\" " +
"catalogPattern=\"COMPLEXPKG\" " +
"procedurePattern=\"CREATE_MORECOMPLEXRECORD\" " +
"/>" +
"</dbws-builder>";
builder = null;
DBWSTestSuite.setUp(".");
}
@AfterClass
public static void tearDown() {
if (ddlDrop) {
runDdl(conn, DROP_COMPLEXPKG_PACKAGE_BODY, ddlDebug);
runDdl(conn, DROP_COMPLEXPKG_PACKAGE, ddlDebug);
runDdl(conn, DROP_COMPLEXPKG_SIMPLERECORD_TYPE, ddlDebug);
runDdl(conn, DROP_COMPLEXPKG_COMPLEXRECORD_TYPE, ddlDebug);
runDdl(conn, DROP_COMPLEXPKG_MORECOMPLEXRECORD_TYPE, ddlDebug);
runDdl(conn, DROP_A_CUSTOMER_TYPE, ddlDebug);
runDdl(conn, DROP_A_CONTACT_TYPE, ddlDebug);
runDdl(conn, DROP_A_PHONE_TYPE_VARRAY, ddlDebug);
runDdl(conn, DROP_A_PHONE_TYPE_TABLE, ddlDebug);
runDdl(conn, DROP_A_PHONE_TYPE, ddlDebug);
runDdl(conn, DROP_COMPLEXPKG_TAB1_TYPE, ddlDebug);
runDdl(conn, DROP_VARCHARARRAY_TYPE, ddlDebug);
}
}
@Test
public void inArgOnlyTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab1 = unmarshaller.unmarshal(new StringReader(TABLE_XML));
Invocation invocation = new Invocation("InArgOnlyTest");
invocation.setParameter("OLDTAB", inputTab1);
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 tableToVArrayTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab1 = unmarshaller.unmarshal(new StringReader(TABLE_XML));
Invocation invocation = new Invocation("TableToVArrayTest");
invocation.setParameter("OLDTAB", inputTab1);
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(VARRAY_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void tablesToVArrayTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab1 = unmarshaller.unmarshal(new StringReader(TABLE_XML));
Object inputTab2 = unmarshaller.unmarshal(new StringReader(TABLE2_XML));
Invocation invocation = new Invocation("TablesToVArrayTest");
invocation.setParameter("OLDTAB", inputTab1);
invocation.setParameter("OLDTAB2", inputTab2);
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(VARRAY3_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void vArrayToTableTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputArray1 = unmarshaller.unmarshal(new StringReader(VARRAY_XML));
Invocation invocation = new Invocation("VArrayToTableTest");
invocation.setParameter("OLDVARRAY", inputArray1);
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(TABLE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void vArraysToTableTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputArray1 = unmarshaller.unmarshal(new StringReader(VARRAY_XML));
Object inputArray2 = unmarshaller.unmarshal(new StringReader(VARRAY2_XML));
Invocation invocation = new Invocation("VArraysToTableTest");
invocation.setParameter("OLDVARRAY", inputArray1);
invocation.setParameter("OLDVARRAY2", inputArray2);
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(TABLE3_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void objectTypeToTableTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputPhone1 = unmarshaller.unmarshal(new StringReader(APHONE_XML));
Invocation invocation = new Invocation("PhoneToTableTest");
invocation.setParameter("APHONE", inputPhone1);
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(PHONE_TABLE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void objectTypeAndVArrayToTableTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputPhone = unmarshaller.unmarshal(new StringReader(APHONE_XML));
Object inputVArray = unmarshaller.unmarshal(new StringReader(PHONE_VARRAY_XML));
Invocation invocation = new Invocation("PhoneAndVArrayToTableTest");
invocation.setParameter("APHONE", inputPhone);
invocation.setParameter("OLDVARRAY", inputVArray);
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(PHONE_AND_VARRAY_TABLE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void tableToObjectTypeTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTable1 = unmarshaller.unmarshal(new StringReader(PHONE_TABLE_XML));
Invocation invocation = new Invocation("TableToPhoneTest");
invocation.setParameter("OLDTAB", inputTable1);
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(APHONE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void tableAndVArrayToObjectTypeTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab = unmarshaller.unmarshal(new StringReader(PHONE_TABLE_XML));
Object inputVArray = unmarshaller.unmarshal(new StringReader(PHONE_VARRAY_XML));
Invocation invocation = new Invocation("TableAndVArrayToPhoneTest");
invocation.setParameter("OLDTAB", inputTab);
invocation.setParameter("OLDVARRAY", inputVArray);
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(APHONE2_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void tableAndVArrayToVArrayTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab = unmarshaller.unmarshal(new StringReader(TABLE_XML));
Object inputVArray = unmarshaller.unmarshal(new StringReader(VARRAY2_XML));
Invocation invocation = new Invocation("TableAndVArrayToVArrayTest");
invocation.setParameter("OLDTAB", inputTab);
invocation.setParameter("OLDVARRAY", inputVArray);
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(VARRAY3_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void tableAndVArrayToTableTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab = unmarshaller.unmarshal(new StringReader(TABLE_XML));
Object inputVArray = unmarshaller.unmarshal(new StringReader(VARRAY2_XML));
Invocation invocation = new Invocation("TableAndVArrayToTableTest");
invocation.setParameter("OLDTAB", inputTab);
invocation.setParameter("OLDVARRAY", inputVArray);
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(TABLE3_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void recordToVArrayTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputRec1 = unmarshaller.unmarshal(new StringReader(SIMPLE_RECORD_XML));
Invocation invocation = new Invocation("RecordToVArrayTest");
invocation.setParameter("OLDREC", inputRec1);
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(PHONE_VARRAY_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void recordToPhoneTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputRec1 = unmarshaller.unmarshal(new StringReader(SIMPLE_RECORD2_XML));
Invocation invocation = new Invocation("RecordToPhoneTest");
invocation.setParameter("OLDREC", inputRec1);
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(APHONE2_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void varrayToRecordTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputVArray = unmarshaller.unmarshal(new StringReader(PHONE_VARRAY_XML));
Invocation invocation = new Invocation("VArrayToRecordTest");
invocation.setParameter("OLDVARRAY", inputVArray);
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(SIMPLE_RECORD_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void phoneToRecordTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputPhone = unmarshaller.unmarshal(new StringReader(APHONE2_XML));
Invocation invocation = new Invocation("PhoneToRecordTest");
invocation.setParameter("APHONE", inputPhone);
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(SIMPLE_RECORD2_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void plsqlToPhoneTypeTableTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputRec = unmarshaller.unmarshal(new StringReader(SIMPLE_RECORD_XML));
Object inputTab = unmarshaller.unmarshal(new StringReader(PHONE_TABLE_XML));
Invocation invocation = new Invocation("PLSQLToPhoneTypeTableTest");
invocation.setParameter("OLDREC", inputRec);
invocation.setParameter("OLDTAB", inputTab);
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(PHONE_TYPE_TABLE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void phoneTypeTableToPLSQLTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputPTypeTable = unmarshaller.unmarshal(new StringReader(PHONE_TYPE_TABLE_XML));
Invocation invocation = new Invocation("PhoneTypeTableToPLSQLTest");
invocation.setParameter("APHONETYPETABLE", inputPTypeTable);
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(SIMPLE_RECORD2_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void createContactTest() {
Invocation invocation = new Invocation("CreateCustomerTest");
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(CUSTOMER_TYPE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void createComplexRecordTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputContact= unmarshaller.unmarshal(new StringReader(CONTACT_TYPE_XML));
Object inputVArray = unmarshaller.unmarshal(new StringReader(VARRAY_XML));
Object inputPhoneTable = unmarshaller.unmarshal(new StringReader(PHONE_TYPE_TABLE_XML));
Invocation invocation = new Invocation("CreateComplexRecordTest");
invocation.setParameter("ACONTACT", inputContact);
invocation.setParameter("ANUMBER", 66);
invocation.setParameter("AVARRAY", inputVArray);
invocation.setParameter("APHONETYPETABLE", inputPhoneTable);
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(COMPLEX_RECORD_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void createPhoneTypeVArrayTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputPhone1 = unmarshaller.unmarshal(new StringReader(APHONE_XML));
Object inputPhone2 = unmarshaller.unmarshal(new StringReader(APHONE2_XML));
Invocation invocation = new Invocation("CreatePhoneTypeVArrayTest");
invocation.setParameter("APHONETYPE1", inputPhone1);
invocation.setParameter("APHONETYPE2", inputPhone2);
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(APHONETYPEARRAY_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void createMoreComplexRecordTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputPhone1 = unmarshaller.unmarshal(new StringReader(APHONE_XML));
Object inputPhone2 = unmarshaller.unmarshal(new StringReader(APHONE2_XML));
Invocation invocation = new Invocation("CreateMoreComplexRecordTest");
invocation.setParameter("APHONETYPE1", inputPhone1);
invocation.setParameter("APHONETYPE2", inputPhone2);
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(MORECOMPLEX_RECORD_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
public static final String RESULT_XML =
STANDALONE_XML_HEADER +
"<simple-xml-format>" +
"<simple-xml>" +
"<result>1</result>" +
"</simple-xml>" +
"</simple-xml-format>";
public static final String TABLE_XML =
STANDALONE_XML_HEADER +
"<complexpkg_tab1Type xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>foo</item>" +
"<item>bar</item>" +
"<item>blah</item>" +
"</complexpkg_tab1Type>";
public static final String TABLE2_XML =
STANDALONE_XML_HEADER +
"<complexpkg_tab1Type xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>foobar</item>" +
"<item>barfoo</item>" +
"<item>blahblah</item>" +
"</complexpkg_tab1Type>";
public static final String TABLE3_XML =
STANDALONE_XML_HEADER +
"<complexpkg_tab1Type xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>foo</item>" +
"<item>bar</item>" +
"<item>blah</item>" +
"<item>foobar</item>" +
"<item>barfoo</item>" +
"<item>blahblah</item>" +
"</complexpkg_tab1Type>";
public static final String PHONE_TABLE_XML =
STANDALONE_XML_HEADER +
"<complexpkg_tab1Type xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>(613)111-2222</item>" +
"<item>(613)222-3333</item>" +
"</complexpkg_tab1Type>";
public static final String PHONE_VARRAY_XML =
STANDALONE_XML_HEADER +
"<varchararrayType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>(613)333-4444</item>" +
"<item>(613)444-5555</item>" +
"</varchararrayType>";
public static final String PHONE_AND_VARRAY_TABLE_XML =
STANDALONE_XML_HEADER +
"<complexpkg_tab1Type xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>(613)111-2222</item>" +
"<item>(613)222-3333</item>" +
"<item>(613)333-4444</item>" +
"<item>(613)444-5555</item>" +
"</complexpkg_tab1Type>";
public static final String VARRAY_XML =
STANDALONE_XML_HEADER +
"<varchararrayType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>foo</item>" +
"<item>bar</item>" +
"<item>blah</item>" +
"</varchararrayType>";
public static final String VARRAY2_XML =
STANDALONE_XML_HEADER +
"<varchararrayType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>foobar</item>" +
"<item>barfoo</item>" +
"<item>blahblah</item>" +
"</varchararrayType>";
public static final String VARRAY3_XML =
STANDALONE_XML_HEADER +
"<varchararrayType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>foo</item>" +
"<item>bar</item>" +
"<item>blah</item>" +
"<item>foobar</item>" +
"<item>barfoo</item>" +
"<item>blahblah</item>" +
"</varchararrayType>";
public static final String APHONE_XML =
STANDALONE_XML_HEADER +
"<a_phone_typeType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<home>(613)111-2222</home>" +
"<cell>(613)222-3333</cell>" +
"</a_phone_typeType>";
public static final String APHONE2_XML =
STANDALONE_XML_HEADER +
"<a_phone_typeType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<home>(613)111-2222</home>" +
"<cell>(613)333-4444</cell>" +
"</a_phone_typeType>";
public static final String APHONETYPEARRAY_XML =
STANDALONE_XML_HEADER +
"<a_phone_type_varrayType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>" +
"<home>(613)111-2222</home>" +
"<cell>(613)222-3333</cell>" +
"</item>" +
"<item>" +
"<home>(613)111-2222</home>" +
"<cell>(613)333-4444</cell>" +
"</item>" +
"</a_phone_type_varrayType>";
public static final String SIMPLE_RECORD_XML =
STANDALONE_XML_HEADER +
"<complexpkg_simplerecordType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<sr1>(613)333-4444</sr1>" +
"<sr2>(613)444-5555</sr2>" +
"</complexpkg_simplerecordType>";
public static final String SIMPLE_RECORD2_XML =
STANDALONE_XML_HEADER +
"<complexpkg_simplerecordType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<sr1>(613)111-2222</sr1>" +
"<sr2>(613)333-4444</sr2>" +
"</complexpkg_simplerecordType>";
public static final String PHONE_TYPE_TABLE_XML =
STANDALONE_XML_HEADER +
"<a_phone_type_tableType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>" +
"<home>(613)333-4444</home>" +
"<cell>(613)444-5555</cell>" +
"</item>" +
"<item>" +
"<home>(613)111-2222</home>" +
"<cell>(613)222-3333</cell>" +
"</item>" +
"</a_phone_type_tableType>";
public static final String CUSTOMER_TYPE_XML =
STANDALONE_XML_HEADER +
"<a_customer_typeType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<name>John</name>" +
"<name>Q</name>" +
"<name>Oracle</name>" +
"<age>41</age>" +
"<contact>" +
"<address>1234 Somewhere St, Ottawa, ON</address>" +
"<phone>" +
"<home>(613)555-1234</home>" +
"<cell>(613)555-4321</cell>" +
"</phone>" +
"</contact>" +
"</a_customer_typeType>";
public static final String CONTACT_TYPE_XML =
STANDALONE_XML_HEADER +
"<a_contact_typeType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<address>1234 Somewhere St, Ottawa, ON</address>" +
"<phone>" +
"<home>(613)555-1234</home>" +
"<cell>(613)555-4321</cell>" +
"</phone>" +
"</a_contact_typeType>";
public static final String CONTACT_TYPE2_XML =
STANDALONE_XML_HEADER +
"<a_contact_typeType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<address>4321 Anywhere Rd, Ottawa, ON</address>" +
"<phone>" +
"<home>(401)111-2345</home>" +
"<cell>(401)222-5432</cell>" +
"</phone>" +
"</a_contact_typeType>";
public static final String COMPLEX_RECORD_XML =
STANDALONE_XML_HEADER +
"<complexpkg_complexrecordType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<cr1>66</cr1>" +
"<cr2>" +
"<address>1234 Somewhere St, Ottawa, ON</address>" +
"<phone>" +
"<home>(613)555-1234</home>" +
"<cell>(613)555-4321</cell>" +
"</phone>" +
"</cr2>" +
"<cr3>" +
"<item>foo</item>" +
"<item>bar</item>" +
"<item>blah</item>" +
"</cr3>" +
"<cr4>" +
"<item>" +
"<home>(613)333-4444</home>" +
"<cell>(613)444-5555</cell>" +
"</item>" +
"<item>" +
"<home>(613)111-2222</home>" +
"<cell>(613)222-3333</cell>" +
"</item>" +
"</cr4>" +
"</complexpkg_complexrecordType>";
public static final String MORECOMPLEX_RECORD_XML =
STANDALONE_XML_HEADER +
"<complexpkg_morecomplexrecordType xmlns=\"urn:ComplexPLSQLSP\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<mcr1>" +
"<item>" +
"<home>(613)111-2222</home>" +
"<cell>(613)222-3333</cell>" +
"</item>" +
"<item>" +
"<home>(613)111-2222</home>" +
"<cell>(613)333-4444</cell>" +
"</item>" +
"</mcr1>" +
"</complexpkg_morecomplexrecordType>";
}