alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Apache CXF example source code file (AbstractTypeTestClient.java)

This example Apache CXF source code file (AbstractTypeTestClient.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Apache CXF tags/keywords

bigdecimal, biginteger, exception, exception, holder, holder, incorrect, incorrect, list, math, net, network, qname, string, string, test, util, xml, xmlgregoriancalendar

The Apache CXF AbstractTypeTestClient.java source code

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.apache.cxf.systest.type_test;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.Duration;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import javax.xml.ws.Holder;
import javax.xml.ws.soap.SOAPFaultException;

import org.apache.cxf.helpers.IOUtils;
import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
import org.apache.type_test.doc.TypeTestPortType;
import org.apache.type_test.rpc.SOAPService;
import org.apache.type_test.types1.AnyURIEnum;
import org.apache.type_test.types1.ColourEnum;
import org.apache.type_test.types1.DecimalEnum;
import org.apache.type_test.types1.NMTokenEnum;
import org.apache.type_test.types1.NumberEnum;
import org.apache.type_test.types1.StringEnum;
import org.junit.Test;

public abstract class AbstractTypeTestClient
    extends AbstractBusClientServerTestBase implements TypeTestTester {
    protected static TypeTestPortType docClient;
    protected static org.apache.type_test.xml.TypeTestPortType xmlClient;
    protected static org.apache.type_test.rpc.TypeTestPortType rpcClient;
    protected static boolean testDocLiteral;
    protected static boolean testXMLBinding;

    protected boolean perfTestOnly;

    public void setPerformanceTestOnly() {
        perfTestOnly = true;
    }

    public boolean shouldRunTest(String name) {
        if (System.getProperty("java.vendor").contains("IBM")
            && "GMonth".equals(name)) {
            //the validator in ibm doesn't like this type.
            return false;
        }
        return true;
    }
    
    public static void initClient(Class clz, QName serviceName, 
                                  QName portName, String wsdlPath)
        throws Exception {
        URL wsdlLocation = clz.getResource(wsdlPath);
        assertNotNull("Could not load wsdl " + wsdlPath, wsdlLocation);
        testDocLiteral = wsdlPath.contains("doclit") || wsdlPath.contains("-corba");
        testXMLBinding = wsdlPath.contains("_xml");
        if (testXMLBinding) {
            org.apache.type_test.xml.XMLService xmlService
                = new org.apache.type_test.xml.XMLService(wsdlLocation,
                                                           serviceName);
            xmlClient = xmlService.getPort(portName, org.apache.type_test.xml.TypeTestPortType.class);
            assertNotNull("Could not create xmlClient", xmlClient);
        } else {
            if (testDocLiteral) {
                org.apache.type_test.doc.SOAPService docService
                    = new org.apache.type_test.doc.SOAPService(wsdlLocation,
                                                                serviceName);
                docClient = docService.getPort(portName, org.apache.type_test.doc.TypeTestPortType.class);
                assertNotNull("Could not create docClient", docClient);
            } else {
                SOAPService rpcService = new SOAPService(wsdlLocation, serviceName);
                rpcClient = rpcService.getPort(portName, org.apache.type_test.rpc.TypeTestPortType.class);
                assertNotNull("Could not create rpcClient", rpcClient);
            }
        }
    }

    protected boolean equalsDate(XMLGregorianCalendar orig, XMLGregorianCalendar actual) {
        boolean result = false;

        if ((orig.getYear() == actual.getYear()) && (orig.getMonth() == actual.getMonth())
            && (orig.getDay() == actual.getDay()) && (actual.getHour() == DatatypeConstants.FIELD_UNDEFINED)
            && (actual.getMinute() == DatatypeConstants.FIELD_UNDEFINED)
            && (actual.getSecond() == DatatypeConstants.FIELD_UNDEFINED)
            && (actual.getMillisecond() == DatatypeConstants.FIELD_UNDEFINED)) {

            result = orig.getTimezone() == actual.getTimezone();
        }
        return result;
    }

    protected boolean equalsTime(XMLGregorianCalendar orig, XMLGregorianCalendar actual) {
        boolean result = false;
        if ((orig.getHour() == actual.getHour()) && (orig.getMinute() == actual.getMinute())
            && (orig.getSecond() == actual.getSecond()) && (orig.getMillisecond() == actual.getMillisecond())
            && (orig.getTimezone() == actual.getTimezone())) {
            result = true;
        }
        return result;
    }

    protected boolean equalsDateTime(XMLGregorianCalendar orig, XMLGregorianCalendar actual) {
        boolean result = false;
        if ((orig.getYear() == actual.getYear()) && (orig.getMonth() == actual.getMonth())
            && (orig.getDay() == actual.getDay()) && (orig.getHour() == actual.getHour())
            && (orig.getMinute() == actual.getMinute()) && (orig.getSecond() == actual.getSecond())
            && (orig.getMillisecond() == actual.getMillisecond())) {

            result = orig.getTimezone() == actual.getTimezone();
        }
        return result;
    }

    @Test
    public void testVoid() throws Exception {
        if (!shouldRunTest("Void")) {
            return;
        }
        if (testDocLiteral) {
            docClient.testVoid();
        } else if (testXMLBinding) {
            xmlClient.testVoid();
        } else {
            rpcClient.testVoid();
        }
    }

    @Test
    public void testOneway() throws Exception {
        if (!shouldRunTest("Oneway")) {
            return;
        }
        String x = "hello";
        String y = "oneway";
        if (testDocLiteral) {
            docClient.testOneway(x, y);
        } else if (testXMLBinding) {
            xmlClient.testOneway(x, y);
        } else {
            rpcClient.testOneway(x, y);
        }
    }

    @Test
    public void testByte() throws Exception {
        if (!shouldRunTest("Byte")) {
            return;
        }
        byte valueSets[][] = {{0, 1}, {-1, 0}, {Byte.MIN_VALUE, Byte.MAX_VALUE}};

        for (int i = 0; i < valueSets.length; i++) {
            byte x = valueSets[i][0];
            Holder<Byte> yOrig = new Holder(valueSets[i][1]);
            Holder<Byte> y = new Holder(valueSets[i][1]);
            Holder<Byte> z = new Holder();

            byte ret;
            if (testDocLiteral) {
                ret = docClient.testByte(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testByte(x, y, z);
            } else {
                ret = rpcClient.testByte(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testByte(): Incorrect value for inout param", Byte.valueOf(x), y.value);
                assertEquals("testByte(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testByte(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testShort() throws Exception {
        if (!shouldRunTest("Short")) {
            return;
        }
        short valueSets[][] = {{0, 1}, {-1, 0}, {Short.MIN_VALUE, Short.MAX_VALUE}};

        for (int i = 0; i < valueSets.length; i++) {
            short x = valueSets[i][0];
            Holder<Short> yOrig = new Holder(valueSets[i][1]);
            Holder<Short> y = new Holder(valueSets[i][1]);
            Holder<Short> z = new Holder();

            short ret;
            if (testDocLiteral) {
                ret = docClient.testShort(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testShort(x, y, z);
            } else {
                ret = rpcClient.testShort(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testShort(): Incorrect value for inout param", Short.valueOf(x), y.value);
                assertEquals("testShort(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testShort(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testUnsignedShort() throws Exception {
        if (!shouldRunTest("UnsignedShort")) {
            return;
        }
        int valueSets[][] = {{0, 1}, {1, 0}, {0, Short.MAX_VALUE * 2 + 1}};

        for (int i = 0; i < valueSets.length; i++) {
            int x = valueSets[i][0];
            Holder<Integer> yOrig = new Holder(valueSets[i][1]);
            Holder<Integer> y = new Holder(valueSets[i][1]);
            Holder<Integer> z = new Holder();

            int ret;
            if (testDocLiteral) {
                ret = docClient.testUnsignedShort(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testUnsignedShort(x, y, z);
            } else {
                ret = rpcClient.testUnsignedShort(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testUnsignedShort(): Incorrect value for inout param", Integer.valueOf(x),
                             y.value);
                assertEquals("testUnsignedShort(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testUnsignedShort(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testInt() throws Exception {
        if (!shouldRunTest("Int")) {
            return;
        }
        int valueSets[][] = {{5, 10}, {-10, 50}, {Integer.MIN_VALUE, Integer.MAX_VALUE}};

        for (int i = 0; i < valueSets.length; i++) {
            int x = valueSets[i][0];
            Holder<Integer> yOrig = new Holder(valueSets[i][1]);
            Holder<Integer> y = new Holder(valueSets[i][1]);
            Holder<Integer> z = new Holder();

            int ret;
            if (testDocLiteral) {
                ret = docClient.testInt(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testInt(x, y, z);
            } else {
                ret = rpcClient.testInt(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testInt(): Incorrect value for inout param", Integer.valueOf(x), y.value);
                assertEquals("testInt(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testInt(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testUnsignedInt() throws Exception {
        if (!shouldRunTest("UnsignedInt")) {
            return;
        }
        long valueSets[][] = {{0, ((long)Integer.MAX_VALUE) * 2 + 1}, {11, 20}, {1, 0}};

        for (int i = 0; i < valueSets.length; i++) {
            long x = valueSets[i][0];
            long yOrig = valueSets[i][1];
            Holder<Long> y = new Holder(valueSets[i][1]);
            Holder<Long> z = new Holder();

            long ret;
            if (testDocLiteral) {
                ret = docClient.testUnsignedInt(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testUnsignedInt(x, y, z);
            } else {
                ret = rpcClient.testUnsignedInt(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testUnsignedInt(): Incorrect value for inout param",
                             Long.valueOf(x), y.value);
                assertEquals("testUnsignedInt(): Incorrect value for out param",
                             Long.valueOf(yOrig), z.value);
                assertEquals("testUnsignedInt(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testLong() throws Exception {
        if (!shouldRunTest("Long")) {
            return;
        }
        long valueSets[][] = {{0, 1}, {-1, 0}, {Long.MIN_VALUE, Long.MAX_VALUE}};

        for (int i = 0; i < valueSets.length; i++) {
            long x = valueSets[i][0];
            Holder<Long> yOrig = new Holder(valueSets[i][1]);
            Holder<Long> y = new Holder(valueSets[i][1]);
            Holder<Long> z = new Holder();

            long ret;
            if (testDocLiteral) {
                ret = docClient.testLong(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testLong(x, y, z);
            } else {
                ret = rpcClient.testLong(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testLong(): Incorrect value for inout param", Long.valueOf(x), y.value);
                assertEquals("testLong(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testLong(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testUnsignedLong() throws Exception {
        if (!shouldRunTest("UnsignedLong")) {
            return;
        }
        BigInteger valueSets[][] = {{new BigInteger("0"), new BigInteger("1")},
                                    {new BigInteger("1"), new BigInteger("0")},
                                    {new BigInteger("0"),
                                     new BigInteger(String.valueOf(Long.MAX_VALUE * Long.MAX_VALUE))}};

        for (int i = 0; i < valueSets.length; i++) {
            BigInteger x = valueSets[i][0];
            Holder<BigInteger> yOrig = new Holder(valueSets[i][1]);
            Holder<BigInteger> y = new Holder(valueSets[i][1]);
            Holder<BigInteger> z = new Holder();

            BigInteger ret;
            if (testDocLiteral) {
                ret = docClient.testUnsignedLong(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testUnsignedLong(x, y, z);
            } else {
                ret = rpcClient.testUnsignedLong(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testUnsignedLong(): Incorrect value for inout param", x, y.value);
                assertEquals("testUnsignedLong(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testUnsignedLong(): Incorrect return value", x, ret);
            }
        }
    }

    protected float[][] getTestFloatData() {
        return new float[][] {{0.0f, 1.0f}, {-1.0f, (float)java.lang.Math.PI}, {-100.0f, 100.0f},
                              {Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY}, };
    }
    @Test
    public void testFloat() throws Exception {
        if (!shouldRunTest("Float")) {
            return;
        }
        float delta = 0.0f;
        float valueSets[][] = getTestFloatData();

        for (int i = 0; i < valueSets.length; i++) {
            float x = valueSets[i][0];
            Holder<Float> yOrig = new Holder(valueSets[i][1]);
            Holder<Float> y = new Holder(valueSets[i][1]);
            Holder<Float> z = new Holder();

            float ret;
            if (testDocLiteral) {
                ret = docClient.testFloat(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testFloat(x, y, z);
            } else {
                ret = rpcClient.testFloat(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals(i + ": testFloat(): Wrong value for inout param", x, y.value, delta);
                assertEquals(i + ": testFloat(): Wrong value for out param", yOrig.value, z.value, delta);
                assertEquals(i + ": testFloat(): Wrong return value", x, ret, delta);
            }
        }

        float x = Float.NaN;
        Holder<Float> yOrig = new Holder(0.0f);
        Holder<Float> y = new Holder(0.0f);
        Holder<Float> z = new Holder();
        float ret;
        if (testDocLiteral) {
            ret = docClient.testFloat(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testFloat(x, y, z);
        } else {
            ret = rpcClient.testFloat(x, y, z);
        }
        if (!perfTestOnly) {
            assertTrue("testFloat(): Incorrect value for inout param", Float.isNaN(y.value));
            assertEquals("testFloat(): Incorrect value for out param", yOrig.value, z.value, delta);
            assertTrue("testFloat(): Incorrect return value", Float.isNaN(ret));
        }
    }
    protected double[][] getTestDoubleData() {
        return new double[][] {{0.0f, 1.0f}, {-1, java.lang.Math.PI}, {-100.0, 100.0},
                               {Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY}};
    }

    @Test
    public void testDouble() throws Exception {
        if (!shouldRunTest("Double")) {
            return;
        }
        double delta = 0.0d;
        double valueSets[][] = getTestDoubleData();
        for (int i = 0; i < valueSets.length; i++) {
            double x = valueSets[i][0];
            Holder<Double> yOrig = new Holder(valueSets[i][1]);
            Holder<Double> y = new Holder(valueSets[i][1]);
            Holder<Double> z = new Holder();

            double ret;
            if (testDocLiteral) {
                ret = docClient.testDouble(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testDouble(x, y, z);
            } else {
                ret = rpcClient.testDouble(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testDouble(): Incorrect value for inout param", x, y.value, delta);
                assertEquals("testDouble(): Incorrect value for out param", yOrig.value, z.value, delta);
                assertEquals("testDouble(): Incorrect return value", x, ret, delta);
            }
        }

        double x = Double.NaN;
        Holder<Double> yOrig = new Holder(0.0);
        Holder<Double> y = new Holder(0.0);
        Holder<Double> z = new Holder();
        double ret;
        if (testDocLiteral) {
            ret = docClient.testDouble(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testDouble(x, y, z);
        } else {
            ret = rpcClient.testDouble(x, y, z);
        }
        if (!perfTestOnly) {
            assertTrue("testDouble(): Incorrect value for inout param", Double.isNaN(y.value));
            assertEquals("testDouble(): Incorrect value for out param", yOrig.value, z.value, delta);
            assertTrue("testDouble(): Incorrect return value", Double.isNaN(ret));
        }
    }

    @Test
    public void testUnsignedByte() throws Exception {
        if (!shouldRunTest("UnsignedByte")) {
            return;
        }
        short valueSets[][] = {{0, 1}, {1, 0}, {0, Byte.MAX_VALUE * 2 + 1}};

        for (int i = 0; i < valueSets.length; i++) {
            short x = valueSets[i][0];
            Holder<Short> yOrig = new Holder(valueSets[i][1]);
            Holder<Short> y = new Holder(valueSets[i][1]);
            Holder<Short> z = new Holder();

            short ret;
            if (testDocLiteral) {
                ret = docClient.testUnsignedByte(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testUnsignedByte(x, y, z);
            } else {
                ret = rpcClient.testUnsignedByte(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testUnsignedByte(): Incorrect value for inout param",
                             Short.valueOf(x), y.value);
                assertEquals("testUnsignedByte(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testUnsignedByte(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testBoolean() throws Exception {
        if (!shouldRunTest("Boolean")) {
            return;
        }
        boolean valueSets[][] = {{true, false}, {true, true}, {false, true}, {false, false}};

        for (int i = 0; i < valueSets.length; i++) {
            boolean x = valueSets[i][0];
            Holder<Boolean> yOrig = new Holder(valueSets[i][1]);
            Holder<Boolean> y = new Holder(valueSets[i][1]);
            Holder<Boolean> z = new Holder();

            boolean ret;
            if (testDocLiteral) {
                ret = docClient.testBoolean(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testBoolean(x, y, z);
            } else {
                ret = rpcClient.testBoolean(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testBoolean(): Incorrect value for inout param", Boolean.valueOf(x), y.value);
                assertEquals("testBoolean(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testBoolean(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testString() throws Exception {
        if (!shouldRunTest("String")) {
            return;
        }
        int bufferSize = 1000;
        StringBuffer buffer = new StringBuffer(bufferSize);
        StringBuffer buffer2 = new StringBuffer(bufferSize);
        for (int x = 0; x < bufferSize; x++) {
            buffer.append((char)('a' + (x % 26)));
            buffer2.append((char)('A' + (x % 26)));
        }

        String valueSets[][] = {{"hello", "world"},
                                {"is pi > 3 ?", " is pi < 4\\\""},
                                {"<illegal_tag/>", ""},
                                {buffer.toString(), buffer2.toString()},
                                {"jon&marry", "marry&john"}};

        for (int i = 0; i < valueSets.length; i++) {
            String x = valueSets[i][0];
            Holder<String> yOrig = new Holder(valueSets[i][1]);
            Holder<String> y = new Holder(valueSets[i][1]);
            Holder<String> z = new Holder();

            String ret;
            if (testDocLiteral) {
                ret = docClient.testString(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testString(x, y, z);
            } else {
                ret = rpcClient.testString(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testString(): Incorrect value for inout param", x, y.value);
                assertEquals("testString(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testString(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testStringI18N() throws Exception {
        if (!shouldRunTest("StringI18N")) {
            return;
        }
        String valueSets[][] = {{"hello", I18NStrings.CHINESE_COMPLEX_STRING},
                                {"hello", I18NStrings.JAP_SIMPLE_STRING}, };

        for (int i = 0; i < valueSets.length; i++) {
            String x = valueSets[i][0];
            Holder<String> yOrig = new Holder(valueSets[i][1]);
            Holder<String> y = new Holder(valueSets[i][1]);
            Holder<String> z = new Holder();

            String ret;
            if (testDocLiteral) {
                ret = docClient.testString(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testString(x, y, z);
            } else {
                ret = rpcClient.testString(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testStringI18N(): Incorrect value for inout param", x, y.value);
                assertEquals("testStringI18N(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testStringI18N(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testQName() throws Exception {
        if (!shouldRunTest("QName")) {
            return;
        }
        String valueSets[][] = {{"NoNamespaceService", ""},
                                {"HelloWorldService", "http://www.iona.com/services"},
                                {I18NStrings.JAP_SIMPLE_STRING, "http://www.iona.com/iona"},
                                {"MyService", "http://www.iona.com/iona"}};
        for (int i = 0; i < valueSets.length; i++) {
            QName x = new QName(valueSets[i][1], valueSets[i][0]);
            QName yOrig = new QName("http://www.iona.com/inoutqname", "InOutQName");
            Holder<QName> y = new Holder(yOrig);
            Holder<QName> z = new Holder();

            QName ret;
            if (testDocLiteral) {
                ret = docClient.testQName(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testQName(x, y, z);
            } else {
                ret = rpcClient.testQName(x, y, z);
            }

            if (!perfTestOnly) {
                assertEquals("testQName(): Incorrect value for inout param", x, y.value);
                assertEquals("testQName(): Incorrect value for out param", yOrig, z.value);
                assertEquals("testQName(): Incorrect return value", x, ret);
            }
        }
    }

    // Revisit When client Fault is ready. Comment should be removed
    @Test
    public void testDate() throws Exception {
        if (!shouldRunTest("Date")) {
            return;
        }
        javax.xml.datatype.DatatypeFactory datatypeFactory = javax.xml.datatype.DatatypeFactory.newInstance();

        XMLGregorianCalendar x = datatypeFactory.newXMLGregorianCalendar();
        x.setYear(1975);
        x.setMonth(5);
        x.setDay(5);
        XMLGregorianCalendar yOrig = datatypeFactory.newXMLGregorianCalendar();
        yOrig.setYear(2004);
        yOrig.setMonth(4);
        yOrig.setDay(1);

        Holder<XMLGregorianCalendar> y = new Holder(yOrig);
        Holder<XMLGregorianCalendar> z = new Holder();

        XMLGregorianCalendar ret;
        if (testDocLiteral) {
            ret = docClient.testDate(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testDate(x, y, z);
        } else {
            ret = rpcClient.testDate(x, y, z);
        }
        if (!perfTestOnly) {
            assertTrue("testDate(): Incorrect value for inout param " + x + " != " + y.value,
                       equalsDate(x, y.value));
            assertTrue("testDate(): Incorrect value for out param", equalsDate(yOrig, z.value));
            assertTrue("testDate(): Incorrect return value", equalsDate(x, ret));
        }

        x = datatypeFactory.newXMLGregorianCalendar();
        yOrig = datatypeFactory.newXMLGregorianCalendar();

        y = new Holder<XMLGregorianCalendar>(yOrig);
        z = new Holder<XMLGregorianCalendar>();

        try {
            if (testDocLiteral) {
                ret = docClient.testDate(x, y, z);
            } else {
                ret = rpcClient.testDate(x, y, z);
            }
            fail("Expected to catch WebServiceException when calling"
                 + " testDate() with uninitialized parameters.");
        } catch (RuntimeException re) {
            assertNotNull(re);
        }
    }

    @Test
    public void testDateTime() throws Exception {
        if (!shouldRunTest("DateTime")) {
            return;
        }
        javax.xml.datatype.DatatypeFactory datatypeFactory = javax.xml.datatype.DatatypeFactory.newInstance();

        XMLGregorianCalendar x = datatypeFactory.newXMLGregorianCalendar();
        x.setYear(1975);
        x.setMonth(5);
        x.setDay(5);
        x.setHour(12);
        x.setMinute(30);
        x.setSecond(15);
        XMLGregorianCalendar yOrig = datatypeFactory.newXMLGregorianCalendar();
        yOrig.setYear(2005);
        yOrig.setMonth(4);
        yOrig.setDay(1);
        yOrig.setHour(17);
        yOrig.setMinute(59);
        yOrig.setSecond(30);

        Holder<XMLGregorianCalendar> y = new Holder(yOrig);
        Holder<XMLGregorianCalendar> z = new Holder();

        XMLGregorianCalendar ret;
        if (testDocLiteral) {
            ret = docClient.testDateTime(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testDateTime(x, y, z);
        } else {
            ret = rpcClient.testDateTime(x, y, z);
        }
        if (!perfTestOnly) {
            assertTrue("testDateTime(): Incorrect value for inout param", equalsDateTime(x, y.value));
            assertTrue("testDateTime(): Incorrect value for out param", equalsDateTime(yOrig, z.value));
            assertTrue("testDateTime(): Incorrect return value", equalsDateTime(x, ret));
        }
    }

    @Test
    public void testTime() throws Exception {
        if (!shouldRunTest("Time")) {
            return;
        }
        javax.xml.datatype.DatatypeFactory datatypeFactory = javax.xml.datatype.DatatypeFactory.newInstance();

        XMLGregorianCalendar x = datatypeFactory.newXMLGregorianCalendar();
        x.setHour(12);
        x.setMinute(14);
        x.setSecond(5);
        XMLGregorianCalendar yOrig = datatypeFactory.newXMLGregorianCalendar();
        yOrig.setHour(22);
        yOrig.setMinute(4);
        yOrig.setSecond(15);
        yOrig.setMillisecond(250);

        Holder<XMLGregorianCalendar> y = new Holder(yOrig);
        Holder<XMLGregorianCalendar> z = new Holder();

        XMLGregorianCalendar ret;
        if (testDocLiteral) {
            ret = docClient.testTime(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testTime(x, y, z);
        } else {
            ret = rpcClient.testTime(x, y, z);
        }
        if (!perfTestOnly) {
            assertTrue("testTime(): Incorrect value for inout param", equalsTime(x, y.value));
            assertTrue("testTime(): Incorrect value for out param", equalsTime(yOrig, z.value));
            assertTrue("testTime(): Incorrect return value", equalsTime(x, ret));
        }
    }

    @Test
    public void testGYear() throws Exception {
        if (!shouldRunTest("GYear")) {
            return;
        }
        javax.xml.datatype.DatatypeFactory datatypeFactory = javax.xml.datatype.DatatypeFactory.newInstance();

        XMLGregorianCalendar x = datatypeFactory.newXMLGregorianCalendar("2004");
        XMLGregorianCalendar yOrig = datatypeFactory.newXMLGregorianCalendar("2003+05:00");

        Holder<XMLGregorianCalendar> y = new Holder(yOrig);
        Holder<XMLGregorianCalendar> z = new Holder();

        XMLGregorianCalendar ret;
        if (testDocLiteral) {
            ret = docClient.testGYear(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testGYear(x, y, z);
        } else {
            ret = rpcClient.testGYear(x, y, z);
        }
        assertTrue("testGYear(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testGYear(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testGYear(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testGYearMonth() throws Exception {
        if (!shouldRunTest("GYearMonth")) {
            return;
        }
        javax.xml.datatype.DatatypeFactory datatypeFactory = javax.xml.datatype.DatatypeFactory.newInstance();

        XMLGregorianCalendar x = datatypeFactory.newXMLGregorianCalendar("2004-08");
        XMLGregorianCalendar yOrig = datatypeFactory.newXMLGregorianCalendar("2003-12+05:00");

        Holder<XMLGregorianCalendar> y = new Holder(yOrig);
        Holder<XMLGregorianCalendar> z = new Holder();

        XMLGregorianCalendar ret;
        if (testDocLiteral) {
            ret = docClient.testGYearMonth(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testGYearMonth(x, y, z);
        } else {
            ret = rpcClient.testGYearMonth(x, y, z);
        }
        assertTrue("testGYearMonth(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testGYearMonth(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testGYearMonth(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testGMonth() throws Exception {
        if (!shouldRunTest("GMonth")) { 
            return;
        }
        javax.xml.datatype.DatatypeFactory datatypeFactory = javax.xml.datatype.DatatypeFactory.newInstance();

        XMLGregorianCalendar x;
        XMLGregorianCalendar yOrig;

        try {
            x = datatypeFactory.newXMLGregorianCalendar("--08");
            yOrig = datatypeFactory.newXMLGregorianCalendar("--12+05:00");
        } catch (java.lang.IllegalArgumentException iae) {
            // broken XMLGregorianCalendar impl
            x = datatypeFactory.newXMLGregorianCalendar("--08--");
            yOrig = datatypeFactory.newXMLGregorianCalendar("--12--+05:00");
        }

        Holder<XMLGregorianCalendar> y = new Holder(yOrig);
        Holder<XMLGregorianCalendar> z = new Holder();

        XMLGregorianCalendar ret;
        if (testDocLiteral) {
            ret = docClient.testGMonth(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testGMonth(x, y, z);
        } else {
            ret = rpcClient.testGMonth(x, y, z);
        }
        assertTrue("testGMonth(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testGMonth(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testGMonth(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testGMonthDay() throws Exception {
        if (!shouldRunTest("GMonthDay")) {
            return;
        }
        javax.xml.datatype.DatatypeFactory datatypeFactory = javax.xml.datatype.DatatypeFactory.newInstance();

        XMLGregorianCalendar x = datatypeFactory.newXMLGregorianCalendar("--08-21");
        XMLGregorianCalendar yOrig = datatypeFactory.newXMLGregorianCalendar("--12-05+05:00");

        Holder<XMLGregorianCalendar> y = new Holder(yOrig);
        Holder<XMLGregorianCalendar> z = new Holder();

        XMLGregorianCalendar ret;
        if (testDocLiteral) {
            ret = docClient.testGMonthDay(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testGMonthDay(x, y, z);
        } else {
            ret = rpcClient.testGMonthDay(x, y, z);
        }
        assertTrue("testGMonthDay(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testGMonthDay(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testGMonthDay(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testGDay() throws Exception {
        if (!shouldRunTest("GDay")) {
            return;
        }
        javax.xml.datatype.DatatypeFactory datatypeFactory = javax.xml.datatype.DatatypeFactory.newInstance();

        XMLGregorianCalendar x = datatypeFactory.newXMLGregorianCalendar("---21");
        XMLGregorianCalendar yOrig = datatypeFactory.newXMLGregorianCalendar("---05+05:00");

        Holder<XMLGregorianCalendar> y = new Holder(yOrig);
        Holder<XMLGregorianCalendar> z = new Holder();

        XMLGregorianCalendar ret;
        if (testDocLiteral) {
            ret = docClient.testGDay(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testGDay(x, y, z);
        } else {
            ret = rpcClient.testGDay(x, y, z);
        }
        assertTrue("testGDay(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testGDay(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testGDay(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testDuration() throws Exception {
        if (!shouldRunTest("Duration")) {
            return;
        }
        javax.xml.datatype.DatatypeFactory datatypeFactory = javax.xml.datatype.DatatypeFactory.newInstance();

        Duration x = datatypeFactory.newDuration("P1Y35DT60M60.500S");
        Duration yOrig = datatypeFactory.newDuration("-P2MT24H60S");

        Holder<Duration> y = new Holder(yOrig);
        Holder<Duration> z = new Holder();

        Duration ret;
        if (testDocLiteral) {
            ret = docClient.testDuration(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testDuration(x, y, z);
        } else {
            ret = rpcClient.testDuration(x, y, z);
        }
        assertTrue("testDuration(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testDuration(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testDuration(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testNormalizedString() throws Exception {
        if (!shouldRunTest("NormalizedString")) {
            return;
        }
        String x = "  normalized string ";
        String yOrig = "  another normalized  string ";

        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testNormalizedString(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testNormalizedString(x, y, z);
        } else {
            ret = rpcClient.testNormalizedString(x, y, z);
        }
        assertTrue("testNormalizedString(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testNormalizedString(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testNormalizedString(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testToken() throws Exception {
        if (!shouldRunTest("Token")) {
            return;
        }
        String x = "token";
        String yOrig = "another token";

        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testToken(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testToken(x, y, z);
        } else {
            ret = rpcClient.testToken(x, y, z);
        }
        assertTrue("testToken(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testToken(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testToken(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testLanguage() throws Exception {
        if (!shouldRunTest("Language")) {
            return;
        }
        String x = "abc";
        String yOrig = "abc-def";

        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testLanguage(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testLanguage(x, y, z);
        } else {
            ret = rpcClient.testLanguage(x, y, z);
        }
        assertTrue("testLanguage(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testLanguage(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testLanguage(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testNMTOKEN() throws Exception {
        if (!shouldRunTest("NMTOKEN")) {
            return;
        }
        String x = "123:abc";
        String yOrig = "abc.-_:";

        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testNMTOKEN(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testNMTOKEN(x, y, z);
        } else {
            ret = rpcClient.testNMTOKEN(x, y, z);
        }
        assertTrue("testNMTOKEN(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testNMTOKEN(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testNMTOKEN(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testNMTOKENS() throws Exception {
        if (!shouldRunTest("NMTOKENS")) {
            return;
        }
        //
        // XXX - The jaxb ri code generation produces different method
        // signatures for the NMTOKENS type between using rpc literal
        // and doc literal styles.
        //
        if (testDocLiteral) {
            List<String> x = Arrays.asList("123:abc");
            List<String> yOrig = Arrays.asList("abc.-_:", "a");
            Holder<List y = new Holder>(yOrig);
            Holder<List z = new Holder>();
            List<String> ret = docClient.testNMTOKENS(x, y, z);
            assertTrue("testNMTOKENS(): Incorrect value for inout param", x.equals(y.value));
            assertTrue("testNMTOKENS(): Incorrect value for out param", yOrig.equals(z.value));
            assertTrue("testNMTOKENS(): Incorrect return value", x.equals(ret));
        } else if (testXMLBinding) {
            List<String> x = Arrays.asList("123:abc");
            List<String> yOrig = Arrays.asList("abc.-_:", "a");
            Holder<List y = new Holder>(yOrig);
            Holder<List z = new Holder>();
            List<String> ret = xmlClient.testNMTOKENS(x, y, z);
            assertTrue("testNMTOKENS(): Incorrect value for inout param", x.equals(y.value));
            assertTrue("testNMTOKENS(): Incorrect value for out param", yOrig.equals(z.value));
            assertTrue("testNMTOKENS(): Incorrect return value", x.equals(ret));
        } else {
            String[] x = new String[1];
            x[0] = "123:abc";
            String[] yOrig = new String[2];
            yOrig[0] = "abc.-_:";
            yOrig[1] = "a";

            Holder<String[]> y = new Holder(yOrig);
            Holder<String[]> z = new Holder();

            String[] ret = rpcClient.testNMTOKENS(x, y, z);
            assertTrue("testNMTOKENS(): Incorrect value for inout param", Arrays.equals(x, y.value));
            assertTrue("testNMTOKENS(): Incorrect value for out param", Arrays.equals(yOrig, z.value));
            assertTrue("testNMTOKENS(): Incorrect return value", Arrays.equals(x, ret));
        }
    }

    @Test
    public void testName() throws Exception {
        if (!shouldRunTest("Name")) {
            return;
        }
        String x = "abc:123";
        String yOrig = "abc.-_";

        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testName(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testName(x, y, z);
        } else {
            ret = rpcClient.testName(x, y, z);
        }
        assertTrue("testName(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testName(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testName(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testNCName() throws Exception {
        if (!shouldRunTest("NCName")) {
            return;
        }
        String x = "abc-123";
        String yOrig = "abc.-";

        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testNCName(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testNCName(x, y, z);
        } else {
            ret = rpcClient.testNCName(x, y, z);
        }
        assertTrue("testNCName(): Incorrect value for inout param", x.equals(y.value));
        assertTrue("testNCName(): Incorrect value for out param", yOrig.equals(z.value));
        assertTrue("testNCName(): Incorrect return value", x.equals(ret));
    }

    @Test
    public void testID() throws Exception {
        if (!shouldRunTest("ID")) {
            return;
        }
        // n.b. to be valid, elements with an ID in the response message
        // must have a unique ID, so this test does not return x as the
        // return value (like the other tests).
        String valueSets[][] = {{"root.id-testartix.2", "L.-type_test"}, {"_iona.com", "zoo-5_wolf"},
                                {"x-_liberty", "_-.-_"}};

        for (int i = 0; i < valueSets.length; i++) {
            String x = valueSets[i][0];
            String yOrig = valueSets[i][1];
            Holder<String> y = new Holder(yOrig);
            Holder<String> z = new Holder();

            if (testDocLiteral) {
                /* String ret = */docClient.testID(x, y, z);
            } else if (testXMLBinding) {
                /* String ret = */xmlClient.testID(x, y, z);
            } else {
                /* String ret = */rpcClient.testID(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testID(): Incorrect value for inout param", x, y.value);
                assertEquals("testID(): Incorrect value for out param", yOrig, z.value);
            }
        }
    }

    @Test
    public void testDecimal() throws Exception {
        if (!shouldRunTest("Decimal")) {
            return;
        }
        BigDecimal valueSets[][] = {{new BigDecimal("-1234567890.000000"),
                                     new BigDecimal("1234567890.000000")},
                                    {new BigDecimal("-" + String.valueOf(Long.MAX_VALUE * Long.MAX_VALUE)
                                                    + ".000000"),
                                     new BigDecimal(String.valueOf(Long.MAX_VALUE * Long.MAX_VALUE)
                                                    + ".000000")}};

        for (int i = 0; i < valueSets.length; i++) {
            BigDecimal x = valueSets[i][0];
            Holder<BigDecimal> yOrig = new Holder(valueSets[i][1]);
            Holder<BigDecimal> y = new Holder(valueSets[i][1]);
            Holder<BigDecimal> z = new Holder();

            BigDecimal ret;
            if (testDocLiteral) {
                ret = docClient.testDecimal(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testDecimal(x, y, z);
            } else {
                ret = rpcClient.testDecimal(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testDecimal(): Incorrect value for inout param", x, y.value);
                assertEquals("testDecimal(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testDecimal(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testInteger() throws Exception {
        if (!shouldRunTest("Integer")) {
            return;
        }
        BigInteger valueSets[][] = {{new BigInteger("-1234567890"), new BigInteger("1234567890")},
                                    {new BigInteger("-" + String.valueOf(Long.MAX_VALUE * Long.MAX_VALUE)),
                                     new BigInteger(String.valueOf(Long.MAX_VALUE * Long.MAX_VALUE))}};

        for (int i = 0; i < valueSets.length; i++) {
            BigInteger x = valueSets[i][0];
            Holder<BigInteger> yOrig = new Holder(valueSets[i][1]);
            Holder<BigInteger> y = new Holder(valueSets[i][1]);
            Holder<BigInteger> z = new Holder();

            BigInteger ret;
            if (testDocLiteral) {
                ret = docClient.testInteger(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testInteger(x, y, z);
            } else {
                ret = rpcClient.testInteger(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testInteger(): Incorrect value for inout param", x, y.value);
                assertEquals("testInteger(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testInteger(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testPositiveInteger() throws Exception {
        if (!shouldRunTest("PositiveInteger")) {
            return;
        }
        BigInteger valueSets[][] = {{new BigInteger("1"), new BigInteger("1234567890")},
                                    {new BigInteger(String.valueOf(Integer.MAX_VALUE * Integer.MAX_VALUE)),
                                     new BigInteger(String.valueOf(Long.MAX_VALUE * Long.MAX_VALUE))}};

        for (int i = 0; i < valueSets.length; i++) {
            BigInteger x = valueSets[i][0];
            Holder<BigInteger> yOrig = new Holder(valueSets[i][1]);
            Holder<BigInteger> y = new Holder(valueSets[i][1]);
            Holder<BigInteger> z = new Holder();

            BigInteger ret;
            if (testDocLiteral) {
                ret = docClient.testPositiveInteger(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testPositiveInteger(x, y, z);
            } else {
                ret = rpcClient.testPositiveInteger(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testPositiveInteger(): Incorrect value for inout param", x, y.value);
                assertEquals("testPositiveInteger(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testPositiveInteger(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testNonPositiveInteger() throws Exception {
        if (!shouldRunTest("NonPositiveInteger")) {
            return;
        }
        BigInteger valueSets[][] = {{new BigInteger("0"), new BigInteger("-1234567890")},
                                    {new BigInteger("-"
                                                    + String.valueOf(Integer.MAX_VALUE * Integer.MAX_VALUE)),
                                     new BigInteger("-" + String.valueOf(Long.MAX_VALUE * Long.MAX_VALUE))}};

        for (int i = 0; i < valueSets.length; i++) {
            BigInteger x = valueSets[i][0];
            Holder<BigInteger> yOrig = new Holder(valueSets[i][1]);
            Holder<BigInteger> y = new Holder(valueSets[i][1]);
            Holder<BigInteger> z = new Holder();

            BigInteger ret;
            if (testDocLiteral) {
                ret = docClient.testNonPositiveInteger(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testNonPositiveInteger(x, y, z);
            } else {
                ret = rpcClient.testNonPositiveInteger(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testNonPositiveInteger(): Incorrect value for inout param", x, y.value);
                assertEquals("testNonPositiveInteger(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testNonPositiveInteger(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testNegativeInteger() throws Exception {
        if (!shouldRunTest("NegativeInteger")) {
            return;
        }
        BigInteger valueSets[][] = {{new BigInteger("-1"), new BigInteger("-1234567890")},
                                    {new BigInteger("-"
                                                    + String.valueOf(Integer.MAX_VALUE * Integer.MAX_VALUE)),
                                     new BigInteger("-" + String.valueOf(Long.MAX_VALUE * Long.MAX_VALUE))}};

        for (int i = 0; i < valueSets.length; i++) {
            BigInteger x = valueSets[i][0];
            Holder<BigInteger> yOrig = new Holder(valueSets[i][1]);
            Holder<BigInteger> y = new Holder(valueSets[i][1]);
            Holder<BigInteger> z = new Holder();

            BigInteger ret;
            if (testDocLiteral) {
                ret = docClient.testNegativeInteger(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testNegativeInteger(x, y, z);
            } else {
                ret = rpcClient.testNegativeInteger(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testNegativeInteger(): Incorrect value for inout param", x, y.value);
                assertEquals("testNegativeInteger(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testNegativeInteger(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testNonNegativeInteger() throws Exception {
        if (!shouldRunTest("NonNegativeInteger")) {
            return;
        }
        BigInteger valueSets[][] = {{new BigInteger("0"),
                                        new BigInteger("1234567890")},
                                    {new BigInteger(String.valueOf(Integer.MAX_VALUE
                                                                   * Integer.MAX_VALUE)),
                                     new BigInteger(String.valueOf(Long.MAX_VALUE
                                                                   * Long.MAX_VALUE))}};

        for (int i = 0; i < valueSets.length; i++) {
            BigInteger x = valueSets[i][0];
            Holder<BigInteger> yOrig = new Holder(valueSets[i][1]);
            Holder<BigInteger> y = new Holder(valueSets[i][1]);
            Holder<BigInteger> z = new Holder();

            BigInteger ret;
            if (testDocLiteral) {
                ret = docClient.testNonNegativeInteger(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testNonNegativeInteger(x, y, z);
            } else {
                ret = rpcClient.testNonNegativeInteger(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testNonNegativeInteger(): Incorrect value for inout param", x, y.value);
                assertEquals("testNonNegativeInteger(): Incorrect value for out param", yOrig.value, z.value);
                assertEquals("testNonNegativeInteger(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testHexBinary() throws Exception {
        if (!shouldRunTest("HexBinary")) {
            return;
        }
        byte[] x = "hello".getBytes();
        Holder<byte[]> y = new Holder("goodbye".getBytes());
        Holder<byte[]> yOriginal = new Holder("goodbye".getBytes());
        Holder<byte[]> z = new Holder();
        byte[] ret;
        if (testDocLiteral) {
            ret = docClient.testHexBinary(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testHexBinary(x, y, z);
        } else {
            ret = rpcClient.testHexBinary(x, y, z);
        }
        if (!perfTestOnly) {
            assertTrue("testHexBinary(): Incorrect value for inout param", Arrays.equals(x, y.value));
            assertTrue("testHexBinary(): Incorrect value for out param", Arrays.equals(yOriginal.value,
                                                                                       z.value));
            assertTrue("testHexBinary(): Incorrect return value", Arrays.equals(x, ret));
        }
    }

    @Test
    public void testBase64Binary() throws Exception {
        if (!shouldRunTest("Base64Binary")) {
            return;
        }
        byte[] x = "hello".getBytes();
        Holder<byte[]> y = new Holder("goodbye".getBytes());
        Holder<byte[]> yOriginal = new Holder("goodbye".getBytes());
        Holder<byte[]> z = new Holder();
        byte[] ret;
        if (testDocLiteral) {
            ret = docClient.testBase64Binary(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testBase64Binary(x, y, z);
        } else {
            ret = rpcClient.testBase64Binary(x, y, z);
        }
        if (!perfTestOnly) {
            assertTrue("testBase64Binary(): Incorrect value for inout param", Arrays.equals(x, y.value));
            assertTrue("testBase64Binary(): Incorrect value for out param", Arrays.equals(yOriginal.value,
                                                                                          z.value));
            assertTrue("testBase64Binary(): Incorrect return value", Arrays.equals(x, ret));
        }

        // Test uninitialized holder value
        try {
            y = new Holder<byte[]>();
            z = new Holder<byte[]>();
            if (testDocLiteral) {
                docClient.testBase64Binary(x, y, z);
            } else if (testXMLBinding) {
                xmlClient.testBase64Binary(x, y, z);
            } else {
                rpcClient.testBase64Binary(x, y, z);
            }
            fail("Uninitialized Holder for inout parameter should have thrown an error.");
        } catch (Exception e) {
            // Ignore expected //failure.
        }
    }

    @Test
    public void testAnyURI() throws Exception {
        if (!shouldRunTest("AnyURI")) {
            return;
        }
        String valueSets[][] = {{"file:///root%20%20/-;?&+",
                                    "file:///w:/test!artix~java*"},
                                {"http://iona.com/",
                                    "file:///z:/mail_iona=com,\'xmlbus\'"},
                                {"mailto:windows@systems", "file:///"}};

        for (int i = 0; i < valueSets.length; i++) {
            String x = new String(valueSets[i][0]);
            String yOrig = new String(valueSets[i][1]);
            Holder<String> y = new Holder(yOrig);
            Holder<String> z = new Holder();

            String ret;
            if (testDocLiteral) {
                ret = docClient.testAnyURI(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testAnyURI(x, y, z);
            } else {
                ret = rpcClient.testAnyURI(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testAnyURI(): Incorrect value for inout param", x, y.value);
                assertEquals("testAnyURI(): Incorrect value for out param", yOrig, z.value);
                assertEquals("testAnyURI(): Incorrect return value", x, ret);
            }
        }
    }

    @Test
    public void testColourEnum() throws Exception {
        if (!shouldRunTest("ColourEnum")) {
            return;
        }
        String[] xx = {"RED", "GREEN", "BLUE"};
        String[] yy = {"GREEN", "BLUE", "RED"};

        Holder<ColourEnum> z = new Holder();

        for (int i = 0; i < 3; i++) {
            ColourEnum x = ColourEnum.fromValue(xx[i]);
            ColourEnum yOrig = ColourEnum.fromValue(yy[i]);
            Holder<ColourEnum> y = new Holder(yOrig);

            ColourEnum ret;
            if (testDocLiteral) {
                ret = docClient.testColourEnum(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testColourEnum(x, y, z);
            } else {
                ret = rpcClient.testColourEnum(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testColourEnum(): Incorrect value for inout param", x.value(), y.value.value());
                assertEquals("testColourEnum(): Incorrect value for out param", yOrig.value(), z.value
                    .value());
                assertEquals("testColourEnum(): Incorrect return value", x.value(), ret.value());
            }
        }
    }

    @Test
    public void testNumberEnum() throws Exception {
        if (!shouldRunTest("NumberEnum")) {
            return;
        }
        int[] xx = {1, 2, 3};
        int[] yy = {3, 1, 2};

        Holder<NumberEnum> z = new Holder();

        for (int i = 0; i < 3; i++) {
            NumberEnum x = NumberEnum.fromValue(xx[i]);
            NumberEnum yOrig = NumberEnum.fromValue(yy[i]);
            Holder<NumberEnum> y = new Holder(yOrig);

            NumberEnum ret;
            if (testDocLiteral) {
                ret = docClient.testNumberEnum(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testNumberEnum(x, y, z);
            } else {
                ret = rpcClient.testNumberEnum(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testNumberEnum(): Incorrect value for inout param", x.value(), y.value.value());
                assertEquals("testNumberEnum(): Incorrect value for out param", yOrig.value(), z.value
                    .value());
                assertEquals("testNumberEnum(): Incorrect return value", x.value(), ret.value());
            }
        }
    }

    @Test
    public void testStringEnum() throws Exception {
        if (!shouldRunTest("StringEnum")) {
            return;
        }
        String[] xx = {"a b c", "d e f", "g h i"};
        String[] yy = {"g h i", "a b c", "d e f"};

        Holder<StringEnum> z = new Holder();
        for (int i = 0; i < 3; i++) {
            StringEnum x = StringEnum.fromValue(xx[i]);
            StringEnum yOrig = StringEnum.fromValue(yy[i]);
            Holder<StringEnum> y = new Holder(yOrig);

            StringEnum ret;
            if (testDocLiteral) {
                ret = docClient.testStringEnum(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testStringEnum(x, y, z);
            } else {
                ret = rpcClient.testStringEnum(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testStringEnum(): Incorrect value for inout param", x.value(), y.value.value());
                assertEquals("testStringEnum(): Incorrect value for out param", yOrig.value(), z.value
                    .value());
                assertEquals("testStringEnum(): Incorrect return value", x.value(), ret.value());
            }
        }
    }

    @Test
    public void testDecimalEnum() throws Exception {
        if (!shouldRunTest("DecimalEnum")) {
            return;
        }
        BigDecimal[] xx = {new BigDecimal("-10.34"), new BigDecimal("11.22"), new BigDecimal("14.55")};
        BigDecimal[] yy = {new BigDecimal("14.55"), new BigDecimal("-10.34"), new BigDecimal("11.22")};

        Holder<DecimalEnum> z = new Holder();

        for (int i = 0; i < 3; i++) {
            DecimalEnum x = DecimalEnum.fromValue(xx[i]);
            DecimalEnum yOrig = DecimalEnum.fromValue(yy[i]);
            Holder<DecimalEnum> y = new Holder(yOrig);

            DecimalEnum ret;
            if (testDocLiteral) {
                ret = docClient.testDecimalEnum(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testDecimalEnum(x, y, z);
            } else {
                ret = rpcClient.testDecimalEnum(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testDecimalEnum(): Incorrect value for inout param",
                             x.value(), y.value.value());
                assertEquals("testDecimalEnum(): Incorrect value for out param", yOrig.value(), z.value
                    .value());
                assertEquals("testDecimalEnum(): Incorrect return value", x.value(), ret.value());
            }
        }
    }

    @Test
    public void testNMTokenEnum() throws Exception {
        if (!shouldRunTest("NMTokenEnum")) {
            return;
        }
        String[] xx = {"hello", "there"};
        String[] yy = {"there", "hello"};

        Holder<NMTokenEnum> z = new Holder();

        for (int i = 0; i < 2; i++) {
            NMTokenEnum x = NMTokenEnum.fromValue(xx[i]);
            NMTokenEnum yOrig = NMTokenEnum.fromValue(yy[i]);
            Holder<NMTokenEnum> y = new Holder(yOrig);

            NMTokenEnum ret;
            if (testDocLiteral) {
                ret = docClient.testNMTokenEnum(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testNMTokenEnum(x, y, z);
            } else {
                ret = rpcClient.testNMTokenEnum(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testNMTokenEnum(): Incorrect value for inout param",
                             x.value(), y.value.value());
                assertEquals("testNMTokenEnum(): Incorrect value for out param", yOrig.value(), z.value
                    .value());
                assertEquals("testNMTokenEnum(): Incorrect return value", x.value(), ret.value());
            }
        }
    }

    @Test
    public void testAnyURIEnum() throws Exception {
        if (!shouldRunTest("AnyURIEnum")) {
            return;
        }
        String[] xx = {"http://www.iona.com", "http://www.google.com"};
        String[] yy = {"http://www.google.com", "http://www.iona.com"};

        Holder<AnyURIEnum> z = new Holder();
        for (int i = 0; i < 2; i++) {
            AnyURIEnum x = AnyURIEnum.fromValue(xx[i]);
            AnyURIEnum yOrig = AnyURIEnum.fromValue(yy[i]);
            Holder<AnyURIEnum> y = new Holder(yOrig);

            AnyURIEnum ret;
            if (testDocLiteral) {
                ret = docClient.testAnyURIEnum(x, y, z);
            } else if (testXMLBinding) {
                ret = xmlClient.testAnyURIEnum(x, y, z);
            } else {
                ret = rpcClient.testAnyURIEnum(x, y, z);
            }
            if (!perfTestOnly) {
                assertEquals("testAnyURIEnum(): Incorrect value for inout param", x.value(), y.value.value());
                assertEquals("testAnyURIEnum(): Incorrect value for out param", yOrig.value(), z.value
                    .value());
                assertEquals("testAnyURIEnum(): Incorrect return value", x.value(), ret.value());
            }
        }
    }

    @Test
    public void testSimpleRestriction() throws Exception {
        if (!shouldRunTest("SimpleRestriction")) {
            return;
        }
        // normal case, maxLength=10
        String x = "string_x";
        String yOrig = "string_y";
        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();
        String ret;
        if (testDocLiteral) {
            ret = docClient.testSimpleRestriction(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testSimpleRestriction(x, y, z);
        } else {
            ret = rpcClient.testSimpleRestriction(x, y, z);
        }
        if (!perfTestOnly) {
            assertEquals("testSimpleRestriction(): Incorrect value for inout param", x, y.value);
            assertEquals("testSimpleRestriction(): Incorrect value for out param", yOrig, z.value);
            assertEquals("testSimpleRestriction(): Incorrect return value", x, ret);
        }

        // Enabled schema validation for doc literal tests
        if (testDocLiteral || testXMLBinding) {
            // abnormal case
            x = "string_xxxxx";
            y = new Holder<String>(yOrig);
            z = new Holder<String>();
            try {
                ret = docClient.testSimpleRestriction(x, y, z);
                fail("x parameter maxLength=10 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }

            // abnormal case
            x = "string_x";
            yOrig = "string_yyyyyy";
            y = new Holder<String>(yOrig);
            z = new Holder<String>();
            try {
                ret = testDocLiteral ? docClient.testSimpleRestriction(x, y, z) : xmlClient
                    .testSimpleRestriction(x, y, z);
                fail("y parameter maxLength=10 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }
        }
    }

    @Test
    public void testSimpleRestriction2() throws Exception {
        if (!shouldRunTest("SimpleRestriction2")) {
            return;
        }
        // normal case, minLength=5
        String x = "str_x";
        String yOrig = "string_yyy";
        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testSimpleRestriction2(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testSimpleRestriction2(x, y, z);
        } else {
            ret = rpcClient.testSimpleRestriction2(x, y, z);
        }
        if (!perfTestOnly) {
            assertEquals("testSimpleRestriction2(): Incorrect value for inout param", x, y.value);
            assertEquals("testSimpleRestriction2(): Incorrect value for out param", yOrig, z.value);
            assertEquals("testSimpleRestriction2(): Incorrect return value", x, ret);
        }

        // Schema validation is enabled for doc-literal
        if (testDocLiteral || testXMLBinding) {
            // abnormal case
            x = "str";
            y = new Holder<String>(yOrig);
            z = new Holder<String>();
            try {
                ret = testDocLiteral ? docClient.testSimpleRestriction2(x, y, z) : xmlClient
                    .testSimpleRestriction2(x, y, z);
                fail("minLength=5 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }
        }
    }

    @Test
    public void testSimpleRestriction3() throws Exception {
        if (!shouldRunTest("SimpleRestriction3")) {
            return;
        }
        // normal case, maxLength=10 && minLength=5
        String x = "str_x";
        String yOrig = "string_yyy";
        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testSimpleRestriction3(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testSimpleRestriction3(x, y, z);
        } else {
            ret = rpcClient.testSimpleRestriction3(x, y, z);
        }
        if (!perfTestOnly) {
            assertEquals("testSimpleRestriction3(): Incorrect value for inout param", x, y.value);
            assertEquals("testSimpleRestriction3(): Incorrect value for out param", yOrig, z.value);
            assertEquals("testSimpleRestriction3(): Incorrect return value", x, ret);
        }

        // Schema validation is enabled for doc-literal
        if (testDocLiteral || testXMLBinding) {
            // abnormal case
            x = "str";
            y = new Holder<String>(yOrig);
            z = new Holder<String>();
            try {
                ret = docClient.testSimpleRestriction3(x, y, z);
                fail("x parameter maxLength=10 && minLength=5 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }

            // abnormal case
            x = "string_x";
            yOrig = "string_yyyyyy";
            y = new Holder<String>(yOrig);
            z = new Holder<String>();
            try {
                ret = testDocLiteral ? docClient.testSimpleRestriction3(x, y, z) : xmlClient
                    .testSimpleRestriction3(x, y, z);
                fail("y parameter maxLength=10 && minLength=5 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }
        }
    }

    @Test
    public void testSimpleRestriction4() throws Exception {
        if (!shouldRunTest("SimpleRestriction4")) {
            return;
        }
        // normal case, length=1
        String x = "x";
        String yOrig = "y";
        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testSimpleRestriction4(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testSimpleRestriction4(x, y, z);
        } else {
            ret = rpcClient.testSimpleRestriction4(x, y, z);
        }
        if (!perfTestOnly) {
            assertEquals("testSimpleRestriction4(): Incorrect value for inout param", x, y.value);
            assertEquals("testSimpleRestriction4(): Incorrect value for out param", yOrig, z.value);
            assertEquals("testSimpleRestriction4(): Incorrect return value", x, ret);
        }

        // Schema validation is enabled for doc-literal
        if (testDocLiteral || testXMLBinding) {
            // abnormal case
            x = "str";
            y = new Holder<String>(yOrig);
            z = new Holder<String>();
            try {
                ret = testDocLiteral ? docClient.testSimpleRestriction4(x, y, z) : xmlClient
                    .testSimpleRestriction4(x, y, z);
                fail("x parameter minLength=5 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }
        }
    }

    @Test
    public void testSimpleRestriction5() throws Exception {
        if (!shouldRunTest("SimpleRestriction5")) {
            return;
        }
        // normal case, maxLength=10 for SimpleRestrction
        // && minLength=5 for SimpleRestriction5
        String x = "str_x";
        String yOrig = "string_yyy";
        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testSimpleRestriction5(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testSimpleRestriction5(x, y, z);
        } else {
            ret = rpcClient.testSimpleRestriction5(x, y, z);
        }
        if (!perfTestOnly) {
            assertEquals("testSimpleRestriction5(): Incorrect value for inout param", x, y.value);
            assertEquals("testSimpleRestriction5(): Incorrect value for out param", yOrig, z.value);
            assertEquals("testSimpleRestriction5(): Incorrect return value", x, ret);
        }

        // Schema validation is enabled for doc-literal
        if (testDocLiteral || testXMLBinding) {
            // abnormal case
            x = "str";
            y = new Holder<String>(yOrig);
            z = new Holder<String>();
            try {
                ret = docClient.testSimpleRestriction5(x, y, z);
                fail("maxLength=10 && minLength=5 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }

            // abnormal case
            x = "string_x";
            yOrig = "string_yyyyyy";
            y = new Holder<String>(yOrig);
            z = new Holder<String>();
            try {
                ret = testDocLiteral ? docClient.testSimpleRestriction5(x, y, z) : xmlClient
                    .testSimpleRestriction5(x, y, z);
                fail("maxLength=10 && minLength=5 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }
        }
    }

    @Test
    public void testSimpleRestriction6() throws Exception {
        if (!shouldRunTest("SimpleRestriction6")) {
            return;
        }
        String x = "str_x";
        String yOrig = "y";
        Holder<String> y = new Holder(yOrig);
        Holder<String> z = new Holder();

        String ret;
        if (testDocLiteral) {
            ret = docClient.testSimpleRestriction6(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testSimpleRestriction6(x, y, z);
        } else {
            ret = rpcClient.testSimpleRestriction6(x, y, z);
        }
        if (!perfTestOnly) {
            assertEquals("testSimpleRestriction6(): Incorrect value for inout param", x, y.value);
            assertEquals("testSimpleRestriction6(): Incorrect value for out param", yOrig, z.value);
            assertEquals("testSimpleRestriction6(): Incorrect return value", x, ret);
        }

        // Schema validation is enabled for doc-literal
        if (testDocLiteral || testXMLBinding) {
            // abnormal case
            x = "string_x";
            yOrig = "string_y";
            y = new Holder<String>(yOrig);
            z = new Holder<String>();
            try {
                ret = testDocLiteral ? docClient.testSimpleRestriction6(x, y, z) : xmlClient
                    .testSimpleRestriction6(x, y, z);
                fail("maxLength=10 && minLength=5 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }
        }
    }

    @Test
    public void testHexBinaryRestriction() throws Exception {
        if (!shouldRunTest("HexBinaryRestriction")) {
            return;
        }
        // normal case, maxLength=10 && minLength=1
        byte[] x = "x".getBytes();
        byte[] yOrig = "string_yyy".getBytes();
        Holder<byte[]> y = new Holder(yOrig);
        Holder<byte[]> z = new Holder();

        byte[] ret;
        if (testDocLiteral) {
            ret = docClient.testHexBinaryRestriction(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testHexBinaryRestriction(x, y, z);
        } else {
            ret = rpcClient.testHexBinaryRestriction(x, y, z);
        }
        if (!perfTestOnly) {
            assertTrue("testHexBinaryRestriction(): Incorrect value for inout param", equals(x, y.value));
            assertTrue("testHexBinaryRestriction(): Incorrect value for out param", equals(yOrig, z.value));
            assertTrue("testHexBinaryRestriction(): Incorrect return value", equals(x, ret));
        }

        // Schema validation is enabled for doc-literal
        if (testDocLiteral || testXMLBinding) {
            // abnormal case
            x = "".getBytes();
            y = new Holder<byte[]>(yOrig);
            z = new Holder<byte[]>();
            try {
                ret = docClient.testHexBinaryRestriction(x, y, z);
                fail("maxLength=10 && minLength=1 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }

            // abnormal case
            x = "string_x".getBytes();
            yOrig = "string_yyyyyy".getBytes();
            y = new Holder<byte[]>(yOrig);
            z = new Holder<byte[]>();
            try {
                ret = testDocLiteral ? docClient.testHexBinaryRestriction(x, y, z) : xmlClient
                    .testHexBinaryRestriction(x, y, z);
                fail("maxLength=10 && minLength=1 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }
        }
    }

    protected boolean equals(byte[] x, byte[] y) {
        String xx = IOUtils.newStringFromBytes(x);
        String yy = IOUtils.newStringFromBytes(y);
        return xx.equals(yy);
    }

    @Test
    public void testBase64BinaryRestriction() throws Exception {
        if (!shouldRunTest("Base64BinaryRestriction")) {
            return;
        }
        byte[] x = "string_xxx".getBytes();
        byte[] yOrig = "string_yyy".getBytes();
        Holder<byte[]> y = new Holder(yOrig);
        Holder<byte[]> z = new Holder();

        byte[] ret;
        if (testDocLiteral) {
            ret = docClient.testBase64BinaryRestriction(x, y, z);
        } else if (testXMLBinding) {
            ret = xmlClient.testBase64BinaryRestriction(x, y, z);
        } else {
            ret = rpcClient.testBase64BinaryRestriction(x, y, z);
        }
        if (!perfTestOnly) {
            assertTrue("testBase64BinaryRestriction(): Incorrect value for inout param", equals(x, y.value));
            assertTrue("testBase64BinaryRestriction(): Incorrect value for out param",
                       equals(yOrig, z.value));
            assertTrue("testBase64BinaryRestriction(): Incorrect return value", equals(x, ret));
        }

        // Schema validation is enabled for doc-literal
        if (testDocLiteral) {
            // abnormal case
            x = "string_xxxxx".getBytes();
            y = new Holder<byte[]>(yOrig);
            z = new Holder<byte[]>();
            try {
                ret = docClient.testBase64BinaryRestriction(x, y, z);
                fail("length=10 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }
        }
    }

    @Test
    public void testSimpleListRestriction2() throws Exception {
        if (!shouldRunTest("SimpleListRestriction2")) {
            return;
        }
        if (testDocLiteral || testXMLBinding) {
            List<String> x = Arrays.asList("I", "am", "SimpleList");
            List<String> yOrig = Arrays.asList("Does", "SimpleList", "Work");
            Holder<List y = new Holder>(yOrig);
            Holder<List z = new Holder>();
            List<String> ret = testDocLiteral ? docClient.testSimpleListRestriction2(x, y, z) : xmlClient
                .testSimpleListRestriction2(x, y, z);
            if (!perfTestOnly) {
                assertTrue("testStringList(): Incorrect value for inout param", x.equals(y.value));
                assertTrue("testStringList(): Incorrect value for out param", yOrig.equals(z.value));
                assertTrue("testStringList(): Incorrect return value", x.equals(ret));
            }
            x = new ArrayList<String>();
            y = new Holder<List(yOrig);
            z = new Holder<List();
            try {
                ret = testDocLiteral ? docClient.testSimpleListRestriction2(x, y, z) : xmlClient
                    .testSimpleListRestriction2(x, y, z);
                fail("length=10 restriction is violated.");
            } catch (Exception ex) {
                // ex.printStackTrace();
            }
        } else {
            String[] x = {"I", "am", "SimpleList"};
            String[] yOrig = {"Does", "SimpleList", "Work"};
            Holder<String[]> y = new Holder(yOrig);
            Holder<String[]> z = new Holder();

            // normal case, maxLength=10 && minLength=1
            String[] ret = rpcClient.testSimpleListRestriction2(x, y, z);

            assertTrue(y.value.length == 3);
            assertTrue(z.value.length == 3);
            assertTrue(ret.length == 3);
            if (!perfTestOnly) {
                for (int i = 0; i < 3; i++) {
                    assertEquals("testStringList(): Incorrect value for inout param", x[i], y.value[i]);
                    assertEquals("testStringList(): Incorrect value for out param", yOrig[i], z.value[i]);
                    assertEquals("testStringList(): Incorrect return value", x[i], ret[i]);
                }
            }
        }
    }

    @Test
    public void testStringList() throws Exception {
        if (!shouldRunTest("StringList")) {
            return;
        }
        if (testDocLiteral || testXMLBinding) {
            List<String> x = Arrays.asList("I", "am", "SimpleList");
            List<String> yOrig = Arrays.asList("Does", "SimpleList", "Work");
            Holder<List y = new Holder>(yOrig);
            Holder<List z = new Holder>();

            List<String> ret = testDocLiteral ? docClient.testStringList(x, y, z) : xmlClient
                .testStringList(x, y, z);
            if (!perfTestOnly) {
                assertTrue("testStringList(): Incorrect value for inout param", x.equals(y.value));
                assertTrue("testStringList(): Incorrect value for out param", yOrig.equals(z.value));
                assertTrue("testStringList(): Incorrect return value", x.equals(ret));
            }
            if (testDocLiteral) {
                try {
                    ret = docClient.testStringList(null, y, z);
                } catch (SOAPFaultException ex) {
                    assertTrue(ex.getMessage(), ex.getMessage().contains("Unmarshalling"));
                }
            }
        } else {
            String[] x = {"I", "am", "SimpleList"};
            String[] yOrig = {"Does", "SimpleList", "Work"};
            Holder<String[]> y = new Holder(yOrig);
            Holder<String[]> z = new Holder();

            String[] ret = rpcClient.testStringList(x, y, z);

            assertTrue(y.value.length == 3);
            assertTrue(z.value.length == 3);
            assertTrue(ret.length == 3);
            if (!perfTestOnly) {
                for (int i = 0; i < 3; i++) {
                    assertEquals("testStringList(): Incorrect value for inout param", x[i], y.value[i]);
                    assertEquals("testStringList(): Incorrect value for out param", yOrig[i], z.value[i]);
                    assertEquals("testStringList(): Incorrect return value", x[i], ret[i]);
                }
            }
        }
    }

    @Test
    public void testNumberList() throws Exception {
        if (!shouldRunTest("NumberList")) {
            return;
        }
        if (testDocLiteral || testXMLBinding) {
            List<Integer> x = Arrays.asList(1, 2, 3);
            List<Integer> yOrig = Arrays.asList(10, 100, 1000);
            Holder<List y = new Holder>(yOrig);
            Holder<List z = new Holder>();

            List<Integer> ret = testDocLiteral ? docClient.testNumberList(x, y, z) : xmlClient
                .testNumberList(x, y, z);
            if (!perfTestOnly) {
                assertTrue("testNumberList(): Incorrect value for inout param", x.equals(y.value));
                assertTrue("testNumberList(): Incorrect value for out param", yOrig.equals(z.value));
                assertTrue("testNumberList(): Incorrect return value", x.equals(ret));
            }
        } else {
            Integer[] x = {1, 2, 3};
            Integer[] yOrig = {10, 100, 1000};
            Holder<Integer[]> y = new Holder(yOrig);
            Holder<Integer[]> z = new Holder();

            Integer[] ret = rpcClient.testNumberList(x, y, z);

            assertTrue(y.value.length == 3);
            assertTrue(z.value.length == 3);
            assertTrue(ret.length == 3);
            if (!perfTestOnly) {
                for (int i = 0; i < 3; i++) {
                    assertEquals("testNumberList(): Incorrect value for inout param", x[i], y.value[i]);
                    assertEquals("testNumberList(): Incorrect value for out param", yOrig[i], z.value[i]);
                    assertEquals("testNumberList(): Incorrect return value", x[i], ret[i]);
                }
            }
        }
    }

    @Test
    public void testQNameList() throws Exception {
        if (!shouldRunTest("QNameList")) {
            return;
        }
        if (testDocLiteral || testXMLBinding) {
            List<QName> x = Arrays.asList(new QName("http://schemas.iona.com/type_test", "testqname1"),
                                          new QName("http://schemas.iona.com/type_test", "testqname2"),
                                          new QName("http://schemas.iona.com/type_test", "testqname3"));
            List<QName> yOrig = Arrays.asList(new QName("http://schemas.iona.com/type_test", "testqname4"),
                                              new QName("http://schemas.iona.com/type_test", "testqname5"),
                                              new QName("http://schemas.iona.com/type_test", "testqname6"));
            Holder<List y = new Holder>(yOrig);
            Holder<List z = new Holder>();

            List<QName> ret = testDocLiteral ? docClient.testQNameList(x, y, z) : xmlClient.testQNameList(x,
                                                                                                          y,
                                                                                                          z);
            if (!perfTestOnly) {
                assertTrue("testQNameList(): Incorrect value for inout param", x.equals(y.value));
                assertTrue("testQNameList(): Incorrect value for out param", yOrig.equals(z.value));
                assertTrue("testQNameList(): Incorrect return value", x.equals(ret));
            }
        } else {
            QName[] x = {new QName("http://schemas.iona.com/type_test", "testqname1"),
                         new QName("http://schemas.iona.com/type_test", "testqname2"),
                         new QName("http://schemas.iona.com/type_test", "testqname3")};
            QName[] yOrig = {new QName("http://schemas.iona.com/type_test", "testqname4"),
                             new QName("http://schemas.iona.com/type_test", "testqname5"),
                             new QName("http://schemas.iona.com/type_test", "testqname6")};
            Holder<QName[]> y = new Holder(yOrig);
            Holder<QName[]> z = new Holder();

            QName[] ret = rpcClient.testQNameList(x, y, z);

            assertTrue(y.value.length == 3);
            assertTrue(z.value.length == 3);
            assertTrue(ret.length == 3);
            if (!perfTestOnly) {
                for (int i = 0; i < 3; i++) {
                    assertEquals("testQNameList(): Incorrect value for inout param", x[i], y.value[i]);
                    assertEquals("testQNameList(): Incorrect value for out param", yOrig[i], z.value[i]);
                    assertEquals("testQNameList(): Incorrect return value", x[i], ret[i]);
                }
            }
        }
    }

    @Test
    public void testSimpleUnionList() throws Exception {
        if (!shouldRunTest("SimpleUnionList")) {
            return;
        }
        if (testDocLiteral || testXMLBinding) {
            List<String> x = Arrays.asList("5", "-7");
            List<String> yOrig = Arrays.asList("-9", "7");

            Holder<List y = new Holder>(yOrig);
            Holder<List z = new Holder>();

            List<String> ret = testDocLiteral ? docClient.testSimpleUnionList(x, y, z) : xmlClient
                .testSimpleUnionList(x, y, z);
            if (!perfTestOnly) {
                assertTrue("testSimpleUnionList(): Incorrect value for inout param", x.equals(y.value));
                assertTrue("testSimpleUnionList(): Incorrect value for out param", yOrig.equals(z.value));
                assertTrue("testSimpleUnionList(): Incorrect return value", x.equals(ret));
            }
        } else {
            String[] x = {"5", "-7"};
            String[] yOrig = {"-9", "7"};

            Holder<String[]> y = new Holder(yOrig);
            Holder<String[]> z = new Holder();

            String[] ret = rpcClient.testSimpleUnionList(x, y, z);

            assertTrue(y.value.length == 2);
            assertTrue(z.value.length == 2);
            assertTrue(ret.length == 2);
            if (!perfTestOnly) {
                for (int i = 0; i < 2; i++) {
                    assertEquals("testSimpleUnionList(): Incorrect value for inout param", x[i], y.value[i]);
                    assertEquals("testSimpleUnionList(): Incorrect value for out param",
                                 yOrig[i], z.value[i]);
                    assertEquals("testSimpleUnionList(): Incorrect return value", x[i], ret[i]);
                }
            }
        }
    }

}

Other Apache CXF examples (source code examples)

Here is a short list of links related to this Apache CXF AbstractTypeTestClient.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.