blob: 4378cb65226eab20f6a94058670dfb11a33d8b87 [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 - September 23, 2011 - 2.4 - Initial implementation
package dbws.testing.plsqlcollection;
//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 collections with simple arguments.
*
*/
public class PLSQLCollectionTestSuite extends DBWSTestSuite {
static final String CREATE_PACKAGE2_PACKAGE =
"CREATE OR REPLACE PACKAGE PACKAGE2 AS" +
"\nTYPE tab1 IS TABLE OF VARCHAR2(111) INDEX BY BINARY_INTEGER;" +
"\nTYPE ORECORD IS RECORD (" +
"\nO1 VARCHAR2(10)," +
"\nO2 DECIMAL(7,2)" +
"\n);" +
"\nTYPE TAB2 IS TABLE OF ORECORD INDEX BY BINARY_INTEGER;" +
"\nTYPE TAB3 IS TABLE OF BOOLEAN INDEX BY BINARY_INTEGER;" +
"\nPROCEDURE COPYTABLE(OLDTAB IN tab1, NEWTAB OUT tab1);" +
"\nPROCEDURE SETRECORD(INREC IN ORECORD, NEWTAB OUT TAB2);" +
"\nPROCEDURE COPYBOOLEANTABLE(OLDTAB IN TAB3, NEWTAB OUT TAB3);" +
"\nPROCEDURE BOOLTOVARCHAR(OLDTAB IN TAB3, NEWTAB OUT tab1);" +
"\nFUNCTION COPYTABLE2(OLDTAB IN tab1) RETURN tab1;" +
"\nFUNCTION SETRECORD2(INREC IN ORECORD) RETURN TAB2;" +
"\nEND PACKAGE2;";
static final String CREATE_PACKAGE2_BODY =
"CREATE OR REPLACE PACKAGE BODY PACKAGE2 AS" +
"\nPROCEDURE COPYTABLE(OLDTAB IN tab1, NEWTAB OUT tab1) AS" +
"\nBEGIN" +
"\nNEWTAB := OLDTAB;" +
"\nEND COPYTABLE;" +
"\nPROCEDURE COPYBOOLEANTABLE(OLDTAB IN TAB3, NEWTAB OUT TAB3) AS" +
"\nBEGIN" +
"\nNEWTAB := OLDTAB;" +
"\nEND COPYBOOLEANTABLE;" +
"\nPROCEDURE BOOLTOVARCHAR(OLDTAB IN TAB3, NEWTAB OUT tab1) AS" +
"\nBEGIN" +
"\nIF OLDTAB.COUNT > 0 THEN" +
"\nFOR I IN OLDTAB.FIRST..OLDTAB.LAST LOOP" +
"\nIF OLDTAB(I) = TRUE THEN" +
"\nNEWTAB(I + 1 - OLDTAB.FIRST) := 'true';" +
"\nELSE" +
"\nNEWTAB(I + 1 - OLDTAB.FIRST) := 'false';" +
"\nEND IF;"+
"\nEND LOOP;" +
"\nEND IF;" +
"\nEND BOOLTOVARCHAR;" +
"\nPROCEDURE SETRECORD(INREC IN ORECORD, NEWTAB OUT TAB2) AS" +
"\nBEGIN" +
"\nNEWTAB(0) := INREC;" +
"\nEND SETRECORD;" +
"\nFUNCTION COPYTABLE2(OLDTAB IN tab1) RETURN tab1 IS NEWTAB tab1;" +
"\nBEGIN" +
"\nNEWTAB := OLDTAB;" +
"\nRETURN NEWTAB;" +
"\nEND COPYTABLE2;" +
"\nFUNCTION SETRECORD2(INREC IN ORECORD) RETURN TAB2 IS NEWTAB TAB2;" +
"\nBEGIN" +
"\nNEWTAB(0) := INREC;" +
"\nRETURN NEWTAB;" +
"\nEND SETRECORD2;" +
"\nEND PACKAGE2;";
static final String CREATE_PACKAGE2_TAB1_TYPE =
"CREATE OR REPLACE TYPE PACKAGE2_tab1 AS TABLE OF VARCHAR2(111)";
static final String CREATE_PACKAGE2_ORECORD_TYPE =
"CREATE OR REPLACE TYPE PACKAGE2_ORECORD AS OBJECT (" +
"\nO1 VARCHAR2(10)," +
"\nO2 DECIMAL(7,2)" +
"\n)";
static final String CREATE_PACKAGE2_TAB2_TYPE =
"CREATE OR REPLACE TYPE PACKAGE2_TAB2 AS TABLE OF PACKAGE2_ORECORD";
static final String CREATE_PACKAGE2_TAB3_TYPE =
"CREATE OR REPLACE TYPE PACKAGE2_TAB3 AS TABLE OF INTEGER";
static final String DROP_PACKAGE2_PACKAGE =
"DROP PACKAGE PACKAGE2";
static final String DROP_PACKAGE2_TAB1_TYPE =
"DROP TYPE PACKAGE2_tab1";
static final String DROP_PACKAGE2_TAB2_TYPE =
"DROP TYPE PACKAGE2_TAB2";
static final String DROP_PACKAGE2_TAB3_TYPE =
"DROP TYPE PACKAGE2_TAB3";
static final String DROP_PACKAGE2_ORECORD_TYPE =
"DROP TYPE PACKAGE2_ORECORD";
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_PACKAGE2_PACKAGE, ddlDebug);
runDdl(conn, CREATE_PACKAGE2_BODY, ddlDebug);
runDdl(conn, CREATE_PACKAGE2_TAB1_TYPE, ddlDebug);
runDdl(conn, CREATE_PACKAGE2_ORECORD_TYPE, ddlDebug);
runDdl(conn, CREATE_PACKAGE2_TAB2_TYPE, ddlDebug);
runDdl(conn, CREATE_PACKAGE2_TAB3_TYPE, 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\">PLSQLCollection</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=\"CopyTableTest\" " +
"catalogPattern=\"PACKAGE2\" " +
"procedurePattern=\"COPYTABLE\" " +
"/>" +
"<plsql-procedure " +
"name=\"CopyTableTest2\" " +
"catalogPattern=\"PACKAGE2\" " +
"procedurePattern=\"COPYTABLE2\" " +
"/>" +
"<plsql-procedure " +
"name=\"CopyBoolTableTest\" " +
"catalogPattern=\"PACKAGE2\" " +
"procedurePattern=\"COPYBOOLEANTABLE\" " +
"/>" +
"<plsql-procedure " +
"name=\"BoolTabToVarcharTabTest\" " +
"catalogPattern=\"PACKAGE2\" " +
"procedurePattern=\"BOOLTOVARCHAR\" " +
"/>" +
"<plsql-procedure " +
"name=\"SetRecordTest\" " +
"catalogPattern=\"PACKAGE2\" " +
"procedurePattern=\"SETRECORD\" " +
"/>" +
"<plsql-procedure " +
"name=\"SetRecordTest2\" " +
"catalogPattern=\"PACKAGE2\" " +
"procedurePattern=\"SETRECORD2\" " +
"returnType=\"package2_tab2Type\" " + // note that returnType is not required
"/>" +
"</dbws-builder>";
builder = null;
DBWSTestSuite.setUp(".");
}
@AfterClass
public static void tearDown() {
String ddlDrop = System.getProperty(DATABASE_DDL_DROP_KEY, DEFAULT_DATABASE_DDL_DROP);
if ("true".equalsIgnoreCase(ddlDrop)) {
runDdl(conn, DROP_PACKAGE2_PACKAGE, ddlDebug);
runDdl(conn, DROP_PACKAGE2_TAB1_TYPE, ddlDebug);
runDdl(conn, DROP_PACKAGE2_TAB2_TYPE, ddlDebug);
runDdl(conn, DROP_PACKAGE2_TAB3_TYPE, ddlDebug);
runDdl(conn, DROP_PACKAGE2_ORECORD_TYPE, ddlDebug);
}
}
@Test
public void copyTableTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab1 = unmarshaller.unmarshal(new StringReader(TABLE_XML));
Invocation invocation = new Invocation("CopyTableTest");
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(TABLE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
public static final String TABLE_XML =
STANDALONE_XML_HEADER +
"<package2_tab1Type xmlns=\"urn:PLSQLCollection\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>BLAH</item>" +
"</package2_tab1Type>";
@Test
public void copyTableTest2() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab1 = unmarshaller.unmarshal(new StringReader(TABLE_XML));
Invocation invocation = new Invocation("CopyTableTest2");
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(TABLE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void copyBoolTableTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab = unmarshaller.unmarshal(new StringReader(TABLE3_XML));
Invocation invocation = new Invocation("CopyBoolTableTest");
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(TABLE3_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
public static final String TABLE3_XML =
STANDALONE_XML_HEADER +
"<package2_tab3Type xmlns=\"urn:PLSQLCollection\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>1</item>" +
"<item>0</item>" +
"<item>1</item>" +
"<item>0</item>" +
"</package2_tab3Type>";
@Test
public void boolTabToVarcharTabTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputTab = unmarshaller.unmarshal(new StringReader(TABLE3_XML));
Invocation invocation = new Invocation("BoolTabToVarcharTabTest");
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(TABLE4_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
public static final String TABLE4_XML =
STANDALONE_XML_HEADER +
"<package2_tab1Type xmlns=\"urn:PLSQLCollection\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>true</item>" +
"<item>false</item>" +
"<item>true</item>" +
"<item>false</item>" +
"</package2_tab1Type>";
/**
* StoredProcedure test.
*/
@Test
public void setRecordTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputORec = unmarshaller.unmarshal(new StringReader(INPUTORECORD_XML));
Invocation invocation = new Invocation("SetRecordTest");
invocation.setParameter("INREC", inputORec);
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(OUTPUTTABLE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
public static final String INPUTORECORD_XML =
STANDALONE_XML_HEADER +
"<package2_orecordType xmlns=\"urn:PLSQLCollection\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<o1>somedata</o1>" +
"<o2>66.6</o2>" +
"</package2_orecordType>";
public static final String OUTPUTTABLE_XML =
STANDALONE_XML_HEADER +
"<package2_tab2Type xmlns=\"urn:PLSQLCollection\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>" +
"<o1>somedata</o1>" +
"<o2>66.6</o2>" +
"</item>" +
"</package2_tab2Type>";
/**
* StoredFunction test.
*/
@Test
public void setRecordTest2() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object inputORec = unmarshaller.unmarshal(new StringReader(INPUTORECORD_XML));
Invocation invocation = new Invocation("SetRecordTest2");
invocation.setParameter("INREC", inputORec);
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(OUTPUTTABLE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
/**
* WSDL generation test.
*/
@Test
public void testWSDLGeneration() {
assertNotNull("No WSDL was generated", DBWS_WSDL_STREAM);
Document doc = xmlParser.parse(new StringReader(DBWS_WSDL_STREAM.toString()));
removeEmptyTextNodes(doc);
Document controlDoc = xmlParser.parse(new StringReader(WSDL_XML));
removeEmptyTextNodes(controlDoc);
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
public static final String WSDL_XML =
STANDALONE_XML_HEADER +
"<wsdl:definitions name=\"PLSQLCollectionService\" targetNamespace=\"urn:PLSQLCollectionService\" xmlns:ns1=\"urn:PLSQLCollection\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:tns=\"urn:PLSQLCollectionService\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\">" +
"<wsdl:types>" +
"<xsd:schema xmlns:tns=\"urn:PLSQLCollectionService\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"urn:PLSQLCollectionService\" elementFormDefault=\"qualified\">" +
"<xsd:import schemaLocation=\"eclipselink-dbws-schema.xsd\" namespace=\"urn:PLSQLCollection\"/>" +
"<xsd:complexType name=\"SetRecordTestRequestType\"><xsd:sequence><xsd:element name=\"INREC\" type=\"ns1:package2_orecordType\"/></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"CopyBoolTableTestResponseType\"><xsd:sequence><xsd:element name=\"result\"><xsd:complexType><xsd:sequence><xsd:element minOccurs=\"0\" ref=\"ns1:package2_tab3Type\"/></xsd:sequence></xsd:complexType></xsd:element></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"CopyTableTestResponseType\"><xsd:sequence><xsd:element name=\"result\"><xsd:complexType><xsd:sequence><xsd:element ref=\"ns1:package2_tab1Type\" minOccurs=\"0\"/></xsd:sequence></xsd:complexType></xsd:element></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"BoolTabToVarcharTabTestRequestType\"><xsd:sequence><xsd:element name=\"OLDTAB\" type=\"ns1:package2_tab3Type\"/></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"CopyTableTest2ResponseType\"><xsd:sequence><xsd:element name=\"result\"><xsd:complexType><xsd:sequence><xsd:element ref=\"ns1:package2_tab1Type\" minOccurs=\"0\"/></xsd:sequence></xsd:complexType></xsd:element></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"SetRecordTest2RequestType\"><xsd:sequence><xsd:element name=\"INREC\" type=\"ns1:package2_orecordType\"/></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"CopyTableTestRequestType\"><xsd:sequence><xsd:element name=\"OLDTAB\" type=\"ns1:package2_tab1Type\"/></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"BoolTabToVarcharTabTestResponseType\"><xsd:sequence><xsd:element name=\"result\"><xsd:complexType><xsd:sequence><xsd:element minOccurs=\"0\" ref=\"ns1:package2_tab1Type\"/></xsd:sequence></xsd:complexType></xsd:element></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"SetRecordTestResponseType\"><xsd:sequence><xsd:element name=\"result\"><xsd:complexType><xsd:sequence><xsd:element ref=\"ns1:package2_tab2Type\" minOccurs=\"0\"/></xsd:sequence></xsd:complexType></xsd:element></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"CopyTableTest2RequestType\"><xsd:sequence><xsd:element name=\"OLDTAB\" type=\"ns1:package2_tab1Type\"/></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"SetRecordTest2ResponseType\"><xsd:sequence><xsd:element name=\"result\"><xsd:complexType><xsd:sequence><xsd:element ref=\"ns1:package2_tab2Type\" minOccurs=\"0\"/></xsd:sequence></xsd:complexType></xsd:element></xsd:sequence></xsd:complexType>" +
"<xsd:complexType name=\"CopyBoolTableTestRequestType\"><xsd:sequence><xsd:element name=\"OLDTAB\" type=\"ns1:package2_tab3Type\"/></xsd:sequence></xsd:complexType>" +
"<xsd:element name=\"CopyTableTestResponse\" type=\"tns:CopyTableTestResponseType\"/>" +
"<xsd:element name=\"CopyBoolTableTestResponse\" type=\"tns:CopyBoolTableTestResponseType\"/>" +
"<xsd:element name=\"CopyTableTest\" type=\"tns:CopyTableTestRequestType\"/>" +
"<xsd:element name=\"SetRecordTest\" type=\"tns:SetRecordTestRequestType\"/>" +
"<xsd:element name=\"CopyTableTest2Response\" type=\"tns:CopyTableTest2ResponseType\"/>" +
"<xsd:element name=\"SetRecordTest2\" type=\"tns:SetRecordTest2RequestType\"/>" +
"<xsd:element name=\"BoolTabToVarcharTabTestResponse\" type=\"tns:BoolTabToVarcharTabTestResponseType\"/>" +
"<xsd:element name=\"SetRecordTest2Response\" type=\"tns:SetRecordTest2ResponseType\"/>" +
"<xsd:element name=\"SetRecordTestResponse\" type=\"tns:SetRecordTestResponseType\"/>" +
"<xsd:element name=\"BoolTabToVarcharTabTest\" type=\"tns:BoolTabToVarcharTabTestRequestType\"/>" +
"<xsd:element name=\"CopyBoolTableTest\" type=\"tns:CopyBoolTableTestRequestType\"/>" +
"<xsd:element name=\"CopyTableTest2\" type=\"tns:CopyTableTest2RequestType\"/>" +
"</xsd:schema>" +
"</wsdl:types>" +
"<wsdl:message name=\"SetRecordTest2Response\">" +
"<wsdl:part name=\"SetRecordTest2Response\" element=\"tns:SetRecordTest2Response\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"BoolTabToVarcharTabTestResponse\">" +
"<wsdl:part element=\"tns:BoolTabToVarcharTabTestResponse\" name=\"BoolTabToVarcharTabTestResponse\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"SetRecordTestRequest\">" +
"<wsdl:part name=\"SetRecordTestRequest\" element=\"tns:SetRecordTest\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"BoolTabToVarcharTabTestRequest\">" +
"<wsdl:part element=\"tns:BoolTabToVarcharTabTest\" name=\"BoolTabToVarcharTabTestRequest\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"SetRecordTestResponse\">" +
"<wsdl:part name=\"SetRecordTestResponse\" element=\"tns:SetRecordTestResponse\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"CopyBoolTableTestResponse\">" +
"<wsdl:part element=\"tns:CopyBoolTableTestResponse\" name=\"CopyBoolTableTestResponse\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"CopyTableTestRequest\">" +
"<wsdl:part name=\"CopyTableTestRequest\" element=\"tns:CopyTableTest\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"CopyTableTestResponse\">" +
"<wsdl:part name=\"CopyTableTestResponse\" element=\"tns:CopyTableTestResponse\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"CopyTableTest2Response\">" +
"<wsdl:part name=\"CopyTableTest2Response\" element=\"tns:CopyTableTest2Response\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"CopyTableTest2Request\">" +
"<wsdl:part name=\"CopyTableTest2Request\" element=\"tns:CopyTableTest2\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"CopyBoolTableTestRequest\">" +
"<wsdl:part element=\"tns:CopyBoolTableTest\" name=\"CopyBoolTableTestRequest\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:message name=\"SetRecordTest2Request\">" +
"<wsdl:part name=\"SetRecordTest2Request\" element=\"tns:SetRecordTest2\">" +
"</wsdl:part>" +
"</wsdl:message>" +
"<wsdl:portType name=\"PLSQLCollectionService_Interface\">" +
"<wsdl:operation name=\"CopyTableTest\">" +
"<wsdl:input message=\"tns:CopyTableTestRequest\">" +
"</wsdl:input>" +
"<wsdl:output message=\"tns:CopyTableTestResponse\">" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"SetRecordTest\">" +
"<wsdl:input message=\"tns:SetRecordTestRequest\">" +
"</wsdl:input>" +
"<wsdl:output message=\"tns:SetRecordTestResponse\">" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"SetRecordTest2\">" +
"<wsdl:input message=\"tns:SetRecordTest2Request\">" +
"</wsdl:input>" +
"<wsdl:output message=\"tns:SetRecordTest2Response\">" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"BoolTabToVarcharTabTest\">" +
"<wsdl:input message=\"tns:BoolTabToVarcharTabTestRequest\">" +
"</wsdl:input>" +
"<wsdl:output message=\"tns:BoolTabToVarcharTabTestResponse\">" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"CopyBoolTableTest\">" +
"<wsdl:input message=\"tns:CopyBoolTableTestRequest\">" +
"</wsdl:input>" +
"<wsdl:output message=\"tns:CopyBoolTableTestResponse\">" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"CopyTableTest2\">" +
"<wsdl:input message=\"tns:CopyTableTest2Request\">" +
"</wsdl:input>" +
"<wsdl:output message=\"tns:CopyTableTest2Response\">" +
"</wsdl:output>" +
"</wsdl:operation>" +
"</wsdl:portType>" +
"<wsdl:binding name=\"PLSQLCollectionService_SOAP_HTTP\" type=\"tns:PLSQLCollectionService_Interface\">" +
"<soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>" +
"<wsdl:operation name=\"CopyTableTest\">" +
"<soap:operation soapAction=\"urn:PLSQLCollectionService:CopyTableTest\"/>" +
"<wsdl:input>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:input>" +
"<wsdl:output>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"SetRecordTest\">" +
"<soap:operation soapAction=\"urn:PLSQLCollectionService:SetRecordTest\"/>" +
"<wsdl:input>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:input>" +
"<wsdl:output>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"SetRecordTest2\">" +
"<soap:operation soapAction=\"urn:PLSQLCollectionService:SetRecordTest2\"/>" +
"<wsdl:input>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:input>" +
"<wsdl:output>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"BoolTabToVarcharTabTest\">" +
"<soap:operation soapAction=\"urn:PLSQLCollectionService:BoolTabToVarcharTabTest\"/>" +
"<wsdl:input>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:input>" +
"<wsdl:output>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"CopyBoolTableTest\">" +
"<soap:operation soapAction=\"urn:PLSQLCollectionService:CopyBoolTableTest\"/>" +
"<wsdl:input>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:input>" +
"<wsdl:output>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:output>" +
"</wsdl:operation>" +
"<wsdl:operation name=\"CopyTableTest2\">" +
"<soap:operation soapAction=\"urn:PLSQLCollectionService:CopyTableTest2\"/>" +
"<wsdl:input>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:input>" +
"<wsdl:output>" +
"<soap:body use=\"literal\"/>" +
"</wsdl:output>" +
"</wsdl:operation>" +
"</wsdl:binding>" +
"<wsdl:service name=\"PLSQLCollectionService\">" +
"<wsdl:port name=\"PLSQLCollectionServicePort\" binding=\"tns:PLSQLCollectionService_SOAP_HTTP\">" +
"<soap:address location=\"REPLACE_WITH_ENDPOINT_ADDRESS\"/>" +
"</wsdl:port>" +
"</wsdl:service>" +
"</wsdl:definitions>";
}