blob: 26988c60e460902b6ddc4b3a33b954bf9a2e3f0b [file] [log] [blame]
/*
* 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.axis2.jaxws.sample;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.axis2.datasource.jaxb.JAXBCustomBuilderMonitor;
import org.apache.axis2.jaxws.TestLogger;
import org.apache.axis2.jaxws.framework.AbstractTestCase;
import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap;
import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrapService;
import org.test.sample.wrap.Header;
import org.test.sample.wrap.HeaderPart0;
import org.test.sample.wrap.HeaderPart1;
import org.test.sample.wrap.HeaderResponse;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Holder;
import javax.xml.ws.WebServiceException;
public class WrapTests extends AbstractTestCase {
String axisEndpoint = "http://localhost:6060/axis2/services/DocLitWrapService.DocLitWrapImplPort";
// String containing some characters that require XML encoding
private static String XMLCHARS = "<<<3>>>3>>>3";
public static Test suite() {
return getTestSetup(new TestSuite(WrapTests.class));
}
/**
* Get theDocLitWrap Prxoy
* @return DocLitWrapProxy
*/
private DocLitWrap getProxy() {
DocLitWrapService service = new DocLitWrapService();
DocLitWrap proxy = service.getDocLitWrapPort();
BindingProvider p = (BindingProvider) proxy;
p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, axisEndpoint);
return proxy;
}
public void testTwoWaySync(){
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String reqString = "Test twoWay Sync";
DocLitWrap proxy = getProxy();
String response = proxy.twoWay(reqString);
TestLogger.logger.debug("Sync Response =" + response);
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
public void testOneWayVoidWithNoInputParams(){
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
DocLitWrapService service = new DocLitWrapService();
DocLitWrap proxy = getProxy();
proxy.oneWayVoid();
// Repeat to ensure correct behavior
proxy.oneWayVoid();
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
public void testTwoWayHolder(){
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String holderString = new String("Test twoWay Sync");
Integer holderInteger = new Integer(0);
Holder<String> strHolder = new Holder<String>(holderString);
Holder<Integer> intHolder = new Holder<Integer>(holderInteger);
DocLitWrap proxy = getProxy();
proxy.twoWayHolder(strHolder, intHolder);
TestLogger.logger.debug("Holder Response String =" + strHolder.value);;
TestLogger.logger.debug("Holder Response Integer =" + intHolder.value);
// Repeat to ensure correct behavior
proxy.twoWayHolder(strHolder, intHolder);
TestLogger.logger.debug("Holder Response String =" + strHolder.value);;
TestLogger.logger.debug("Holder Response Integer =" + intHolder.value);
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
public void testTwoWayWithHeadersAndHolders(){
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
Header header = new Header();
header.setOut(0);
HeaderPart0 hp0= new HeaderPart0();
hp0.setHeaderType("Client setup Header Type for HeaderPart0");
HeaderPart1 hp1 = new HeaderPart1();
hp1.setHeaderType("Client setup Header Type for HeaderPart0");
Holder<HeaderPart0> holder = new Holder<HeaderPart0>(hp0);
DocLitWrap proxy = getProxy();
HeaderResponse hr = proxy.header(header, holder, hp1);
hp0=holder.value;
TestLogger.logger.debug("Holder Response String =" + hp0.getHeaderType());
TestLogger.logger.debug("Header Response Long =" + hr.getOut());
// Repeat to ensure correct behavior
hr = proxy.header(header, holder, hp1);
hp0=holder.value;
TestLogger.logger.debug("Holder Response String =" + hp0.getHeaderType());
TestLogger.logger.debug("Header Response Long =" + hr.getOut());
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
public void testTwoWayHolderAsync(){
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String holderString = new String("Test twoWay Sync");
Integer holderInteger = new Integer(0);
Holder<String> strHolder = new Holder<String>(holderString);
Holder<Integer> intHolder = new Holder<Integer>(holderInteger);
DocLitWrap proxy = getProxy();
proxy.twoWayHolder(strHolder, intHolder);
TestLogger.logger.debug("Holder Response String =" + strHolder.value);;
TestLogger.logger.debug("Holder Response Integer =" + intHolder.value);
// Repeat
proxy.twoWayHolder(strHolder, intHolder);
TestLogger.logger.debug("Holder Response String =" + strHolder.value);;
TestLogger.logger.debug("Holder Response Integer =" + intHolder.value);
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
/**
* This is a test of a doc/lit echo test
*/
public void testEchoString() {
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String request = "hello world";
DocLitWrap proxy = getProxy();
String response = proxy.echoStringWSGEN1(request);
assertTrue(response.equals(request));
// Repeat
response = proxy.echoStringWSGEN1(request);
assertTrue(response.equals(request));
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
/**
* This is a test of a doc/lit method that passes the
* request in a header. This can only be reproduced via
* annotations and WSGEN. WSImport will not allow this.
*/
public void testEchoStringWSGEN1() {
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String request = "hello world";
DocLitWrap proxy = getProxy();
String response = proxy.echoStringWSGEN1(request);
assertTrue(response.equals(request));
// Repeat
response = proxy.echoStringWSGEN1(request);
assertTrue(response.equals(request));
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
/**
* This is a test of a doc/lit method that passes the
* response in a header. This can only be reproduced via
* annotations and WSGEN. WSImport will not allow this.
*/
public void testEchoStringWSGEN2() {
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String request = "hello world 2";
DocLitWrap proxy = getProxy();
String response = proxy.echoStringWSGEN2(request);
assertTrue(response.equals(request));
// Repeat
response = proxy.echoStringWSGEN2(request);
assertTrue(response.equals(request));
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
/**
* This is a test of a doc/lit echo test with xml chars.
*/
public void testEchoString_xmlchars() {
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String request = XMLCHARS;
DocLitWrap proxy = getProxy();
String response = proxy.echoStringWSGEN1(request);
assertTrue(response.equals(request));
// Repeat
response = proxy.echoStringWSGEN1(request);
assertTrue(response.equals(request));
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
/**
* This is a test of a doc/lit method that passes the
* request in a header. This can only be reproduced via
* annotations and WSGEN. WSImport will not allow this.
*/
public void testEchoStringWSGEN1_xmlchars() {
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String request = XMLCHARS;
DocLitWrap proxy = getProxy();
String response = proxy.echoStringWSGEN1(request);
assertTrue(response.equals(request));
// Repeat
response = proxy.echoStringWSGEN1(request);
assertTrue(response.equals(request));
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
/**
* This is a test of a doc/lit method that passes the
* response in a header. This can only be reproduced via
* annotations and WSGEN. WSImport will not allow this.
*/
public void testEchoStringWSGEN2_xmlchars() {
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String request = XMLCHARS;
DocLitWrap proxy = getProxy();
String response = proxy.echoStringWSGEN2(request);
assertTrue(response.equals(request));
// Repeat
response = proxy.echoStringWSGEN2(request);
assertTrue(response.equals(request));
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
/**
* Test to validate whether a JAXBCustomBuilder is plugged in
* on the server.
*/
public void testJAXBCB_Server1(){
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String reqString = "JAXBCustomBuilderServer1";
DocLitWrap proxy = getProxy();
// Start Monitoring
proxy.twoWay("JAXBCustomBuilderMonitorStart");
String response = proxy.twoWay(reqString);
// The returned response will contain the number of JAXBCustomBuilders
// for the server this could be any number 0 or greater.
TestLogger.logger.debug("Response 1 =" + response);
String response2 = proxy.twoWay(reqString);
TestLogger.logger.debug("Response 2 =" + response2);
// The returned response will contain the number of JAXBCustomBuilders
// this could be any number 1 or greater. The assumption is that
// the JAXBCustomBuilder will be installed on the second invoke
Integer r = Integer.parseInt(response2);
assertTrue(r.intValue() >= 1);
TestLogger.logger.debug("------------------------------");
// End Monitoring
proxy.twoWay("JAXBCustomBuilderMonitorEnd");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
/**
* Test to validate whether a JAXBCustomBuilder is plugged in
* and used on the server.
*/
public void testJAXBCB_Server2(){
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String reqString = "JAXBCustomBuilderServer2";
DocLitWrap proxy = getProxy();
// Start Monitoring
proxy.twoWay("JAXBCustomBuilderMonitorStart");
String response = proxy.twoWay(reqString);
// The returned response will contain the number of JAXBCustomBuilders
// usages.
TestLogger.logger.debug("Response 1 =" + response);
Integer r1 = Integer.parseInt(response);
String response2 = proxy.twoWay(reqString);
TestLogger.logger.debug("Response 2 =" + response2);
// The returned response will contain the number of JAXBCustomBuilders
// usages. This should be greater than the first response
Integer r2 = Integer.parseInt(response2);
assertTrue(r2.intValue() > r1.intValue());
TestLogger.logger.debug("------------------------------");
// End Monitoring
proxy.twoWay("JAXBCustomBuilderMonitorEnd");
}catch(Exception e){
e.printStackTrace();
fail();
}
}
/**
* Test to validate whether a JAXBCustomBuilder is plugged and used
* on the client
*/
public void testJAXBCB_Client(){
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String reqString = "JAXBCustomBuilderClient";
DocLitWrap proxy = getProxy();
// Start Monitoring
JAXBCustomBuilderMonitor.setMonitoring(true);
JAXBCustomBuilderMonitor.clear();
// Invoke the web services
proxy.twoWay(reqString);
// The second invoke should trigger the fast
// unmarshalling of the response
proxy.twoWay(reqString);
// The returned response unmarshalling should try
// the JAXBCustomBuilder
int totalBuilders = JAXBCustomBuilderMonitor.getTotalBuilders();
assertTrue(totalBuilders >= 1);
int totalCreates = JAXBCustomBuilderMonitor.getTotalCreates();
assertTrue(totalCreates >= 1);
TestLogger.logger.debug("------------------------------");
}catch(Exception e){
e.printStackTrace();
fail();
} finally {
JAXBCustomBuilderMonitor.setMonitoring(false);
}
}
/**
* Test to validate whether a JAXBCustomBuilder is plugged in
* on the client. Also makes sure that the JAXBCustomBuilder
* falls back to normal processing when faults are thrown.
*/
public void testJAXBCB_Fault(){
TestLogger.logger.debug("------------------------------");
TestLogger.logger.debug("Test : " + getName());
try{
String reqNormalString = "JAXBCustomBuilderClient";
String reqFaultString = "JAXBCustomBuilderFault";
DocLitWrap proxy = getProxy();
// Start Monitoring
JAXBCustomBuilderMonitor.setMonitoring(true);
JAXBCustomBuilderMonitor.clear();
try {
// Invoke the web services
proxy.twoWay(reqNormalString);
// This second invoke will cause
// an exception to be thrown.
proxy.twoWay(reqFaultString);
// An exception was expected
assertTrue(false);
} catch (WebServiceException wse) {
// An exception is expected
// The returned response unmarshalling should try
// the JAXBCustomBuilder but fallback to normal unmarshalling
// due to the presense of a SOAPFault
int totalBuilders = JAXBCustomBuilderMonitor.getTotalBuilders();
assertTrue(totalBuilders >= 1);
int totalCreates = JAXBCustomBuilderMonitor.getTotalCreates();
assertTrue(totalCreates == 0);
int totalFailedCreates =
JAXBCustomBuilderMonitor.getTotalFailedCreates();
assertTrue(totalFailedCreates >= 1);
}
TestLogger.logger.debug("------------------------------");
} catch(Exception e){
e.printStackTrace();
fail();
} finally {
JAXBCustomBuilderMonitor.setMonitoring(false);
}
}
}