addnumbershandlertests.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 511 行 · 第 1/2 页
JAVA
511 行
* puts the AddNumbersClientLogicalHandler and AddNumbersClientProtocolHandler
* in the flow. Results should be the same as testAddNumbersClientHandler.
*/
public void testAddNumbersClientHandlerMyResolver() {
try{
TestLogger.logger.debug("----------------------------------");
TestLogger.logger.debug("test: " + getName());
AddNumbersHandlerService service = new AddNumbersHandlerService();
service.setHandlerResolver(new MyHandlerResolver());
AddNumbersHandlerPortType proxy = service.getAddNumbersHandlerPort();
BindingProvider p = (BindingProvider)proxy;
p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
axisEndpoint);
int total = proxy.addNumbersHandler(10,10);
assertEquals("With handler manipulation, total should be 4 less than a proper sumation.",
16,
total);
TestLogger.logger.debug("Total (after handler manipulation) = " + total);
TestLogger.logger.debug("----------------------------------");
} catch(Exception e) {
e.printStackTrace();
fail();
}
}
// TODO: disabled until handler support is more complete
public void testAddNumbersClientProtoAndLogicalHandler() {
try{
TestLogger.logger.debug("----------------------------------");
TestLogger.logger.debug("test: " + getName());
AddNumbersHandlerService service = new AddNumbersHandlerService();
AddNumbersHandlerPortType proxy = service.getAddNumbersHandlerPort();
BindingProvider p = (BindingProvider)proxy;
p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
axisEndpoint);
List<Handler> handlers = p.getBinding().getHandlerChain();
if (handlers == null)
handlers = new ArrayList<Handler>();
handlers.add(new AddNumbersClientLogicalHandler());
handlers.add(new AddNumbersClientProtocolHandler());
p.getBinding().setHandlerChain(handlers);
// value 102 triggers an endpoint exception, which will run through the server outbound
// handleFault methods, then client inbound handleFault methods
int total = proxy.addNumbersHandler(102,10);
fail("should have got an exception, but didn't");
} catch(Exception e) {
e.printStackTrace();
assertTrue("Exception should be SOAPFaultException", e instanceof SOAPFaultException);
//AXIS2-2417 - assertEquals(((SOAPFaultException)e).getMessage(), "AddNumbersLogicalHandler2 was here");
assertEquals(((SOAPFaultException)e).getMessage(), "Got value 101. " +
"AddNumbersHandlerPortTypeImpl.addNumbersHandler method is " +
"correctly throwing this exception as part of testing");
}
TestLogger.logger.debug("----------------------------------");
}
public void testAddNumbersClientHandlerWithFault() {
try{
TestLogger.logger.debug("----------------------------------");
TestLogger.logger.debug("test: " + getName());
AddNumbersHandlerService service = new AddNumbersHandlerService();
AddNumbersHandlerPortType proxy = service.getAddNumbersHandlerPort();
BindingProvider p = (BindingProvider)proxy;
p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
axisEndpoint);
List<Handler> handlers = p.getBinding().getHandlerChain();
if (handlers == null)
handlers = new ArrayList<Handler>();
handlers.add(new AddNumbersClientLogicalHandler4());
handlers.add(new AddNumbersClientLogicalHandler3());
handlers.add(new AddNumbersClientLogicalHandler());
p.getBinding().setHandlerChain(handlers);
int total = proxy.addNumbersHandler(99,10);
fail("Should have got an exception, but we didn't.");
TestLogger.logger.debug("----------------------------------");
} catch(Exception e) {
e.printStackTrace();
assertTrue("Exception should be SOAPFaultException", e instanceof SOAPFaultException);
assertEquals(((SOAPFaultException)e).getMessage(), "I don't like the value 99");
}
}
/**
* test results should be the same as testAddNumbersClientHandler, except that
* AddNumbersClientLogicalHandler2 doubles the first param on outbound. Async, of course.
*
*/
public void testAddNumbersClientHandlerAsync() {
try{
TestLogger.logger.debug("----------------------------------");
TestLogger.logger.debug("test: " + getName());
AddNumbersHandlerService service = new AddNumbersHandlerService();
AddNumbersHandlerPortType proxy = service.getAddNumbersHandlerPort();
BindingProvider p = (BindingProvider)proxy;
p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
axisEndpoint);
List<Handler> handlers = p.getBinding().getHandlerChain();
if (handlers == null)
handlers = new ArrayList<Handler>();
handlers.add(new AddNumbersClientLogicalHandler());
handlers.add(new AddNumbersClientLogicalHandler2());
handlers.add(new AddNumbersClientProtocolHandler());
p.getBinding().setHandlerChain(handlers);
AddNumbersHandlerAsyncCallback callback = new AddNumbersHandlerAsyncCallback();
Future<?> future = proxy.addNumbersHandlerAsync(10, 10, callback);
while (!future.isDone()) {
Thread.sleep(1000);
TestLogger.logger.debug("Async invocation incomplete");
}
int total = callback.getResponseValue();
assertEquals("With handler manipulation, total should be 26.", 26, total);
TestLogger.logger.debug("Total (after handler manipulation) = " + total);
TestLogger.logger.debug("----------------------------------");
} catch(Exception e) {
e.printStackTrace();
fail(e.toString());
}
}
public void testOneWay() {
try {
TestLogger.logger.debug("----------------------------------");
TestLogger.logger.debug("test: " + getName());
AddNumbersHandlerService service = new AddNumbersHandlerService();
AddNumbersHandlerPortType proxy = service.getAddNumbersHandlerPort();
BindingProvider bp = (BindingProvider) proxy;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
axisEndpoint);
proxy.oneWayInt(11);
TestLogger.logger.debug("----------------------------------");
} catch (Exception e) {
e.printStackTrace();
fail();
}
}
/*
* A callback implementation that can be used to collect the exceptions
*/
class AddNumbersHandlerAsyncCallback implements AsyncHandler<AddNumbersHandlerResponse> {
private Exception exception;
private int retVal;
public void handleResponse(Response<AddNumbersHandlerResponse> response) {
try {
TestLogger.logger.debug("FaultyAsyncHandler.handleResponse() was called");
AddNumbersHandlerResponse r = response.get();
TestLogger.logger.debug("No exception was thrown from Response.get()");
retVal = r.getReturn();
}
catch (Exception e) {
TestLogger.logger.debug("An exception was thrown: " + e.getClass());
exception = e;
}
}
public int getResponseValue() {
return retVal;
}
public Exception getException() {
return exception;
}
}
class MyHandlerResolver implements HandlerResolver {
public List<Handler> getHandlerChain(PortInfo portinfo) {
ArrayList<Handler> handlers = new ArrayList<Handler>();
handlers.add(new AddNumbersClientLogicalHandler());
handlers.add(new AddNumbersClientProtocolHandler());
return handlers;
}
}
private String getString(Source source) throws Exception {
if (source == null) {
return null;
}
StringWriter writer = new StringWriter();
Transformer t = TransformerFactory.newInstance().newTransformer();
Result result = new StreamResult(writer);
t.transform(source, result);
return writer.getBuffer().toString();
}
/**
* Create a Source request to be used by Dispatch<Source>
*/
private Source createRequestSource() {
String reqString = null;
String ns = "http://org/test/addnumbershandler";
String operation = "addNumbersHandler";
reqString = "<" + operation +
" xmlns=\"" + ns + "\">" +
"<arg0>10</arg0><arg1>10</arg1>" +
"</" + operation + ">";
return new StreamSource(new StringReader(reqString));
}
public void testAddNumbersHandlerHandlerResolver() {
try {
System.out.println("----------------------------------");
System.out.println("test: " + getName());
AddNumbersHandlerService service = new AddNumbersHandlerService(); // will give NPE:
List<Handler> handlers = service.getHandlerResolver().getHandlerChain(null);
assertNotNull("Default handlers list should not be null but empty.", handlers);
System.out.println("----------------------------------");
} catch (Exception e) {
e.printStackTrace();
fail(e.getMessage());
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?