blob: 9108a9b91abd3dc0c357429feadbd42d0d4c3bc6 [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 - October 24, 2011 - 2.4 - Initial implementation
package dbws.testing.objecttype;
//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 types.
*
*/
public class ObjectTypeTestSuite extends DBWSTestSuite {
static final String EMP_TYPE_ALIAS = "Dbws_emp_type";
static final String EMP_TYPE_CLASSNAME = "objecttypetests.Dbws_emp_type";
static final String PHONE_TYPE_ALIAS = "Dbws_phone_type";
static final String PHONE_TYPE_CLASSNAME = "objecttypetests.Dbws_phone_type";
//==============================================================================
static final String CREATE_MYTYPE =
"CREATE OR REPLACE TYPE MYTYPE_1 AS OBJECT (" +
"\nid INTEGER," +
"\nname VARCHAR2(30)" +
"\n)";
static final String CREATE_MYTYPE_ARRAY =
"CREATE OR REPLACE TYPE MYTYPE_1_ARRAY AS VARRAY(10) OF MYTYPE_1;";
static final String CREATE_MYTYPE_PKG =
"CREATE OR REPLACE PACKAGE USERTYPEINOUT AS" +
"\nPROCEDURE TEST_IN_AND_OUT(P1 IN MYTYPE_1, P2 OUT MYTYPE_1);" +
"\nPROCEDURE TEST_OUT(P1 OUT MYTYPE_1);" +
"\nPROCEDURE TEST_IN(P1 IN MYTYPE_1);" +
"\nPROCEDURE TEST_INOUT(P1 IN OUT MYTYPE_1);" +
"\nFUNCTION ECHO_MYTYPE_1_ARRAY(P1 MYTYPE_1_ARRAY) RETURN MYTYPE_1_ARRAY;" +
"\nPROCEDURE TEST_MULTI_IN_AND_OUT(P1 IN MYTYPE_1, P2 IN VARCHAR2, P3 IN INTEGER, P4 OUT MYTYPE_1);" +
"\nEND USERTYPEINOUT;";
static final String CREATE_MYTYPE_PKG_BODY =
"CREATE OR REPLACE PACKAGE BODY USERTYPEINOUT AS" +
"\nPROCEDURE TEST_IN_AND_OUT(P1 IN MYTYPE_1, P2 OUT MYTYPE_1) AS" +
"\nBEGIN" +
"\nP2 := P1;" +
"\nEND TEST_IN_AND_OUT; " +
"\nPROCEDURE TEST_OUT(P1 OUT MYTYPE_1) AS" +
"\nBEGIN" +
"\nP1 := MYTYPE_1(66, 'Steve French');" +
"\nEND TEST_OUT; " +
"\nPROCEDURE TEST_IN(P1 IN MYTYPE_1) AS" +
"\nBEGIN" +
"\nNULL;" +
"\nEND TEST_IN; " +
"\nPROCEDURE TEST_INOUT(P1 IN OUT MYTYPE_1) AS" +
"\nBEGIN" +
"\nNULL;" +
"\nEND TEST_INOUT; " +
"\nFUNCTION ECHO_MYTYPE_1_ARRAY(P1 MYTYPE_1_ARRAY) RETURN MYTYPE_1_ARRAY AS" +
"\nBEGIN" +
"\nRETURN P1;" +
"\nEND ECHO_MYTYPE_1_ARRAY;" +
"\nPROCEDURE TEST_MULTI_IN_AND_OUT(P1 IN MYTYPE_1, P2 IN VARCHAR2, P3 IN INTEGER, P4 OUT MYTYPE_1) AS" +
"\nBEGIN" +
"\nP4 := MYTYPE_1(P1.id + P3, concat(P1.name, P2));" +
"\nEND TEST_MULTI_IN_AND_OUT; " +
"\nEND USERTYPEINOUT;";
//==============================================================================
static final String CREATE_PHONE_TYPE =
"CREATE OR REPLACE TYPE DBWS_PHONE_TYPE AS OBJECT (" +
"\nHOME VARCHAR2(20)," +
"\nCELL VARCHAR2(20)" +
"\n)";
static final String CREATE_EMP_TYPE =
"CREATE OR REPLACE TYPE DBWS_EMP_TYPE AS OBJECT (" +
"\nID NUMBER," +
"\nNAME VARCHAR2(20)," +
"\nPHONE DBWS_PHONE_TYPE" +
"\n)";
static final String CREATE_EMP_TYPE_TABLE =
"CREATE TABLE DBWS_EMP_TYPE_TABLE OF DBWS_EMP_TYPE";
static final String[] POPULATE_EMP_TYPE_TABLE = new String[] {
"INSERT INTO DBWS_EMP_TYPE_TABLE VALUES (" +
"DBWS_EMP_TYPE(66, 'BUBBLES', DBWS_PHONE_TYPE('(613) 234-4567', '(613) 858-3434')))",
"INSERT INTO DBWS_EMP_TYPE_TABLE VALUES (" +
"DBWS_EMP_TYPE(69, 'RICKY', DBWS_PHONE_TYPE('(613) 344-1232', '(613) 823-2323')))",
"INSERT INTO DBWS_EMP_TYPE_TABLE VALUES (" +
"DBWS_EMP_TYPE(99, 'JULIAN', DBWS_PHONE_TYPE('(613) 424-0987', '(613) 555-8888')))"
};
static final String CREATE_GET_EMP_TYPE_BY_ID_PROC =
"CREATE OR REPLACE PROCEDURE GET_EMP_TYPE_BY_ID(EID IN NUMBER, ETYPE OUT DBWS_EMP_TYPE) AS" +
"\nBEGIN" +
"\nSELECT VALUE(E) INTO ETYPE FROM DBWS_EMP_TYPE_TABLE E WHERE E.ID = EID;" +
"\nEND GET_EMP_TYPE_BY_ID;";
static final String CREATE_GET_EMP_TYPE_BY_ID_2_FUNC =
"CREATE OR REPLACE FUNCTION GET_EMP_TYPE_BY_ID_2(EID IN NUMBER) RETURN DBWS_EMP_TYPE AS" +
"\nETYPE DBWS_EMP_TYPE;" +
"\nBEGIN" +
"\nSELECT VALUE(E) INTO ETYPE FROM DBWS_EMP_TYPE_TABLE E WHERE E.ID = EID;" +
"\nRETURN ETYPE;" +
"\nEND GET_EMP_TYPE_BY_ID_2;";
static final String CREATE_ADD_EMP_TYPE_PROC =
"CREATE OR REPLACE PROCEDURE ADD_EMP_TYPE(ETYPE IN DBWS_EMP_TYPE, RESULT OUT DBWS_EMP_TYPE) AS" +
"\nBEGIN" +
"\nDELETE FROM DBWS_EMP_TYPE_TABLE WHERE ID = ETYPE.ID;" +
"\nINSERT INTO DBWS_EMP_TYPE_TABLE VALUES (ETYPE);" +
"\nSELECT VALUE(E) INTO RESULT FROM DBWS_EMP_TYPE_TABLE E WHERE E.ID = ETYPE.ID;" +
"\nDELETE FROM DBWS_EMP_TYPE_TABLE WHERE ID = ETYPE.ID;" +
"\nEND ADD_EMP_TYPE;";
static final String CREATE_ADD_EMP_TYPE2_FUNC =
"CREATE OR REPLACE FUNCTION ADD_EMP_TYPE2(ETYPE IN DBWS_EMP_TYPE) RETURN DBWS_EMP_TYPE AS" +
"\nRESULT DBWS_EMP_TYPE;" +
"\nBEGIN" +
"\nADD_EMP_TYPE(ETYPE, RESULT);" +
"\nRETURN RESULT;" +
"\nEND ADD_EMP_TYPE2;";
static final String DROP_PHONE_TYPE =
"DROP TYPE DBWS_PHONE_TYPE FORCE";
static final String DROP_EMP_TYPE =
"DROP TYPE DBWS_EMP_TYPE FORCE";
static final String DROP_EMP_TYPE_TABLE =
"DROP TABLE DBWS_EMP_TYPE_TABLE FORCE";
static final String DROP_GET_EMP_TYPE_BY_ID_PROC =
"DROP PROCEDURE GET_EMP_TYPE_BY_ID";
static final String DROP_GET_EMP_TYPE_BY_ID_2_FUNC =
"DROP FUNCTION GET_EMP_TYPE_BY_ID_2";
static final String DROP_ADD_EMP_TYPE_PROC =
"DROP PROCEDURE ADD_EMP_TYPE";
static final String DROP_ADD_EMP_TYPE2_FUNC =
"DROP FUNCTION ADD_EMP_TYPE2";
static final String DROP_TYPE_MYTYPE_1 =
"DROP TYPE MYTYPE_1";
static final String DROP_TYPE_MYTYPE_1_ARRAY =
"DROP TYPE MYTYPE_1_ARRAY";
static final String DROP_PACKAGE_USER_TYPE_INOUT =
"DROP PACKAGE USERTYPEINOUT";
static final String DROP_PACKAGE_BODY_USER_TYPE_INOUT =
"DROP PACKAGE BODY USERTYPEINOUT";
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();
}
}
//because of behaviour of DBWS_EMP_TYPE_TABLE w.r.t. identity, force create/drop
//no matter what the external properties say
ddlCreate = true;
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_PHONE_TYPE, ddlDebug);
runDdl(conn, CREATE_EMP_TYPE, ddlDebug);
runDdl(conn, CREATE_EMP_TYPE_TABLE, ddlDebug);
runDdl(conn, CREATE_GET_EMP_TYPE_BY_ID_PROC, ddlDebug);
runDdl(conn, CREATE_GET_EMP_TYPE_BY_ID_2_FUNC, ddlDebug);
runDdl(conn, CREATE_ADD_EMP_TYPE_PROC, ddlDebug);
runDdl(conn, CREATE_ADD_EMP_TYPE2_FUNC, ddlDebug);
runDdl(conn, CREATE_MYTYPE, ddlDebug);
runDdl(conn, CREATE_MYTYPE_ARRAY, ddlDebug);
runDdl(conn, CREATE_MYTYPE_PKG, ddlDebug);
runDdl(conn, CREATE_MYTYPE_PKG_BODY, ddlDebug);
try {
Statement stmt = conn.createStatement();
for (int i = 0; i < POPULATE_EMP_TYPE_TABLE.length; i++) {
stmt.addBatch(POPULATE_EMP_TYPE_TABLE[i]);
}
stmt.executeBatch();
}
catch (SQLException e) {
if (ddlDebug) {
e.printStackTrace();
}
}
}
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\">ObjectTypeTests</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=\"GetEmpTypeByIdTest\" " +
"catalogPattern=\"TOPLEVEL\" " +
"procedurePattern=\"GET_EMP_TYPE_BY_ID\" " +
"isAdvancedJDBC=\"true\" " +
"returnType=\"dbws_emp_typeType\" " +
"/>" +
"<procedure " +
"name=\"GetEmpTypeByIdTest2\" " +
"catalogPattern=\"TOPLEVEL\" " +
"procedurePattern=\"GET_EMP_TYPE_BY_ID_2\" " +
"isAdvancedJDBC=\"true\" " +
"returnType=\"dbws_emp_typeType\" " +
"/>" +
"<procedure " +
"name=\"AddEmpTypeTest\" " +
"catalogPattern=\"TOPLEVEL\" " +
"procedurePattern=\"ADD_EMP_TYPE\" " +
"isAdvancedJDBC=\"true\" " +
"returnType=\"dbws_emp_typeType\" " +
"/>" +
"<procedure " +
"name=\"AddEmpTypeTest2\" " +
"catalogPattern=\"TOPLEVEL\" " +
"procedurePattern=\"ADD_EMP_TYPE2\" " +
"isAdvancedJDBC=\"true\" " +
"returnType=\"dbws_emp_typeType\" " +
"/>" +
"<plsql-procedure " +
"name=\"TestIn\" " +
"catalogPattern=\"USERTYPEINOUT\" " +
"procedurePattern=\"TEST_IN\" " +
"/>" +
"<plsql-procedure " +
"name=\"TestOut\" " +
"catalogPattern=\"USERTYPEINOUT\" " +
"procedurePattern=\"TEST_OUT\" " +
"/>" +
"<plsql-procedure " +
"name=\"TestInAndOut\" " +
"catalogPattern=\"USERTYPEINOUT\" " +
"procedurePattern=\"TEST_IN_AND_OUT\" " +
"/>" +
"<plsql-procedure " +
"name=\"TestInOut\" " +
"catalogPattern=\"USERTYPEINOUT\" " +
"procedurePattern=\"TEST_INOUT\" " +
"/>" +
"<plsql-procedure " +
"name=\"TestEchoArray\" " +
"catalogPattern=\"USERTYPEINOUT\" " +
"procedurePattern=\"ECHO_MYTYPE_1_ARRAY\" " +
"/>" +
"<plsql-procedure " +
"name=\"TestMultiInAndOut\" " +
"catalogPattern=\"USERTYPEINOUT\" " +
"procedurePattern=\"TEST_MULTI_IN_AND_OUT\" " +
"/>" +
"</dbws-builder>";
builder = null;
DBWSTestSuite.setUp(".");
}
@AfterClass
public static void tearDown() {
if (ddlDrop) {
runDdl(conn, DROP_EMP_TYPE_TABLE, ddlDebug);
runDdl(conn, DROP_ADD_EMP_TYPE2_FUNC, ddlDebug);
runDdl(conn, DROP_ADD_EMP_TYPE_PROC, ddlDebug);
runDdl(conn, DROP_GET_EMP_TYPE_BY_ID_2_FUNC, ddlDebug);
runDdl(conn, DROP_GET_EMP_TYPE_BY_ID_PROC, ddlDebug);
runDdl(conn, DROP_EMP_TYPE, ddlDebug);
runDdl(conn, DROP_PHONE_TYPE, ddlDebug);
runDdl(conn, DROP_PACKAGE_BODY_USER_TYPE_INOUT, ddlDebug);
runDdl(conn, DROP_PACKAGE_USER_TYPE_INOUT, ddlDebug);
runDdl(conn, DROP_TYPE_MYTYPE_1_ARRAY, ddlDebug);
runDdl(conn, DROP_TYPE_MYTYPE_1, ddlDebug);
}
}
@Test
public void getEmpTypeByIdTest() {
Invocation invocation = new Invocation("GetEmpTypeByIdTest");
invocation.setParameter("EID", 66);
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_emp_typeType xmlns=\"urn:ObjectTypeTests\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<id>66</id>" +
"<name>BUBBLES</name>" +
"<phone>" +
"<home>(613) 234-4567</home>" +
"<cell>(613) 858-3434</cell>" +
"</phone>" +
"</dbws_emp_typeType>";
@Test
public void getEmpTypeByIdTest2() {
Invocation invocation = new Invocation("GetEmpTypeByIdTest2");
invocation.setParameter("EID", 69);
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(RESULT2_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
static String RESULT2_XML =
REGULAR_XML_HEADER +
"<dbws_emp_typeType xmlns=\"urn:ObjectTypeTests\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<id>69</id>" +
"<name>RICKY</name>" +
"<phone>" +
"<home>(613) 344-1232</home>" +
"<cell>(613) 823-2323</cell>" +
"</phone>" +
"</dbws_emp_typeType>";
@Test
public void addEmpTypeTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object eType = unmarshaller.unmarshal(new StringReader(ETYPE_XML));
Invocation invocation = new Invocation("AddEmpTypeTest");
invocation.setParameter("ETYPE", eType);
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(ETYPE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void addEmpTypeTest2() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object eType = unmarshaller.unmarshal(new StringReader(ETYPE_XML));
Invocation invocation = new Invocation("AddEmpTypeTest2");
invocation.setParameter("ETYPE", eType);
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(ETYPE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
static String ETYPE_XML =
REGULAR_XML_HEADER +
"<dbws_emp_typeType xmlns=\"urn:ObjectTypeTests\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<id>9</id>" +
"<name>LAHEY</name>" +
"<phone>" +
"<home>(902) 987-0011</home>" +
"<cell>(902) 789-1100</cell>" +
"</phone>" +
"</dbws_emp_typeType>";
@Test
public void validateJavaClassName() {
Project orProject = builder.getOrProject();
ClassDescriptor empORDesc = orProject.getDescriptorForAlias(EMP_TYPE_ALIAS);
assertNotNull("No OR descriptor found for alias [" + EMP_TYPE_ALIAS + "]", empORDesc);
assertEquals("Expected class name [" + EMP_TYPE_CLASSNAME + "] but was [" + empORDesc.getJavaClassName() + "]", empORDesc.getJavaClassName(), EMP_TYPE_CLASSNAME);
ClassDescriptor phoneORDesc = orProject.getDescriptorForAlias(PHONE_TYPE_ALIAS);
assertNotNull("No OR descriptor found for alias [" + PHONE_TYPE_ALIAS + "]", phoneORDesc);
assertEquals("Expected class name [" + PHONE_TYPE_CLASSNAME + "] but was [" + phoneORDesc.getJavaClassName() + "]", phoneORDesc.getJavaClassName(), PHONE_TYPE_CLASSNAME);
Project oxProject = builder.getOxProject();
ClassDescriptor empOXDesc = oxProject.getDescriptorForAlias(EMP_TYPE_ALIAS);
assertNotNull("No OX descriptor found for alias [" + EMP_TYPE_ALIAS + "]", empOXDesc);
assertEquals("Expected class name [" + EMP_TYPE_CLASSNAME + "] but was [" + empOXDesc.getJavaClassName() + "]", empOXDesc.getJavaClassName(), EMP_TYPE_CLASSNAME);
ClassDescriptor phoneOXDesc = oxProject.getDescriptorForAlias(PHONE_TYPE_ALIAS);
assertNotNull("No OX descriptor found for alias [" + PHONE_TYPE_ALIAS + "]", phoneOXDesc);
assertEquals("Expected class name [" + PHONE_TYPE_CLASSNAME + "] but was [" + phoneOXDesc.getJavaClassName() + "]", phoneOXDesc.getJavaClassName(), PHONE_TYPE_CLASSNAME);
}
@Test
public void inTypeTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object pType = unmarshaller.unmarshal(new StringReader(MYTYPE_XML));
Invocation invocation = new Invocation("TestIn");
invocation.setParameter("P1", pType);
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(RETURN_VALUE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
static String RETURN_VALUE_XML =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>" +
"<value>1</value>";
@Test
public void outTypeTest() {
Invocation invocation = new Invocation("TestOut");
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(MYTYPE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void inAndOutTypeTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object pType = unmarshaller.unmarshal(new StringReader(MYTYPE_XML));
Invocation invocation = new Invocation("TestInAndOut");
invocation.setParameter("P1", pType);
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(MYTYPE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
@Test
public void inOutTypeTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object pType = unmarshaller.unmarshal(new StringReader(MYTYPE_XML));
Invocation invocation = new Invocation("TestInOut");
invocation.setParameter("P1", pType);
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(MYTYPE_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
static String MYTYPE_XML =
REGULAR_XML_HEADER +
"<mytype_1Type xmlns=\"urn:ObjectTypeTests\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<id>66</id>" +
"<name>Steve French</name>" +
"</mytype_1Type>";
@Test
public void arrayEchoTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object pType = unmarshaller.unmarshal(new StringReader(MYTYPE_ARRAY_XML));
Invocation invocation = new Invocation("TestEchoArray");
invocation.setParameter("P1", pType);
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(MYTYPE_ARRAY_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
static String MYTYPE_ARRAY_XML =
REGULAR_XML_HEADER +
"<mytype_1_arrayType xmlns=\"urn:ObjectTypeTests\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<item>" +
"<id>66</id>" +
"<name>Steve French</name>" +
"</item>" +
"</mytype_1_arrayType>";
@Test
public void multiInAndOutTest() {
XMLUnmarshaller unmarshaller = xrService.getXMLContext().createUnmarshaller();
Object pType = unmarshaller.unmarshal(new StringReader(MYTYPE_XML));
Invocation invocation = new Invocation("TestMultiInAndOut");
invocation.setParameter("P1", pType);
invocation.setParameter("P2", " the Cougar!");
invocation.setParameter("P3", 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(MYTYPE2_XML));
assertTrue("Expected:\n" + documentToString(controlDoc) + "\nActual:\n" + documentToString(doc), comparer.isNodeEqual(controlDoc, doc));
}
static String MYTYPE2_XML =
REGULAR_XML_HEADER +
"<mytype_1Type xmlns=\"urn:ObjectTypeTests\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<id>69</id>" +
"<name>Steve French the Cougar!</name>" +
"</mytype_1Type>";
}