Author: veithen Date: Sun Dec 30 13:32:58 2012 New Revision: 1426937 URL: http://svn.apache.org/viewvc?rev=1426937&view=rev Log: Eliminated several instances of the catch-and-fail JUnit anti-pattern.
Modified: axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/HeadersHandlerTests.java Modified: axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/HeadersHandlerTests.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/HeadersHandlerTests.java?rev=1426937&r1=1426936&r2=1426937&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/HeadersHandlerTests.java (original) +++ axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/HeadersHandlerTests.java Sun Dec 30 13:32:58 2012 @@ -80,288 +80,273 @@ public class HeadersHandlerTests extends - public void testHeadersHandler() { - try { - TestLogger.logger.debug("----------------------------------"); - TestLogger.logger.debug("test: " + getName()); + public void testHeadersHandler() throws Exception { + TestLogger.logger.debug("----------------------------------"); + TestLogger.logger.debug("test: " + getName()); - HeadersHandlerService service = new HeadersHandlerService(); - HeadersHandlerPortType proxy = service.getHeadersHandlerPort(); - BindingProvider p = (BindingProvider) proxy; - Map<String, Object> requestCtx = p.getRequestContext(); - - requestCtx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, axisEndpoint); - - /* - * add several headers by way of HeadersAdapter property - */ - String acoh1, acoh2, acoh3, acoh4, acoh5, acoh6; - SOAPFactory sf = SOAPFactory.newInstance(); - try { - Map<QName, List<String>> requestHeaders = new HashMap<QName, List<String>>(); - - // QName used here should match the key for the list set on the requestCtx - acoh1 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH1_HEADER_QNAME, TestHeaders.CONTENT_SMALL1); - - // QName used here should match the key for the list set on the requestCtx - acoh2 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH1_HEADER_QNAME, TestHeaders.CONTENT_SMALL2); - - // QName used here should match the key for the list set on the requestCtx - acoh3 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH2_HEADER_QNAME, TestHeaders.CONTENT_SMALL3); - - // QName used here should match the key for the list set on the requestCtx - acoh4 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH2_HEADER_QNAME, TestHeaders.CONTENT_SMALL4); - - // create additional header strings that will need to be checked: - acoh5 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH3_HEADER_QNAME, TestHeaders.CONTENT_LARGE); - acoh6 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH4_HEADER_QNAME, TestHeaders.CONTENT_SMALL4); - - List<String> list1 = new ArrayList<String>(); - list1.add(acoh1); - list1.add(acoh2); - - List<String> list2 = new ArrayList<String>(); - list2.add(acoh3); - list2.add(acoh4); - - requestHeaders.put(TestHeaders.ACOH1_HEADER_QNAME, list1); - requestHeaders.put(TestHeaders.ACOH2_HEADER_QNAME, list2); - requestCtx.put(Constants.JAXWS_OUTBOUND_SOAP_HEADERS, requestHeaders); - } catch (Throwable e) { - fail(e.getMessage()); - return; - } + HeadersHandlerService service = new HeadersHandlerService(); + HeadersHandlerPortType proxy = service.getHeadersHandlerPort(); + BindingProvider p = (BindingProvider) proxy; + Map<String, Object> requestCtx = p.getRequestContext(); + + requestCtx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, axisEndpoint); + + /* + * add several headers by way of HeadersAdapter property + */ + String acoh1, acoh2, acoh3, acoh4, acoh5, acoh6; + SOAPFactory sf = SOAPFactory.newInstance(); + try { + Map<QName, List<String>> requestHeaders = new HashMap<QName, List<String>>(); - // some handlers decrement the value, so we can confirm SOAP body manipulation does not corrupt the headers - int numOfHandlerHitsInFlow = 3; - - int intParam1 = 10; - int intParam2 = 10; - int total = proxy.headersHandler(intParam1, intParam2); - - assertEquals("Return value should be " + (intParam1 + intParam2 - numOfHandlerHitsInFlow) + " but was " + total , - (intParam1 + intParam2 - numOfHandlerHitsInFlow), - total); - TestLogger.logger.debug("Total (after handler manipulation) = " + total); - - /* - * I tried to give enough info below in the expected_calls list so you can tell what's - * being tested without having to look at handler code. All header manipulation is - * done by SOAPHeadersAdapter. - * - * TODO: I would very much like to have done some other means of - * header manipulation, but the Axis2 SAAJ module is lacking necessary implementation - * to do this with any reliability. - */ - - String log = readLogFile(); - String expected_calls = - // client outbound - "HeadersClientLogicalHandler HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh1+"\n" - + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh2+"\n" - + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh3+"\n" - + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh4+"\n" - + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh1+"\n" - + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh3+"\n" - + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh4+"\n" // message manipulated after this action - + "HeadersClientProtocolHandler HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh2+"\n" - + "HeadersClientProtocolHandler ADDED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler2 HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh2+"\n" - + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler GET_HEADERS\n" - + "HeadersClientProtocolHandler2 GET_HEADERS\n" - // server inbound - + "HeadersServerProtocolHandler GET_HEADERS\n" - + "HeadersServerProtocolHandler HANDLE_MESSAGE_INBOUND\n" - + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh2+"\n" - + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh5+"\n" - + "HeadersServerProtocolHandler REMOVED_HEADER "+acoh2+"\n" - + "HeadersServerProtocolHandler ADDED_HEADER "+acoh6+"\n" - + "HeadersServerLogicalHandler HANDLE_MESSAGE_INBOUND\n" - + "HeadersServerLogicalHandler CHECKED_HEADER "+acoh5+"\n" - + "HeadersServerLogicalHandler CHECKED_HEADER "+acoh6+"\n" - + "HeadersServerLogicalHandler REMOVED_HEADER "+acoh5+"\n" // message manipulated after this action - + "HeadersServerLogicalHandler REMOVED_HEADER "+acoh6+"\n" - // server outbound - + "HeadersServerLogicalHandler HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersServerLogicalHandler ADDED_HEADER "+acoh1+"\n" // message manipulated after this action - + "HeadersServerProtocolHandler HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh1+"\n" - + "HeadersServerProtocolHandler REMOVED_HEADER "+acoh1+"\n" - + "HeadersServerProtocolHandler ADDED_HEADER "+acoh5+"\n" - + "HeadersServerLogicalHandler CLOSE\n" - + "HeadersServerProtocolHandler CLOSE\n" - // client inbound - + "HeadersClientProtocolHandler2 HANDLE_MESSAGE_INBOUND\n" - + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler2 ADDED_HEADER "+acoh3+"\n" - + "HeadersClientProtocolHandler HANDLE_MESSAGE_INBOUND\n" - + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh3+"\n" - + "HeadersClientProtocolHandler REMOVED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler ADDED_HEADER "+acoh4+"\n" - + "HeadersClientLogicalHandler HANDLE_MESSAGE_INBOUND\n" - + "HeadersClientProtocolHandler2 CLOSE\n" - + "HeadersClientProtocolHandler CLOSE\n" - + "HeadersClientLogicalHandler CLOSE\n"; - - assertEquals(expected_calls, log); + // QName used here should match the key for the list set on the requestCtx + acoh1 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH1_HEADER_QNAME, TestHeaders.CONTENT_SMALL1); + + // QName used here should match the key for the list set on the requestCtx + acoh2 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH1_HEADER_QNAME, TestHeaders.CONTENT_SMALL2); + + // QName used here should match the key for the list set on the requestCtx + acoh3 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH2_HEADER_QNAME, TestHeaders.CONTENT_SMALL3); + + // QName used here should match the key for the list set on the requestCtx + acoh4 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH2_HEADER_QNAME, TestHeaders.CONTENT_SMALL4); + + // create additional header strings that will need to be checked: + acoh5 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH3_HEADER_QNAME, TestHeaders.CONTENT_LARGE); + acoh6 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH4_HEADER_QNAME, TestHeaders.CONTENT_SMALL4); + + List<String> list1 = new ArrayList<String>(); + list1.add(acoh1); + list1.add(acoh2); + + List<String> list2 = new ArrayList<String>(); + list2.add(acoh3); + list2.add(acoh4); + + requestHeaders.put(TestHeaders.ACOH1_HEADER_QNAME, list1); + requestHeaders.put(TestHeaders.ACOH2_HEADER_QNAME, list2); + requestCtx.put(Constants.JAXWS_OUTBOUND_SOAP_HEADERS, requestHeaders); + } catch (Throwable e) { + fail(e.getMessage()); + return; + } + + // some handlers decrement the value, so we can confirm SOAP body manipulation does not corrupt the headers + int numOfHandlerHitsInFlow = 3; + + int intParam1 = 10; + int intParam2 = 10; + int total = proxy.headersHandler(intParam1, intParam2); + + assertEquals("Return value should be " + (intParam1 + intParam2 - numOfHandlerHitsInFlow) + " but was " + total , + (intParam1 + intParam2 - numOfHandlerHitsInFlow), + total); + TestLogger.logger.debug("Total (after handler manipulation) = " + total); + + /* + * I tried to give enough info below in the expected_calls list so you can tell what's + * being tested without having to look at handler code. All header manipulation is + * done by SOAPHeadersAdapter. + * + * TODO: I would very much like to have done some other means of + * header manipulation, but the Axis2 SAAJ module is lacking necessary implementation + * to do this with any reliability. + */ + + String log = readLogFile(); + String expected_calls = + // client outbound + "HeadersClientLogicalHandler HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh1+"\n" + + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh2+"\n" + + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh3+"\n" + + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh4+"\n" + + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh1+"\n" + + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh3+"\n" + + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh4+"\n" // message manipulated after this action + + "HeadersClientProtocolHandler HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh2+"\n" + + "HeadersClientProtocolHandler ADDED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler2 HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh2+"\n" + + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler GET_HEADERS\n" + + "HeadersClientProtocolHandler2 GET_HEADERS\n" + // server inbound + + "HeadersServerProtocolHandler GET_HEADERS\n" + + "HeadersServerProtocolHandler HANDLE_MESSAGE_INBOUND\n" + + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh2+"\n" + + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh5+"\n" + + "HeadersServerProtocolHandler REMOVED_HEADER "+acoh2+"\n" + + "HeadersServerProtocolHandler ADDED_HEADER "+acoh6+"\n" + + "HeadersServerLogicalHandler HANDLE_MESSAGE_INBOUND\n" + + "HeadersServerLogicalHandler CHECKED_HEADER "+acoh5+"\n" + + "HeadersServerLogicalHandler CHECKED_HEADER "+acoh6+"\n" + + "HeadersServerLogicalHandler REMOVED_HEADER "+acoh5+"\n" // message manipulated after this action + + "HeadersServerLogicalHandler REMOVED_HEADER "+acoh6+"\n" + // server outbound + + "HeadersServerLogicalHandler HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersServerLogicalHandler ADDED_HEADER "+acoh1+"\n" // message manipulated after this action + + "HeadersServerProtocolHandler HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh1+"\n" + + "HeadersServerProtocolHandler REMOVED_HEADER "+acoh1+"\n" + + "HeadersServerProtocolHandler ADDED_HEADER "+acoh5+"\n" + + "HeadersServerLogicalHandler CLOSE\n" + + "HeadersServerProtocolHandler CLOSE\n" + // client inbound + + "HeadersClientProtocolHandler2 HANDLE_MESSAGE_INBOUND\n" + + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler2 ADDED_HEADER "+acoh3+"\n" + + "HeadersClientProtocolHandler HANDLE_MESSAGE_INBOUND\n" + + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh3+"\n" + + "HeadersClientProtocolHandler REMOVED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler ADDED_HEADER "+acoh4+"\n" + + "HeadersClientLogicalHandler HANDLE_MESSAGE_INBOUND\n" + + "HeadersClientProtocolHandler2 CLOSE\n" + + "HeadersClientProtocolHandler CLOSE\n" + + "HeadersClientLogicalHandler CLOSE\n"; + + assertEquals(expected_calls, log); - } catch (Exception e) { - e.printStackTrace(); - TestLogger.logger.debug("ERROR", e); - fail(e.getMessage()); - } TestLogger.logger.debug("----------------------------------"); } - public void testHeadersHandlerAsyncCallback() { - try { - TestLogger.logger.debug("----------------------------------"); - TestLogger.logger.debug("test: " + getName()); - - HeadersHandlerService service = new HeadersHandlerService(); - HeadersHandlerPortType proxy = service.getHeadersHandlerPort(); - BindingProvider p = (BindingProvider) proxy; - Map<String, Object> requestCtx = p.getRequestContext(); - - requestCtx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, axisEndpoint); - - /* - * add several headers by way of HeadersAdapter property - */ - String acoh1, acoh2, acoh3, acoh4, acoh5, acoh6; - SOAPFactory sf = SOAPFactory.newInstance(); - try { - Map<QName, List<String>> requestHeaders = new HashMap<QName, List<String>>(); - - // QName used here should match the key for the list set on the requestCtx - acoh1 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH1_HEADER_QNAME, TestHeaders.CONTENT_SMALL1); - - // QName used here should match the key for the list set on the requestCtx - acoh2 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH1_HEADER_QNAME, TestHeaders.CONTENT_SMALL2); - - // QName used here should match the key for the list set on the requestCtx - acoh3 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH2_HEADER_QNAME, TestHeaders.CONTENT_SMALL3); - - // QName used here should match the key for the list set on the requestCtx - acoh4 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH2_HEADER_QNAME, TestHeaders.CONTENT_SMALL4); - - // create additional header strings that will need to be checked: - acoh5 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH3_HEADER_QNAME, TestHeaders.CONTENT_LARGE); - acoh6 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH4_HEADER_QNAME, TestHeaders.CONTENT_SMALL4); - - List<String> list1 = new ArrayList<String>(); - list1.add(acoh1); - list1.add(acoh2); - - List<String> list2 = new ArrayList<String>(); - list2.add(acoh3); - list2.add(acoh4); - - requestHeaders.put(TestHeaders.ACOH1_HEADER_QNAME, list1); - requestHeaders.put(TestHeaders.ACOH2_HEADER_QNAME, list2); - requestCtx.put(Constants.JAXWS_OUTBOUND_SOAP_HEADERS, requestHeaders); - } catch (Throwable e) { - fail(e.getMessage()); - return; - } - - // some handlers decrement the value, so we can confirm SOAP body manipulation does not corrupt the headers - int numOfHandlerHitsInFlow = 3; - - int intParam1 = 10; - int intParam2 = 10; - - HeadersHandlerAsyncCallback callback = new HeadersHandlerAsyncCallback(); - Future<?> future = proxy.headersHandlerAsync(intParam1, intParam2, callback); - - while (!future.isDone()) { - Thread.sleep(1000); - TestLogger.logger.debug("Async invocation incomplete"); - } + public void testHeadersHandlerAsyncCallback() throws Exception { + TestLogger.logger.debug("----------------------------------"); + TestLogger.logger.debug("test: " + getName()); - int total = callback.getResponseValue(); - - - assertEquals("Return value should be " + (intParam1 + intParam2 - numOfHandlerHitsInFlow) + " but was " + total , - (intParam1 + intParam2 - numOfHandlerHitsInFlow), - total); - TestLogger.logger.debug("Total (after handler manipulation) = " + total); - - /* - * I tried to give enough info below in the expected_calls list so you can tell what's - * being tested without having to look at handler code. All header manipulation is - * done by SOAPHeadersAdapter. - * - * TODO: I would very much like to have done some other means of - * header manipulation, but the Axis2 SAAJ module is lacking necessary implementation - * to do this with any reliability. - */ - - String log = readLogFile(); - String expected_calls = - // client outbound - "HeadersClientLogicalHandler HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh1+"\n" - + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh2+"\n" - + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh3+"\n" - + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh4+"\n" - + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh1+"\n" - + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh3+"\n" - + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh4+"\n" // message manipulated after this action - + "HeadersClientProtocolHandler HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh2+"\n" - + "HeadersClientProtocolHandler ADDED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler2 HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh2+"\n" - + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler GET_HEADERS\n" - + "HeadersClientProtocolHandler2 GET_HEADERS\n" - // server inbound - + "HeadersServerProtocolHandler GET_HEADERS\n" - + "HeadersServerProtocolHandler HANDLE_MESSAGE_INBOUND\n" - + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh2+"\n" - + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh5+"\n" - + "HeadersServerProtocolHandler REMOVED_HEADER "+acoh2+"\n" - + "HeadersServerProtocolHandler ADDED_HEADER "+acoh6+"\n" - + "HeadersServerLogicalHandler HANDLE_MESSAGE_INBOUND\n" - + "HeadersServerLogicalHandler CHECKED_HEADER "+acoh5+"\n" - + "HeadersServerLogicalHandler CHECKED_HEADER "+acoh6+"\n" - + "HeadersServerLogicalHandler REMOVED_HEADER "+acoh5+"\n" // message manipulated after this action - + "HeadersServerLogicalHandler REMOVED_HEADER "+acoh6+"\n" - // server outbound - + "HeadersServerLogicalHandler HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersServerLogicalHandler ADDED_HEADER "+acoh1+"\n" // message manipulated after this action - + "HeadersServerProtocolHandler HANDLE_MESSAGE_OUTBOUND\n" - + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh1+"\n" - + "HeadersServerProtocolHandler REMOVED_HEADER "+acoh1+"\n" - + "HeadersServerProtocolHandler ADDED_HEADER "+acoh5+"\n" - + "HeadersServerLogicalHandler CLOSE\n" - + "HeadersServerProtocolHandler CLOSE\n" - // client inbound - + "HeadersClientProtocolHandler2 HANDLE_MESSAGE_INBOUND\n" - + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler2 ADDED_HEADER "+acoh3+"\n" - + "HeadersClientProtocolHandler HANDLE_MESSAGE_INBOUND\n" - + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh3+"\n" - + "HeadersClientProtocolHandler REMOVED_HEADER "+acoh5+"\n" - + "HeadersClientProtocolHandler ADDED_HEADER "+acoh4+"\n" - + "HeadersClientLogicalHandler HANDLE_MESSAGE_INBOUND\n" - + "HeadersClientProtocolHandler2 CLOSE\n" - + "HeadersClientProtocolHandler CLOSE\n" - + "HeadersClientLogicalHandler CLOSE\n"; - - assertEquals(expected_calls, log); + HeadersHandlerService service = new HeadersHandlerService(); + HeadersHandlerPortType proxy = service.getHeadersHandlerPort(); + BindingProvider p = (BindingProvider) proxy; + Map<String, Object> requestCtx = p.getRequestContext(); + + requestCtx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, axisEndpoint); + + /* + * add several headers by way of HeadersAdapter property + */ + String acoh1, acoh2, acoh3, acoh4, acoh5, acoh6; + SOAPFactory sf = SOAPFactory.newInstance(); + + Map<QName, List<String>> requestHeaders = new HashMap<QName, List<String>>(); + + // QName used here should match the key for the list set on the requestCtx + acoh1 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH1_HEADER_QNAME, TestHeaders.CONTENT_SMALL1); + + // QName used here should match the key for the list set on the requestCtx + acoh2 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH1_HEADER_QNAME, TestHeaders.CONTENT_SMALL2); + + // QName used here should match the key for the list set on the requestCtx + acoh3 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH2_HEADER_QNAME, TestHeaders.CONTENT_SMALL3); + + // QName used here should match the key for the list set on the requestCtx + acoh4 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH2_HEADER_QNAME, TestHeaders.CONTENT_SMALL4); + + // create additional header strings that will need to be checked: + acoh5 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH3_HEADER_QNAME, TestHeaders.CONTENT_LARGE); + acoh6 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH4_HEADER_QNAME, TestHeaders.CONTENT_SMALL4); + + List<String> list1 = new ArrayList<String>(); + list1.add(acoh1); + list1.add(acoh2); + + List<String> list2 = new ArrayList<String>(); + list2.add(acoh3); + list2.add(acoh4); + + requestHeaders.put(TestHeaders.ACOH1_HEADER_QNAME, list1); + requestHeaders.put(TestHeaders.ACOH2_HEADER_QNAME, list2); + requestCtx.put(Constants.JAXWS_OUTBOUND_SOAP_HEADERS, requestHeaders); + + // some handlers decrement the value, so we can confirm SOAP body manipulation does not corrupt the headers + int numOfHandlerHitsInFlow = 3; + + int intParam1 = 10; + int intParam2 = 10; + + HeadersHandlerAsyncCallback callback = new HeadersHandlerAsyncCallback(); + Future<?> future = proxy.headersHandlerAsync(intParam1, intParam2, callback); + + while (!future.isDone()) { + Thread.sleep(1000); + TestLogger.logger.debug("Async invocation incomplete"); + } + + int total = callback.getResponseValue(); + + + assertEquals("Return value should be " + (intParam1 + intParam2 - numOfHandlerHitsInFlow) + " but was " + total , + (intParam1 + intParam2 - numOfHandlerHitsInFlow), + total); + TestLogger.logger.debug("Total (after handler manipulation) = " + total); + + /* + * I tried to give enough info below in the expected_calls list so you can tell what's + * being tested without having to look at handler code. All header manipulation is + * done by SOAPHeadersAdapter. + * + * TODO: I would very much like to have done some other means of + * header manipulation, but the Axis2 SAAJ module is lacking necessary implementation + * to do this with any reliability. + */ + + String log = readLogFile(); + String expected_calls = + // client outbound + "HeadersClientLogicalHandler HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh1+"\n" + + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh2+"\n" + + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh3+"\n" + + "HeadersClientLogicalHandler CHECKED_HEADER "+acoh4+"\n" + + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh1+"\n" + + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh3+"\n" + + "HeadersClientLogicalHandler REMOVED_HEADER "+acoh4+"\n" // message manipulated after this action + + "HeadersClientProtocolHandler HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh2+"\n" + + "HeadersClientProtocolHandler ADDED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler2 HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh2+"\n" + + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler GET_HEADERS\n" + + "HeadersClientProtocolHandler2 GET_HEADERS\n" + // server inbound + + "HeadersServerProtocolHandler GET_HEADERS\n" + + "HeadersServerProtocolHandler HANDLE_MESSAGE_INBOUND\n" + + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh2+"\n" + + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh5+"\n" + + "HeadersServerProtocolHandler REMOVED_HEADER "+acoh2+"\n" + + "HeadersServerProtocolHandler ADDED_HEADER "+acoh6+"\n" + + "HeadersServerLogicalHandler HANDLE_MESSAGE_INBOUND\n" + + "HeadersServerLogicalHandler CHECKED_HEADER "+acoh5+"\n" + + "HeadersServerLogicalHandler CHECKED_HEADER "+acoh6+"\n" + + "HeadersServerLogicalHandler REMOVED_HEADER "+acoh5+"\n" // message manipulated after this action + + "HeadersServerLogicalHandler REMOVED_HEADER "+acoh6+"\n" + // server outbound + + "HeadersServerLogicalHandler HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersServerLogicalHandler ADDED_HEADER "+acoh1+"\n" // message manipulated after this action + + "HeadersServerProtocolHandler HANDLE_MESSAGE_OUTBOUND\n" + + "HeadersServerProtocolHandler CHECKED_HEADER "+acoh1+"\n" + + "HeadersServerProtocolHandler REMOVED_HEADER "+acoh1+"\n" + + "HeadersServerProtocolHandler ADDED_HEADER "+acoh5+"\n" + + "HeadersServerLogicalHandler CLOSE\n" + + "HeadersServerProtocolHandler CLOSE\n" + // client inbound + + "HeadersClientProtocolHandler2 HANDLE_MESSAGE_INBOUND\n" + + "HeadersClientProtocolHandler2 CHECKED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler2 ADDED_HEADER "+acoh3+"\n" + + "HeadersClientProtocolHandler HANDLE_MESSAGE_INBOUND\n" + + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler CHECKED_HEADER "+acoh3+"\n" + + "HeadersClientProtocolHandler REMOVED_HEADER "+acoh5+"\n" + + "HeadersClientProtocolHandler ADDED_HEADER "+acoh4+"\n" + + "HeadersClientLogicalHandler HANDLE_MESSAGE_INBOUND\n" + + "HeadersClientProtocolHandler2 CLOSE\n" + + "HeadersClientProtocolHandler CLOSE\n" + + "HeadersClientLogicalHandler CLOSE\n"; + + assertEquals(expected_calls, log); - } catch (Exception e) { - e.printStackTrace(); - fail(e.getMessage()); - } TestLogger.logger.debug("----------------------------------"); }