FileDocCategorySizeDatePackage
TestOnFaultHeaders.javaAPI DocApache Axis 1.43893Sat Apr 22 18:57:26 BST 2006test.soap

TestOnFaultHeaders

public class TestOnFaultHeaders extends TestCase
Confirm OnFault() header processing + additions work right.
author
Glen Daniels (gdaniels@apache.org)

Fields Summary
public static String
TRIGGER_NS
public static String
TRIGGER_NAME
public static String
RESP_NAME
private org.apache.axis.configuration.SimpleProvider
provider
private org.apache.axis.server.AxisServer
engine
private org.apache.axis.transport.local.LocalTransport
localTransport
static final String
localURL
Constructors Summary
public TestOnFaultHeaders(String s)


       
        super(s);
    
Methods Summary
public voidsetUp()

        engine.init();
        localTransport.setUrl(localURL);
        SimpleChain chain = new SimpleChain();
        chain.addHandler(new TestFaultHandler());
        chain.addHandler(new TestHandler());
        SOAPService service = new SOAPService(chain,
                                              new RPCProvider(),
                                              null);
        
        service.setOption("className", TestService.class.getName());
        service.setOption("allowedMethods", "*");
        
        provider.deployService("testService", service);
    
public voidtestOnFaultHeaders()
Add a header which will trigger a fault in the TestHandler, and therefore trigger the onFault() in the TestFaultHandler. That should put a header in the outgoing message, which we check for when we get the fault.

throws
Exception

        Call call = new Call(new Service());
        call.setTransport(localTransport);
        
        SOAPHeaderElement header = new SOAPHeaderElement(TRIGGER_NS,
                                                         TRIGGER_NAME,
                                                         "do it");
        
        call.addHeader(header);
        
        try {
            call.invoke("countChars", new Object [] { "foo" });
        } catch (Exception e) {            
            SOAPEnvelope env = call.getResponseMessage().getSOAPEnvelope();
            Vector headers = env.getHeaders();
            assertEquals("Wrong # of headers in fault!", 1, headers.size());
            SOAPHeaderElement respHeader = (SOAPHeaderElement)headers.get(0);
            assertEquals("Wrong namespace for header", TRIGGER_NS,
                         respHeader.getNamespaceURI());
            assertEquals("Wrong localName for response header", RESP_NAME,
                         respHeader.getName());
            return;
        }
        
        fail("We should have gotten a fault!");