/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2004-2013 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* http://glassfish.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
package fromwsdl.doclit_fault.client;
import client.common.client.DispatchTestCase;
import testutil.ClientServerTestUtil;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.Source;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.soap.SOAPBinding;
import java.io.File;
/**
* @author JAX-RPC RI Development Team
*/
public class DispatchTestApp extends DispatchTestCase {
private QName serviceQName = new QName("urn:test", "FaultService");
private QName portQName = new QName("urn:test", "FaultPort");
private String bindingIdString = SOAPBinding.SOAP11HTTP_BINDING;
private String endpointAddress = "http://localhost:8080/jaxrpc-fromwsdl_doclit_fault/hello";
private Service service;
private Dispatch dispatch;
public DispatchTestApp(String name) {
super(name);
// we'll fix the test harness correctly later,
// so that test code won't have to hard code any endpoint address nor transport,
// but for now let's just support local and HTTP to make unit tests happier.
// this is not a good code, but it's just a bandaid solutino that works for now.
if(ClientServerTestUtil.useLocal())
endpointAddress = "local://"+new File(System.getProperty("tempdir")).getAbsolutePath().replace('\\','/')+'?'+portQName.getLocalPart();
else
endpointAddress = "http://localhost:8080/jaxrpc-client_dispatch_wsdl_hello/hello";
}
private void createService() {
try {
service = Service.create(serviceQName);
//does service.addPort(portQName, bindingIdString, endpointAddress
addPort(service, portQName, bindingIdString, endpointAddress);
} catch (WebServiceException e) {
e.printStackTrace();
}
}
private Dispatch createDispatchJAXB() {
try {
JAXBContext context = DispatchTestApp.createJAXBContext();
dispatch = service.createDispatch(portQName, context, Service.Mode.PAYLOAD);
} catch (WebServiceException e) {
e.printStackTrace();
}
return dispatch;
}
private Dispatch createDispatchSource() {
try {
dispatch = service.createDispatch(portQName, Source.class,
Service.Mode.PAYLOAD);
} catch (WebServiceException e) {
e.printStackTrace();
}
return dispatch;
}
private Dispatch createDispatchSOAPMessage() {
try {
dispatch = service.createDispatch(portQName, SOAPMessage.class,
Service.Mode.MESSAGE);
} catch (WebServiceException e) {
e.printStackTrace();
}
return dispatch;
}
private Dispatch createDispatchSOAPMessageSource() {
try {
dispatch = service.createDispatch(portQName, Source.class,
Service.Mode.MESSAGE);
} catch (WebServiceException e) {
e.printStackTrace();
}
return dispatch;
}
private Dispatch getDispatchJAXB() {
createService();
return createDispatchJAXB();
}
private Dispatch getDispatchSource() {
createService();
return createDispatchSource();
}
private Dispatch getDispatchSOAPMessage() {
createService();
return createDispatchSOAPMessage();
}
private Dispatch getDispatchSOAPMessageSource() {
createService();
return createDispatchSOAPMessageSource();
}
private static JAXBContext createJAXBContext() {
try {
return JAXBContext.newInstance(fromwsdl.doclit_fault.client.ObjectFactory.class);
} catch (javax.xml.bind.JAXBException e) {
throw new WebServiceException(e.getMessage(), e);
}
}
public void testFault1JAXB()
throws Exception {
try {
java.lang.String in = "Fault1";
JAXBElement<String> echoElement = new ObjectFactory().createEchoElement(in);
Dispatch dispatch = getDispatchJAXB();
Object ret = dispatch.invoke(echoElement);
fail("did not receive an exception");
} catch (Exception e) {
System.out.println(e.getClass());
e.printStackTrace();
//assertTrue(e instanceof Fault1Exception);
//System.out.println("Expected exception received: " + e.getMessage());
//e.printStackTrace();
//assertTrue(true);
} catch (Throwable e) {
e.printStackTrace();
assertTrue(false);
}
}
public void tkkestFault1Source()
throws Exception {
try {
java.lang.String in = "Fault1";
//JAXBElement<String> echoElement = new ObjectFactory().createEchoElement(in);
Source echoElement = null;
Dispatch dispatch = getDispatchSource();
Object ret = dispatch.invoke(echoElement);
fail("did not receive an exception");
} catch (Exception e) {
System.out.println(e.getClass());
e.printStackTrace();
//assertTrue(e instanceof Fault1Exception);
//System.out.println("Expected exception received: " + e.getMessage());
//e.printStackTrace();
//assertTrue(true);
} catch (Throwable e) {
e.printStackTrace();
assertTrue(false);
}
}
public void kkktestFault2() {
/*try {
java.lang.String in = "Fault2";
java.lang.String ret = stub.echo(in);
fail("did not receive an exception");
} catch (Fault2Exception e) {
System.out.println("Expected exception received: " + e.getMessage());
assertTrue(true);
} catch (Throwable e) {
e.printStackTrace();
assertTrue(false);
}
*/
}
public void kkktestFault3() {
/* try {
String in = "Fault3";
String ret = stub.echo(in);
fail("did not receive an exception");
} catch (Fault3Exception e) {
System.out.println("Expected exception received: " + e.getMessage());
assertTrue(true);
} catch (Throwable e) {
e.printStackTrace();
assertTrue(false);
}
*/
}
public void kkktestFault4() {
/* try {
String in = "Fault4";
String ret = stub.echo(in);
fail("did not receive an exception");
} catch (Fault4Exception e) {
System.out.println("Expected exception received: " + e.getMessage());
assertTrue(true);
} catch (Throwable e) {
e.printStackTrace();
assertTrue(false);
}
*/
}
public void kkktestHelloRequestResponseJAXB() throws Exception {
JAXBContext jc = null;
/*
HelloResponse helloResult = null;
Hello_Type hello = new Hello_Type();
jc = DispatchTestApp.createJAXBContext();
try {
hello.setArgument("foo");
hello.setExtra("Test ");
Dispatch dispatch = getDispatchJAXB();
helloResult = (HelloResponse) dispatch.invoke(hello);
//assertEquals(((HelloResponse) result).getExtra(), hello.getExtra());
//assertEquals(((HelloResponse) result).getArgument(), hello.getArgument());
} catch (WebServiceException jex) {
fail("testHelloRequestResponseJAXB FAILED");
}
*/
}
/*
public void testHelloRequestResponseXML() throws Exception {
/ Dispatch dispatch = getDispatchSource();
assertTrue(dispatch != null);
assertTrue(dispatch instanceof com.sun.xml.ws.client.dispatch.SOAPSourceDispatch);
//Source request = makeStreamSource(helloMsg);
//Object result = dispatch.invoke(request);
//assertTrue(result instanceof Source);
//String xmlResult = sourceToXMLString((Source) result);
//System.out.println("Got result : " + xmlResult);
Collection<Source> sourceList = makeMsgSource(helloMsg);
Collection<Source> responseList = makeMsgSource(helloResponse);
try {
for (Iterator iter = sourceList.iterator(); iter.hasNext();) {
Object sourceObject = iter.next();
Object result = dispatch.invoke(sourceObject);
assertTrue(result instanceof Source);
String xmlResult = sourceToXMLString((Source) result);
System.out.println("Got result : " + xmlResult);
}
} catch (Exception ex) {
ex.printStackTrace();
fail("testHelloRequestResponseXML FAILED");
}
}
public void testHelloRequestResponseSOAPMessage() throws Exception {
Dispatch dispatch = getDispatchSOAPMessage();
assertTrue(dispatch != null);
assertTrue(dispatch instanceof com.sun.xml.ws.client.dispatch.SOAPMessageDispatch);
byte[] bytes = helloSM.getBytes();
ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
Source source = makeStreamSource(helloSM);
SOAPMessage message = getSOAPMessage(source);
Object result = dispatch.invoke(message);
//todo:need to check contents
assertTrue(result instanceof SOAPMessage);
((SOAPMessage) result).writeTo(System.out);
}
public void testHelloRequestResponseSOAPMessageSource() throws Exception {
Dispatch dispatch = getDispatchSOAPMessageSource();
Source source = makeStreamSource(helloSM);
Object result = dispatch.invoke(source);
System.out.println("Result class is " + result.getClass().getName());
//todo: need to check contents
assertTrue(result instanceof Source);
String xmlResult = sourceToXMLString((Source) result);
System.out.println(xmlResult);
}
*/
/*
* for debugging
*/
public static void main(String [] args) {
try {
if (ClientServerTestUtil.useLocal()) {
System.out.println("http transport only exiting");
return;
}
System.setProperty("uselocal", "true");
System.setProperty("com.sun.xml.ws.client.ContentNegotiation", "optimistic");
DispatchTestApp testor = new DispatchTestApp("TestClient");
//testor.testHelloRequestResponseSOAPMessageSource();
} catch (Exception e) {
e.printStackTrace();
}
}
}