1 package org.codehaus.xfire.test; 2 3 import java.lang.reflect.Method; 4 5 import javax.xml.namespace.QName; 6 7 import org.codehaus.xfire.XFireRuntimeException; 8 import org.codehaus.xfire.service.FaultInfo; 9 import org.codehaus.xfire.service.MessageInfo; 10 import org.codehaus.xfire.service.OperationInfo; 11 import org.codehaus.xfire.service.Service; 12 import org.codehaus.xfire.service.ServiceInfo; 13 14 /*** 15 * Contains various <code>ServiceEndpoint</code> implementations. Mainly used throughout all the test classes which need 16 * <code>ServiceEndpoint</code> to test their code. 17 * 18 * @author <a href="mailto:poutsma@mac.com">Arjen Poutsma</a> 19 * @see Service 20 */ 21 public class ServiceEndpoints 22 { 23 private ServiceEndpoints() 24 { 25 } 26 27 /*** 28 * Returns the endpoint for an echo service. The returned endpoint has the namespace 29 * <code>http://test.xfire.codehaus.org</code>, and it's name is <code>Echo</code>. It has on operation named 30 * <code>echo</code>, with an input message <code>echoRequest</code> and an output message 31 * <code>echoResponse</code>. Both messages contain a single part, named <code>echoRequestin0</code> and 32 * <code>echoResponseout</code> respectively. 33 * <p/> 34 * The endpoints <code>Class</code> and <code>Method</code> are mapped to {@link EchoImpl}. 35 * 36 * @return an echo service endpoint. 37 */ 38 public static Service getEchoService() 39 { 40 Class echoClass = EchoImpl.class; 41 Method echoMethod = null; 42 try 43 { 44 echoMethod = echoClass.getMethod("echo", new Class[]{String.class}); 45 } 46 catch (NoSuchMethodException e) 47 { 48 throw new XFireRuntimeException("Could not find echo method on Echo class", e); 49 } 50 ServiceInfo service = new ServiceInfo(new QName("http://test.xfire.codehaus.org", "Echo"), echoClass); 51 OperationInfo operation = service.addOperation("echo", echoMethod); 52 MessageInfo inputMessage = operation.createMessage(new QName("echoRequest")); 53 operation.setInputMessage(inputMessage); 54 MessageInfo outputMessage = operation.createMessage(new QName("echoResponse")); 55 operation.setOutputMessage(outputMessage); 56 inputMessage.addMessagePart(new QName("echoRequestin0"), String.class); 57 outputMessage.addMessagePart(new QName("echoResponseout"), String.class); 58 59 return new Service(service); 60 } 61 62 /*** 63 * Returns the endpoint for an echo service with faults. This method returns the same as {@link #getEchoService()}, 64 * but adds a fault to the operation. The fault is named <code>echoFault</code>, and has one part 65 * <code>echoFault0</code>. 66 * 67 * @return the echo service endpoint. 68 */ 69 public static Service getEchoFaultService() 70 { 71 Service endpoint = getEchoService(); 72 OperationInfo operation = endpoint.getServiceInfo().getOperation("echo"); 73 FaultInfo fault = operation.addFault("echoFault"); 74 fault.addMessagePart(new QName("echoFault0"), String.class); 75 76 return endpoint; 77 } 78 }