Search in sources :

Example 56 with MessageContext

use of org.apache.axis2.context.MessageContext in project wso2-axis2-transports by wso2.

the class MSMQUtil method setSOAPEnvelope.

public static void setSOAPEnvelope(Message message, MessageContext msgContext, String contentType) throws AxisFault {
    if (contentType == null) {
        // TODO;we only support text/plain
        contentType = "text/plain";
        if (log.isDebugEnabled()) {
            log.debug("No content type specified; assuming " + contentType);
        }
    }
    int index = contentType.indexOf(';');
    String type = index > 0 ? contentType.substring(0, index) : contentType;
    Builder builder = BuilderUtil.getBuilderFromSelector(type, msgContext);
    String messageBody = null;
    try {
        messageBody = message.getBodyAsString();
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (builder == null) {
        if (log.isDebugEnabled()) {
            log.debug("No message builder found for type' " + type + ".Using SOAP builder");
        }
        builder = new SOAPBuilder();
    }
    OMElement documentElement;
    // TODO: we need to handle the message types separately. Assume text message builder format
    TextMessageBuilder textMessageBuilder;
    if (builder instanceof TextMessageBuilder) {
        textMessageBuilder = (TextMessageBuilder) builder;
    } else {
        textMessageBuilder = new TextMessageBuilderAdapter(builder);
    }
    documentElement = textMessageBuilder.processDocument(messageBody, contentType, msgContext);
    msgContext.setEnvelope(TransportUtils.createSOAPEnvelope(documentElement));
}
Also used : TextMessageBuilderAdapter(org.apache.axis2.format.TextMessageBuilderAdapter) SOAPBuilder(org.apache.axis2.builder.SOAPBuilder) Builder(org.apache.axis2.builder.Builder) TextMessageBuilder(org.apache.axis2.format.TextMessageBuilder) UnsupportedEncodingException(java.io.UnsupportedEncodingException) SOAPBuilder(org.apache.axis2.builder.SOAPBuilder) OMElement(org.apache.axiom.om.OMElement) TextMessageBuilder(org.apache.axis2.format.TextMessageBuilder)

Example 57 with MessageContext

use of org.apache.axis2.context.MessageContext in project wso2-axis2-transports by wso2.

the class RabbitMQSender method sendOverAMQP.

/**
 * Perform actual sending of the AMQP message
 */
private void sendOverAMQP(RabbitMQConnectionFactory factory, MessageContext msgContext, String targetEPR) throws AxisFault {
    try {
        RabbitMQMessage message = new RabbitMQMessage(msgContext);
        Hashtable<String, String> epProperties = BaseUtils.getEPRProperties(targetEPR);
        if (!StringUtils.isEmpty(epProperties.get(RabbitMQConstants.REPLY_TO_NAME))) {
            // request-response scenario
            RabbitMQRPCMessageSender sender = new RabbitMQRPCMessageSender(factory, targetEPR, epProperties);
            RabbitMQMessage responseMessage = sender.send(message, msgContext);
            MessageContext responseMsgCtx = createResponseMessageContext(msgContext);
            RabbitMQUtils.setSOAPEnvelope(responseMessage, responseMsgCtx, responseMessage.getContentType());
            handleIncomingMessage(responseMsgCtx, RabbitMQUtils.getTransportHeaders(responseMessage), responseMessage.getSoapAction(), responseMessage.getContentType());
        } else {
            // Basic out only publish
            RabbitMQMessageSender sender = new RabbitMQMessageSender(factory, targetEPR, epProperties);
            sender.send(message, msgContext);
        }
    } catch (AxisRabbitMQException e) {
        handleException("Error occurred while sending message out", e);
    } catch (IOException e) {
        handleException("Error occurred while sending message out", e);
    }
}
Also used : RabbitMQRPCMessageSender(org.apache.axis2.transport.rabbitmq.rpc.RabbitMQRPCMessageSender) AxisRabbitMQException(org.apache.axis2.transport.rabbitmq.utils.AxisRabbitMQException) MessageContext(org.apache.axis2.context.MessageContext) IOException(java.io.IOException)

Example 58 with MessageContext

use of org.apache.axis2.context.MessageContext in project wso2-axis2-transports by wso2.

the class RabbitMQUtils method setSOAPEnvelope.

public static void setSOAPEnvelope(RabbitMQMessage message, MessageContext msgContext, String contentType) throws AxisFault {
    int index = contentType.indexOf(';');
    String type = index > 0 ? contentType.substring(0, index) : contentType;
    Builder builder = BuilderUtil.getBuilderFromSelector(type, msgContext);
    if (builder == null) {
        if (log.isDebugEnabled()) {
            log.debug("No message builder found for type '" + type + "'. Falling back to SOAP.");
        }
        builder = new SOAPBuilder();
    }
    OMElement documentElement;
    String charSetEnc = null;
    try {
        if (contentType != null) {
            charSetEnc = new ContentType(contentType).getParameter("charset");
        }
    } catch (ParseException ex) {
        log.debug("Parse error", ex);
    }
    msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
    documentElement = builder.processDocument(new ByteArrayInputStream(message.getBody()), contentType, msgContext);
    msgContext.setEnvelope(TransportUtils.createSOAPEnvelope(documentElement));
}
Also used : ContentType(javax.mail.internet.ContentType) ByteArrayInputStream(java.io.ByteArrayInputStream) SOAPBuilder(org.apache.axis2.builder.SOAPBuilder) Builder(org.apache.axis2.builder.Builder) SOAPBuilder(org.apache.axis2.builder.SOAPBuilder) OMElement(org.apache.axiom.om.OMElement) LongString(com.rabbitmq.client.LongString) ParseException(javax.mail.internet.ParseException)

Example 59 with MessageContext

use of org.apache.axis2.context.MessageContext in project wso2-axis2-transports by wso2.

the class TCPWorker method sendFault.

private void sendFault(MessageContext msgContext, Exception fault) {
    log.error("Error while processing TCP request through the Axis2 engine", fault);
    try {
        if (msgContext != null) {
            msgContext.setProperty(MessageContext.TRANSPORT_OUT, socket.getOutputStream());
            MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, fault);
            AxisEngine.sendFault(faultContext);
        }
    } catch (Exception e) {
        log.error("Error while sending the fault response", e);
    }
}
Also used : MessageContext(org.apache.axis2.context.MessageContext) IOException(java.io.IOException) XMLStreamException(javax.xml.stream.XMLStreamException)

Example 60 with MessageContext

use of org.apache.axis2.context.MessageContext in project wso2-axis2-transports by wso2.

the class AxisAsyncEndpoint method receive.

void receive(MessageContext messageCtx) throws AxisFault {
    log.debug("MessageReceiver has been invoked");
    final AxisMessage messageData;
    try {
        Assert.assertTrue(messageCtx.isServerSide());
        TransportInDescription transportIn = messageCtx.getTransportIn();
        Assert.assertNotNull("transportIn not set on message context", transportIn);
        Assert.assertEquals(context.getTransportName(), transportIn.getName());
        Assert.assertEquals(context.getTransportName(), messageCtx.getIncomingTransportName());
        for (MessageContextValidator validator : validators) {
            validator.validate(messageCtx, false);
        }
        messageData = new AxisMessage(messageCtx);
    } catch (Throwable ex) {
        support.putException(ex);
        return;
    }
    support.putMessage(null, messageData);
}
Also used : TransportInDescription(org.apache.axis2.description.TransportInDescription) AxisMessage(org.apache.axis2.transport.testkit.message.AxisMessage) MessageContextValidator(org.apache.axis2.transport.testkit.axis2.MessageContextValidator)

Aggregations

MessageContext (org.apache.axis2.context.MessageContext)35 AxisFault (org.apache.axis2.AxisFault)25 OMElement (org.apache.axiom.om.OMElement)13 SOAPEnvelope (org.apache.axiom.soap.SOAPEnvelope)12 IOException (java.io.IOException)11 OMOutputFormat (org.apache.axiom.om.OMOutputFormat)11 XMLStreamException (javax.xml.stream.XMLStreamException)9 QName (javax.xml.namespace.QName)8 MessageFormatter (org.apache.axis2.transport.MessageFormatter)8 AxisOperation (org.apache.axis2.description.AxisOperation)7 ByteArrayInputStream (java.io.ByteArrayInputStream)6 InputStream (java.io.InputStream)5 UnsupportedCharsetException (java.nio.charset.UnsupportedCharsetException)5 SOAPFactory (org.apache.axiom.soap.SOAPFactory)5 UnsupportedEncodingException (java.io.UnsupportedEncodingException)4 OMFactory (org.apache.axiom.om.OMFactory)4 Options (org.apache.axis2.client.Options)4 Message (org.jivesoftware.smack.packet.Message)4 ByteArrayOutputStream (java.io.ByteArrayOutputStream)3 OutputStream (java.io.OutputStream)3