Search in sources :

Example 1 with SoapMessageDecoder

use of ee.ria.xroad.common.message.SoapMessageDecoder in project X-Road by nordic-institute.

the class ManagementRequestHandler method readRequest.

/**
 * Reads management requests from input stream.
 *
 * @param contentType            expected content type of the stream
 * @param inputStream            the input stream
 * @param clientRegRequestStatusWrapper helper for processing clientRegRequests
 * @return management request SOAP message
 * @throws Exception in case of any errors
 */
public static SoapMessageImpl readRequest(String contentType, InputStream inputStream, ClientRegRequestStatusWrapper clientRegRequestStatusWrapper) throws Exception {
    log.info("readRequest(contentType={})", contentType);
    DecoderCallback cb = new DecoderCallback();
    SoapMessageDecoder decoder = new SoapMessageDecoder(contentType, cb);
    decoder.parse(inputStream);
    clientRegRequestStatusWrapper.setClientRegRequestSignedAndVerified(cb.getClientRegRequestSignedAndVerified());
    return cb.getSoapMessage();
}
Also used : SoapMessageDecoder(ee.ria.xroad.common.message.SoapMessageDecoder)

Example 2 with SoapMessageDecoder

use of ee.ria.xroad.common.message.SoapMessageDecoder in project X-Road by nordic-institute.

the class QueryRequestProcessor method process.

/**
 * Processes the incoming message.
 * @throws Exception in case of any errors
 */
void process() throws Exception {
    try (QueryRequestHandler handler = new QueryRequestHandler()) {
        SoapMessageDecoder soapMessageDecoder = new SoapMessageDecoder(servletRequest.getContentType(), handler, new SoapParserImpl());
        soapMessageDecoder.parse(servletRequest.getInputStream());
    }
}
Also used : SoapParserImpl(ee.ria.xroad.common.message.SoapParserImpl) SoapMessageDecoder(ee.ria.xroad.common.message.SoapMessageDecoder)

Example 3 with SoapMessageDecoder

use of ee.ria.xroad.common.message.SoapMessageDecoder in project X-Road by nordic-institute.

the class ServerMessageProcessor method parseResponse.

private void parseResponse(ServiceHandler handler) throws Exception {
    log.trace("parseResponse()");
    preprocess();
    // Preserve the original content type of the service response
    servletResponse.addHeader(HEADER_ORIGINAL_CONTENT_TYPE, handler.getResponseContentType());
    try (SoapMessageHandler messageHandler = new SoapMessageHandler()) {
        SoapMessageDecoder soapMessageDecoder = new SoapMessageDecoder(handler.getResponseContentType(), messageHandler, new ResponseSoapParserImpl());
        soapMessageDecoder.parse(handler.getResponseContent());
    } catch (Exception ex) {
        throw translateException(ex).withPrefix(X_SERVICE_FAILED_X);
    }
    // to the client.
    if (responseFault != null) {
        throw responseFault.toCodedException();
    }
    // from server?), it is an error instead.
    if (responseSoap == null) {
        throw new CodedException(X_INVALID_MESSAGE, "No response message received from service").withPrefix(X_SERVICE_FAILED_X);
    }
    updateOpMonitoringDataByResponse();
}
Also used : CodedException(ee.ria.xroad.common.CodedException) SoapMessageDecoder(ee.ria.xroad.common.message.SoapMessageDecoder) URISyntaxException(java.net.URISyntaxException) ErrorCodes.translateException(ee.ria.xroad.common.ErrorCodes.translateException) CodedException(ee.ria.xroad.common.CodedException)

Example 4 with SoapMessageDecoder

use of ee.ria.xroad.common.message.SoapMessageDecoder in project X-Road by nordic-institute.

the class ClientMessageProcessor method handleSoap.

public void handleSoap() {
    try (SoapMessageHandler handler = new SoapMessageHandler()) {
        SoapMessageDecoder soapMessageDecoder = new SoapMessageDecoder(servletRequest.getContentType(), handler, new RequestSoapParserImpl());
        try {
            originalSoapAction = validateSoapActionHeader(servletRequest.getHeader("SOAPAction"));
            soapMessageDecoder.parse(servletRequest.getInputStream());
        } catch (Exception ex) {
            throw new ClientException(translateException(ex));
        }
    } catch (Throwable ex) {
        setError(ex);
    } finally {
        continueProcessing();
        continueReadingResponse();
    }
}
Also used : SoapMessageDecoder(ee.ria.xroad.common.message.SoapMessageDecoder) ErrorCodes.translateException(ee.ria.xroad.common.ErrorCodes.translateException) CodedException(ee.ria.xroad.common.CodedException)

Example 5 with SoapMessageDecoder

use of ee.ria.xroad.common.message.SoapMessageDecoder in project X-Road by nordic-institute.

the class QueryRequestHandlerTest method handleOperationalDataRequest.

/**
 * Ensure that an operational data response contains the required attachment
 * that is correctly referenced from within the SOAP body.
 */
@Test
public void handleOperationalDataRequest() throws Exception {
    InputStream is = new FileInputStream(OPERATIONAL_DATA_REQUEST);
    SoapParser parser = new SoapParserImpl();
    SoapMessageImpl request = (SoapMessageImpl) parser.parse(MimeTypes.TEXT_XML_UTF8, is);
    QueryRequestHandler handler = new OperationalDataRequestHandler() {

        @Override
        protected OperationalDataRecords getOperationalDataRecords(ClientId filterByClient, long recordsFrom, long recordsTo, ClientId filterByServiceProvider, Set<String> outputFields) {
            return new OperationalDataRecords(Collections.emptyList());
        }

        @Override
        protected ClientId getClientForFilter(ClientId clientId, SecurityServerId serverId) throws Exception {
            return null;
        }
    };
    OutputStream out = new ByteArrayOutputStream();
    handler.handle(request, out, ct -> testContentType = ct);
    String baseContentType = MimeUtils.getBaseContentType(testContentType);
    assertEquals(MimeTypes.MULTIPART_RELATED, baseContentType);
    SoapMessageDecoder decoder = new SoapMessageDecoder(testContentType, new SoapMessageDecoder.Callback() {

        @Override
        public void soap(SoapMessage message, Map<String, String> headers) throws Exception {
            assertEquals("cid:" + OperationalDataRequestHandler.CID, findRecordsContentId(message));
        }

        @Override
        public void attachment(String contentType, InputStream content, Map<String, String> additionalHeaders) throws Exception {
            String expectedCid = "<" + OperationalDataRequestHandler.CID + ">";
            assertEquals(expectedCid, additionalHeaders.get("content-id"));
        }

        @Override
        public void onCompleted() {
        // Do nothing.
        }

        @Override
        public void onError(Exception t) throws Exception {
            throw t;
        }

        @Override
        public void fault(SoapFault fault) throws Exception {
            throw fault.toCodedException();
        }
    });
    decoder.parse(IOUtils.toInputStream(out.toString()));
}
Also used : SoapFault(ee.ria.xroad.common.message.SoapFault) Set(java.util.Set) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) SoapParserImpl(ee.ria.xroad.common.message.SoapParserImpl) SecurityServerId(ee.ria.xroad.common.identifier.SecurityServerId) ByteArrayOutputStream(java.io.ByteArrayOutputStream) OutputStream(java.io.OutputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) SoapMessageDecoder(ee.ria.xroad.common.message.SoapMessageDecoder) FileInputStream(java.io.FileInputStream) SoapMessage(ee.ria.xroad.common.message.SoapMessage) SoapMessageImpl(ee.ria.xroad.common.message.SoapMessageImpl) ClientId(ee.ria.xroad.common.identifier.ClientId) SoapParser(ee.ria.xroad.common.message.SoapParser) Test(org.junit.Test)

Aggregations

SoapMessageDecoder (ee.ria.xroad.common.message.SoapMessageDecoder)5 CodedException (ee.ria.xroad.common.CodedException)2 ErrorCodes.translateException (ee.ria.xroad.common.ErrorCodes.translateException)2 SoapParserImpl (ee.ria.xroad.common.message.SoapParserImpl)2 ClientId (ee.ria.xroad.common.identifier.ClientId)1 SecurityServerId (ee.ria.xroad.common.identifier.SecurityServerId)1 SoapFault (ee.ria.xroad.common.message.SoapFault)1 SoapMessage (ee.ria.xroad.common.message.SoapMessage)1 SoapMessageImpl (ee.ria.xroad.common.message.SoapMessageImpl)1 SoapParser (ee.ria.xroad.common.message.SoapParser)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 OutputStream (java.io.OutputStream)1 URISyntaxException (java.net.URISyntaxException)1 Set (java.util.Set)1 Test (org.junit.Test)1