@Override protected Map<String, Object> extractStandardHeaders(SoapMessage source) { final String soapAction = source.getSoapAction(); if (StringUtils.hasText(soapAction)) { Map<String, Object> headers = new HashMap<String, Object>(1); headers.put(WebServiceHeaders.SOAP_ACTION, soapAction); return headers; } else { return Collections.emptyMap(); } }
@Override protected void populateStandardHeaders(Map<String, Object> headers, SoapMessage target) { String soapAction = getHeaderIfAvailable(headers, WebServiceHeaders.SOAP_ACTION, String.class); if (StringUtils.hasText(soapAction)) { target.setSoapAction(soapAction); } else if (!StringUtils.hasText(target.getSoapAction())) { target.setSoapAction("\"\""); } }
@Test public void testExtractStandardHeadersNullSoapAction() { DefaultSoapHeaderMapper mapper = new DefaultSoapHeaderMapper(); SoapMessage soapMessage = mock(SoapMessage.class); when(soapMessage.getSoapAction()).thenReturn(null); assertTrue(mapper.extractStandardHeaders(soapMessage).isEmpty()); }
@Test public void testExtractStandardHeadersEmptySoapAction() { DefaultSoapHeaderMapper mapper = new DefaultSoapHeaderMapper(); SoapMessage soapMessage = mock(SoapMessage.class); when(soapMessage.getSoapAction()).thenReturn(""); assertTrue(mapper.extractStandardHeaders(soapMessage).isEmpty()); }
@Test public void testExtractStandardHeadersNonEmptySoapAction() { DefaultSoapHeaderMapper mapper = new DefaultSoapHeaderMapper(); SoapMessage soapMessage = mock(SoapMessage.class); when(soapMessage.getSoapAction()).thenReturn("foo"); Map<String, Object> standardHeaders = mapper.toHeadersFromRequest(soapMessage); assertEquals(1, standardHeaders.size()); assertTrue(standardHeaders.containsKey(WebServiceHeaders.SOAP_ACTION)); assertEquals("foo", standardHeaders.get(WebServiceHeaders.SOAP_ACTION)); }
@Test // INT-1051 public void soapActionAndCustomCallback() { String uri = "http://www.example.org"; SimpleWebServiceOutboundGateway gateway = new SimpleWebServiceOutboundGateway(new TestDestinationProvider(uri)); final AtomicReference<String> soapActionFromCallback = new AtomicReference<String>(); gateway.setRequestCallback(message -> { SoapMessage soapMessage = (SoapMessage) message; soapActionFromCallback.set(soapMessage.getSoapAction()); }); gateway.setBeanFactory(mock(BeanFactory.class)); gateway.afterPropertiesSet(); String soapActionHeaderValue = "testAction"; String request = "<test>foo</test>"; try { gateway.handleMessage(MessageBuilder.withPayload(request) .setHeader(WebServiceHeaders.SOAP_ACTION, soapActionHeaderValue) .build()); fail("Expected MessageHandlingException"); } catch (MessageHandlingException e) { // expected } assertNotNull(soapActionFromCallback.get()); assertEquals("\"" + soapActionHeaderValue + "\"", soapActionFromCallback.get()); }
@Override protected boolean shouldIntercept(WebServiceMessage request, Object endpoint) { if (request instanceof SoapMessage) { String soapAction = ((SoapMessage) request).getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { soapAction = soapAction.substring(1, soapAction.length() - 1); } return this.soapAction.equals(soapAction); } else { return false; } } }
@Override protected boolean shouldIntercept(WebServiceMessage request, Object endpoint) { if (request instanceof SoapMessage) { String soapAction = ((SoapMessage) request).getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { soapAction = soapAction.substring(1, soapAction.length() - 1); } return this.soapAction.equals(soapAction); } else { return false; } } }
@Override protected boolean shouldIntercept(WebServiceMessage request, Object endpoint) { if (request instanceof SoapMessage) { String soapAction = ((SoapMessage) request).getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { soapAction = soapAction.substring(1, soapAction.length() - 1); } return this.soapAction.equals(soapAction); } else { return false; } } }
@Override protected boolean shouldIntercept(WebServiceMessage request, Object endpoint) { if (request instanceof SoapMessage) { String soapAction = ((SoapMessage) request).getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { soapAction = soapAction.substring(1, soapAction.length() - 1); } return this.soapAction.equals(soapAction); } else { return false; } } }
private String getSoapAction(MessageContext messageContext) { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage)messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.startsWith(DOUBLE_QUOTE) && soapAction.endsWith(DOUBLE_QUOTE)) { return soapAction.substring(1, soapAction.length() - 1); } return soapAction; } return null; }
@Override protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage) messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { return soapAction.substring(1, soapAction.length() - 1); } else { return soapAction; } } else { return null; } }
@Override protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage) messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { return soapAction.substring(1, soapAction.length() - 1); } else { return soapAction; } } else { return null; } }
protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage) messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { return soapAction.substring(1, soapAction.length() - 1); } else { return soapAction; } } else { return null; } }
@Override protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage) messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { return soapAction.substring(1, soapAction.length() - 1); } else { return soapAction; } } else { return null; } }
@Override protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage) messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { return soapAction.substring(1, soapAction.length() - 1); } else { return soapAction; } } else { return null; } }
@Override protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage) messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { return soapAction.substring(1, soapAction.length() - 1); } else { return soapAction; } } else { return null; } }
@Override protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage) messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { return soapAction.substring(1, soapAction.length() - 1); } else { return soapAction; } } else { return null; } }
@Override protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception { if (messageContext.getRequest() instanceof SoapMessage) { SoapMessage request = (SoapMessage) messageContext.getRequest(); String soapAction = request.getSoapAction(); if (StringUtils.hasLength(soapAction) && soapAction.charAt(0) == '"' && soapAction.charAt(soapAction.length() - 1) == '"') { return soapAction.substring(1, soapAction.length() - 1); } else { return soapAction; } } else { return null; } }
@SoapAction(value = "http://example.com/TicketAgent/listFlights") @ResponsePayload public JAXBElement<TFlightsResponse> listFlights( @RequestPayload JAXBElement<TListFlights> request, MessageContext messageContext) { // access the SOAPAction value WebServiceMessage webServiceMessage = messageContext.getRequest(); SoapMessage soapMessage = (SoapMessage) webServiceMessage; LOGGER.info("SOAPAction header: {}", soapMessage.getSoapAction()); ObjectFactory factory = new ObjectFactory(); TFlightsResponse tFlightsResponse = factory.createTFlightsResponse(); tFlightsResponse.getFlightNumber().add(BigInteger.valueOf(101)); return factory.createListFlightsResponse(tFlightsResponse); } }