Java Examples for org.springframework.ws.client.core.WebServiceMessageCallback

The following java examples will help you to understand the usage of org.springframework.ws.client.core.WebServiceMessageCallback. These source code samples are taken from different open source projects.

Example 1
Project: BlackboardVCPortlet-master  File: SASWebServiceTemplate.java View source code
@Override
public Object marshalSendAndReceiveToSAS(final String soapAction, final Object requestPayload) {
    return marshalSendAndReceive(requestPayload, new WebServiceMessageCallback() {

        @Override
        public void doWithMessage(WebServiceMessage webServiceMessage) throws IOException, TransformerException {
            if (webServiceMessage instanceof SaajSoapMessage) {
                final SaajSoapMessage casted = (SaajSoapMessage) webServiceMessage;
                casted.setSoapAction(soapAction);
                QName qName = new QName(elluminateMarshller.getContextPath(), "BasicAuth", "sas");
                try {
                    SOAPElement baHeader = casted.getSaajMessage().getSOAPHeader().addChildElement(qName);
                    baHeader.addChildElement(new QName("sas", "Name")).addTextNode(username);
                    baHeader.addChildElement(new QName("sas", "Password")).addTextNode(password);
                } catch (Exception e) {
                    logger.error("Error creating SOAPHeader: ", e);
                }
            }
        }
    });
}
Example 2
Project: smock-master  File: AbstractMockWebServiceServerTest.java View source code
protected WebServiceMessage sendMessage(String uri, final String request) {
    WebServiceTemplate template = new WebServiceTemplate();
    template.afterPropertiesSet();
    WebServiceMessage response = template.sendAndReceive(uri, new WebServiceMessageCallback() {

        public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
            transform(loadMessage(request), message.getPayloadResult());
        }
    }, new WebServiceMessageExtractor<WebServiceMessage>() {

        public WebServiceMessage extractData(WebServiceMessage message) throws IOException, TransformerException {
            return message;
        }
    });
    return response;
}
Example 3
Project: spring-ws-samples-master  File: AxiomMtomClient.java View source code
private void store(final String path) {
    stopWatch.start("store");
    getWebServiceTemplate().sendAndReceive(new WebServiceMessageCallback() {

        public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
            AxiomSoapMessage soapMessage = (AxiomSoapMessage) message;
            SOAPMessage axiomMessage = soapMessage.getAxiomMessage();
            SOAPFactory factory = (SOAPFactory) axiomMessage.getOMFactory();
            SOAPBody body = axiomMessage.getSOAPEnvelope().getBody();
            OMNamespace ns = factory.createOMNamespace("http://www.springframework.org/spring-ws/samples/mtom", "tns");
            OMElement storeImageRequestElement = factory.createOMElement("StoreImageRequest", ns);
            body.addChild(storeImageRequestElement);
            OMElement nameElement = factory.createOMElement("name", ns);
            storeImageRequestElement.addChild(nameElement);
            nameElement.setText(StringUtils.getFilename(path));
            OMElement imageElement = factory.createOMElement("image", ns);
            storeImageRequestElement.addChild(imageElement);
            DataSource dataSource = new FileDataSource(path);
            DataHandler dataHandler = new DataHandler(dataSource);
            OMText text = factory.createOMText(dataHandler, true);
            imageElement.addChild(text);
            OMOutputFormat outputFormat = new OMOutputFormat();
            outputFormat.setSOAP11(true);
            outputFormat.setDoOptimize(true);
            soapMessage.setOutputFormat(outputFormat);
        }
    }, new WebServiceMessageExtractor() {

        public Object extractData(WebServiceMessage message) throws IOException, TransformerException {
            return null;
        }
    });
    stopWatch.stop();
}
Example 4
Project: camel-spring-ws-master  File: SpringWebserviceProducer.java View source code
public void process(Exchange exchange) throws Exception {
    // Let Camel TypeConverter hierarchy handle the conversion of XML messages to Source objects
    Source sourcePayload = exchange.getIn().getMandatoryBody(Source.class);
    // Extract optional headers
    String endpointUri = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_ENDPOINT_URI, String.class);
    String soapAction = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_SOAP_ACTION, String.class);
    URI wsAddressingAction = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_ADDRESSING_ACTION, URI.class);
    WebServiceMessageCallback callback = new DefaultWebserviceMessageCallback(soapAction, wsAddressingAction);
    Object body = null;
    if (endpointUri != null) {
        body = endpoint.getConfiguration().getWebServiceTemplate().sendSourceAndReceive(endpointUri, sourcePayload, callback, sourceExtractor);
    } else {
        body = endpoint.getConfiguration().getWebServiceTemplate().sendSourceAndReceive(sourcePayload, callback, sourceExtractor);
    }
    exchange.getOut().setBody(body);
}
Example 5
Project: AQL_sms_soap_api-master  File: AqlMTSoapClient.java View source code
/**
     * <p>Set the callback url in the message before sending.</p>
     *
     * @param mTMessage
     * @return Response
     * @throws com.aql.message.AqlException if the message was not successfully processed by the Aql SoapSendSms service
     */
public MTResponse sendMTMessage(final MTMessage mTMessage) throws AqlException {
    if (logger.isDebugEnabled())
        logger.debug("AqlMTSmsSoapClient is sending an MT Message with id " + mTMessage.getId());
    mTMessage.setCallbackUrl(callbackUrl);
    MTResponse response = (MTResponse) webServiceTemplate.marshalSendAndReceive(mTMessage, new WebServiceMessageCallback() {

        /**
             * Add the header before sending.
             *
             * @param webServiceMessage
             */
        public void doWithMessage(WebServiceMessage webServiceMessage) {
            try {
                SoapMessage soapMessage = (SoapMessage) webServiceMessage;
                SoapHeader soapHeader = soapMessage.getSoapHeader();
                StringSource headerSource = new StringSource(headerBuffer.toString());
                Transformer transformer = TransformerFactory.newInstance().newTransformer();
                transformer.transform(headerSource, soapHeader.getResult());
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    });
    if (!response.getResponseCode().equals(MTResponse.OK))
        throw new AqlException("message send error " + response.getDescription());
    if (logger.isDebugEnabled())
        logger.debug("Aql soap api responded successfully - " + response.getDescription());
    return response;
}
Example 6
Project: exchange-ws-client-master  File: ExchangeWebServicesClient.java View source code
/**
	 * 
	 * @param request
	 * @return
	 */
protected Object internalInvoke(Object request, WebServiceMessageCallback callback) {
    try {
        Object result;
        log.trace("ExchangeRequest=" + request);
        if (null == callback) {
            result = getWebServiceTemplate().marshalSendAndReceive(request);
        } else {
            result = getWebServiceTemplate().marshalSendAndReceive(request, callback);
        }
        return result;
    } catch (SoapFaultClientException e) {
        if (e.getMessage().equals("The impersonation principal name is invalid.")) {
            throw new ExchangeInvalidUPNRuntimeException(e);
        }
        if (log.isTraceEnabled()) {
            log.error("SoapFaultClientException encountered for " + request + ".  " + e.getMessage());
        } else {
            log.error("SoapFaultClientException encountered " + e.getMessage());
        }
        throw new ExchangeWebServicesRuntimeException(e);
    }
}
Example 7
Project: j-road-master  File: StandardXRoadConsumer.java View source code
@SuppressWarnings({ "unchecked", "rawtypes" })
private <I, O> XRoadMessage<O> sendRealRequest(XRoadMessage<I> input, XRoadServiceConfiguration xroadServiceConfiguration, CustomCallback callback, CustomExtractor extractor) throws XRoadServiceConsumptionException {
    try {
        // First find all Objects.
        for (XmlObject attachmentObj : XmlBeansUtil.getAllObjects((XmlObject) input.getContent())) {
            // Introspect all methods, and find the ones that were generated during instrumentation
            for (Method method : XmlBeansUtil.getSwaRefGetters(attachmentObj)) {
                // Get the datahandler for the attachment
                DataHandler handler = (DataHandler) method.invoke(attachmentObj);
                if (handler != null) {
                    String field = XmlBeansUtil.getFieldName(method);
                    // Check whether the user has set a custom CID, if not, generate a random one and set it
                    String cid = XmlBeansUtil.getCid(attachmentObj, field);
                    if (cid == null) {
                        cid = AttachmentUtil.getUniqueCid();
                    } else {
                        cid = cid.startsWith("cid:") ? cid.substring(4) : cid;
                    }
                    XmlBeansUtil.setCid(attachmentObj, field, "cid:" + cid);
                    // Add a new attachment to the list
                    input.getAttachments().add(new XRoadAttachment(cid, handler));
                }
            }
        }
        XmlBeansXRoadMetadata curdata = metadata.get(xroadServiceConfiguration.getWsdlDatabase().toLowerCase() + xroadServiceConfiguration.getMethod().toLowerCase());
        if (curdata == null) {
            throw new IllegalStateException(String.format("Could not find metadata for %s.%s! Most likely the method name has been specified incorrectly.", xroadServiceConfiguration.getWsdlDatabase().toLowerCase(), xroadServiceConfiguration.getMethod().toLowerCase()));
        }
        WebServiceMessageCallback originalCallback = getNewConsumerCallback(input, xroadServiceConfiguration, curdata);
        WebServiceMessageExtractor originalExtractor = new StandardXRoadConsumerMessageExtractor(curdata);
        if (callback != null) {
            callback.setOriginalCallback(originalCallback);
        }
        WebServiceMessageCallback finalCallback = callback == null ? originalCallback : callback;
        if (extractor != null) {
            extractor.setOriginalExtractor(originalExtractor);
        }
        WebServiceMessageExtractor finalExtractor = extractor == null ? originalExtractor : extractor;
        return (XRoadMessage<O>) getWebServiceTemplate().sendAndReceive(xroadServiceConfiguration.getSecurityServer(), finalCallback, finalExtractor);
    } catch (Exception e) {
        e.printStackTrace();
        XRoadServiceConsumptionException consumptionException = resolveException(e, xroadServiceConfiguration);
        if (consumptionException != null) {
            throw consumptionException;
        }
        throw new NestableRuntimeException(e);
    }
}
Example 8
Project: spring-integration-master  File: WebServiceOutboundGatewayParserTests.java View source code
@Test
public void simpleGatewayWithCustomRequestCallback() {
    AbstractEndpoint endpoint = this.context.getBean("gatewayWithCustomRequestCallback", AbstractEndpoint.class);
    assertEquals(EventDrivenConsumer.class, endpoint.getClass());
    Object gateway = new DirectFieldAccessor(endpoint).getPropertyValue("handler");
    assertEquals(SimpleWebServiceOutboundGateway.class, gateway.getClass());
    DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
    WebServiceMessageCallback callback = (WebServiceMessageCallback) context.getBean("requestCallback");
    assertEquals(callback, accessor.getPropertyValue("requestCallback"));
}
Example 9
Project: spring-ws-master  File: MockWebServiceServerTest.java View source code
@Test
public void soapHeaderMatch() throws Exception {
    final QName soapHeaderName = new QName("http://example.com", "mySoapHeader");
    server.expect(soapHeader(soapHeaderName));
    template.sendSourceAndReceiveToResult(new StringSource("<request xmlns='http://example.com'/>"), new WebServiceMessageCallback() {

        public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
            SoapMessage soapMessage = (SoapMessage) message;
            soapMessage.getSoapHeader().addHeaderElement(soapHeaderName);
        }
    }, new StringResult());
}
Example 10
Project: CalendarPortlet-master  File: ExchangeCalendarAdapter.java View source code
/**
   * Retrieve a set of CalendarEvents from the Exchange server for the specified period and email
   * address. An EWS message is constructed that looks something like the following. The <code>
   * ExchangeImpersonation</code> element is optional based on whether Exchange Impersonation is
   * enabled:
   *
   * <p>
   *
   * <pre>
   * <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   *     <SOAP-ENV:Header>
   *         <ns3:RequestServerVersion xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/types" Version="Exchange2007_SP1"/>
   *         <t:ExchangeImpersonation xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
   *             <t:ConnectingSID>
   *                 <t:PrincipalName>o365st19@ed.ac.uk</t:PrincipalName>
   *             </t:ConnectingSID>
   *         </t:ExchangeImpersonation>
   *     <ns3:RequestServerVersion xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/types" Version="requestServerVersion"/><t:ExchangeImpersonation xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><t:ConnectingSID><t:PrincipalName>impersonatedUser@ed.ac.uk</t:PrincipalName></t:ConnectingSID></t:ExchangeImpersonation></SOAP-ENV:Header>
   *     <SOAP-ENV:Body>
   *         <ns2:FindItem xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/types" Traversal="Shallow">
   *             <ns2:ItemShape>
   *                 <ns3:BaseShape>AllProperties</ns3:BaseShape>
   *             </ns2:ItemShape>
   *             <ns2:ParentFolderIds>
   *                 <ns3:DistinguishedFolderId Id="inbox"/>
   *             </ns2:ParentFolderIds>
   *         </ns2:FindItem>
   *     </SOAP-ENV:Body>
   * </SOAP-ENV:Envelope>
   * </pre>
   *
   * @param request Portlet request
   * @param calendar calendar configuration
   * @param interval interval to retrieve events for
   * @param emailAddress email address of the user to retrieve events for
   * @return Set of calendar events from the Exchange Server.
   * @throws CalendarException
   */
private Set<VEvent> retrieveExchangeEvents(PortletRequest request, CalendarConfiguration calendar, Interval interval, String emailAddress) throws CalendarException {
    log.debug("Retrieving exchange events for period: {}", interval);
    Set<VEvent> events = new HashSet<VEvent>();
    try {
        // construct the SOAP request object to use
        GetUserAvailabilityRequest soapRequest = getAvailabilityRequest(interval, emailAddress);
        final WebServiceMessageCallback customCallback = new ExchangeWebServiceCallBack(AVAILABILITY_SOAP_ACTION, requestServerVersion, credentialsService.getImpersonatedAccountId(request));
        // use the request to retrieve data from the Exchange server
        GetUserAvailabilityResponse response = (GetUserAvailabilityResponse) webServiceOperations.marshalSendAndReceive(soapRequest, customCallback);
        // for each FreeBusy response, parse the list of events
        for (FreeBusyResponseType freeBusy : response.getFreeBusyResponseArray().getFreeBusyResponses()) {
            ArrayOfCalendarEvent eventArray = freeBusy.getFreeBusyView().getCalendarEventArray();
            if (eventArray != null && eventArray.getCalendarEvents() != null) {
                List<com.microsoft.exchange.types.CalendarEvent> msEvents = eventArray.getCalendarEvents();
                for (com.microsoft.exchange.types.CalendarEvent msEvent : msEvents) {
                    // add the new event to the list
                    VEvent event = getInternalEvent(calendar.getId(), msEvent);
                    events.add(event);
                }
            }
        }
    } catch (DatatypeConfigurationException e) {
        throw new CalendarException(e);
    }
    return events;
}
Example 11
Project: email-preview-master  File: ExchangeAccountDaoImpl.java View source code
// ----------------------------------------------------------
// common send message and parse response
// ----------------------------------------------------------
private BaseResponseMessageType sendSoapRequest(BaseRequestType soapRequest, String soapAction, MailStoreConfiguration config) {
    String uri = autoDiscoveryDao.getEndpointUri(config);
    try {
        final WebServiceMessageCallback actionCallback = new SoapActionCallback(soapAction);
        final WebServiceMessageCallback customCallback = new WebServiceMessageCallback() {

            @Override
            public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
                actionCallback.doWithMessage(message);
                SoapMessage soap = (SoapMessage) message;
                SoapHeaderElement version = soap.getEnvelope().getHeader().addHeaderElement(REQUEST_SERVER_VERSION_QNAME);
                version.addAttribute(new QName("Version"), "Exchange2007_SP1");
            }
        };
        if (log.isDebugEnabled()) {
            StringResult message = new StringResult();
            try {
                marshaller.marshal(soapRequest, message);
                log.debug("Attempting to send SOAP request to {}\nSoap Action: {}\nSoap message body" + " (not exact, log org.apache.http.wire to see actual message):\n{}", uri, soapAction, message);
            } catch (IOException ex) {
                log.debug("IOException attempting to display soap response", ex);
            }
        }
        // use the request to retrieve data from the Exchange server
        BaseResponseMessageType response = (BaseResponseMessageType) webServiceOperations.marshalSendAndReceive(uri, soapRequest, customCallback);
        if (log.isDebugEnabled()) {
            StringResult messageResponse = new StringResult();
            try {
                marshaller.marshal(response, messageResponse);
                log.debug("Soap response body (not exact, log org.apache.http.wire to see actual message):\n{}", messageResponse);
            } catch (IOException ex) {
                log.debug("IOException attempting to display soap response", ex);
            }
        }
        return response;
    } catch (WebServiceClientException e) {
        throw new EmailPreviewException(e);
    }
//todo figure out if we can catch authentication exceptions to return them separate. Useful?
}
Example 12
Project: ws-proxy-master  File: ForwardingClient.java View source code
public WebServiceMessage forward(final QName webServiceIdentifier, final WebServiceMessage webServiceMessage, final HttpServletRequest httpServletRequest) {
    final SaajSoapMessage responseMessage = (SaajSoapMessage) webServiceMessageFactory.createWebServiceMessage();
    String targetUrl = calculateTargetUrl(webServiceIdentifier, httpServletRequest);
    WebServiceTemplate webServiceTemplate = createAndConfigureWebServiceTemplate(responseMessage, webServiceIdentifier, httpServletRequest);
    webServiceTemplate.sendAndReceive(targetUrl, new WebServiceMessageCallback() {

        @Override
        public void doWithMessage(WebServiceMessage message) throws IOException {
            SaajSoapMessage saajSoapMessage = ((SaajSoapMessage) message);
            saajSoapMessage.setSaajMessage(((SaajSoapMessage) webServiceMessage).getSaajMessage());
            new SoapActionCallback(httpServletRequest.getHeader(SOAP_ACTION_HEADER)).doWithMessage(message);
        }
    }, new WebServiceMessageCallback() {

        @Override
        public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
            try {
                responseMessage.getSaajMessage().getSOAPPart().setContent(((SaajSoapMessage) message).getEnvelope().getSource());
            } catch (SOAPException soapException) {
                throw new RuntimeException(soapException);
            }
        }
    });
    LOG.debug("Forwarding (" + targetUrl + ") done.");
    return responseMessage;
}
Example 13
Project: camel-master  File: SpringWebserviceProducer.java View source code
public void process(Exchange exchange) throws Exception {
    // Let Camel TypeConverter hierarchy handle the conversion of XML messages to Source objects
    Source sourcePayload = exchange.getIn().getMandatoryBody(Source.class);
    // Extract optional headers
    String endpointUriHeader = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_ENDPOINT_URI, String.class);
    String soapActionHeader = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_SOAP_ACTION, String.class);
    URI wsAddressingActionHeader = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_ADDRESSING_ACTION, URI.class);
    URI wsReplyToHeader = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_ADDRESSING_PRODUCER_REPLY_TO, URI.class);
    URI wsFaultToHeader = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_ADDRESSING_PRODUCER_FAULT_TO, URI.class);
    Source soapHeaderSource = exchange.getIn().getHeader(SpringWebserviceConstants.SPRING_WS_SOAP_HEADER, Source.class);
    WebServiceMessageCallback callback = new DefaultWebserviceMessageCallback(soapActionHeader, wsAddressingActionHeader, wsReplyToHeader, wsFaultToHeader, soapHeaderSource, getEndpoint().getConfiguration(), exchange);
    if (endpointUriHeader == null) {
        endpointUriHeader = getEndpoint().getConfiguration().getWebServiceTemplate().getDefaultUri();
    }
    getEndpoint().getConfiguration().getWebServiceTemplate().sendAndReceive(endpointUriHeader, new WebServiceMessageCallback() {

        @Override
        public void doWithMessage(WebServiceMessage requestMessage) throws IOException, TransformerException {
            XML_CONVERTER.toResult(sourcePayload, requestMessage.getPayloadResult());
            callback.doWithMessage(requestMessage);
        }
    }, new WebServiceMessageCallback() {

        @Override
        public void doWithMessage(WebServiceMessage responseMessage) throws IOException, TransformerException {
            SoapMessage soapMessage = (SoapMessage) responseMessage;
            if (ExchangeHelper.isOutCapable(exchange)) {
                exchange.getOut().copyFromWithNewBody(exchange.getIn(), soapMessage.getPayloadSource());
                populateHeaderAndAttachmentsFromResponse(exchange.getOut(), soapMessage);
            } else {
                exchange.getIn().setBody(soapMessage.getPayloadSource());
                populateHeaderAndAttachmentsFromResponse(exchange.getIn(), soapMessage);
            }
        }
    });
}
Example 14
Project: Carolina-Digital-Repository-master  File: AccessClient.java View source code
WebServiceMessageCallback callback() {
    return new WebServiceMessageCallback() {

        @Override
        public void doWithMessage(WebServiceMessage message) {
            ((SoapMessage) message).setSoapAction(uri);
        }
    };
}