Package org.mule.transport.servlet.jetty

Source Code of org.mule.transport.servlet.jetty.JettyHttpMessageReceiver$ContinuationsResponseHandler

/*
* Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.transport.servlet.jetty;

import org.mule.api.MuleContext;
import org.mule.api.config.MuleProperties;
import org.mule.api.construct.FlowConstruct;
import org.mule.api.endpoint.InboundEndpoint;
import org.mule.api.lifecycle.CreateException;
import org.mule.api.lifecycle.InitialisationException;
import org.mule.api.transport.Connector;
import org.mule.execution.MessageProcessingManager;
import org.mule.transport.AbstractMessageReceiver;
import org.mule.transport.TransportMessageProcessContext;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.continuation.Continuation;

/**
* <code>JettyHttpMessageReceiver</code> is a simple http server that can be used to
* listen for http requests on a particular port
*/
public class JettyHttpMessageReceiver extends AbstractMessageReceiver
{
    private MessageProcessingManager messageProcessingManager;

    public JettyHttpMessageReceiver(Connector connector, FlowConstruct flowConstruct, InboundEndpoint endpoint)
        throws CreateException
    {
        super(connector, flowConstruct, endpoint);
    }
   
    public void processMessage(HttpServletRequest request, HttpServletResponse response)
    {
        final JettyMessageProcessTemplate messageProcessTemplate = new JettyMessageProcessTemplate(request, response, this, getEndpoint().getMuleContext());
        final TransportMessageProcessContext messageProcessContext = new TransportMessageProcessContext(this);
        messageProcessingManager.processMessage(messageProcessTemplate, messageProcessContext);
    }

    public ContinuationsResponseHandler processMessageAsync(HttpServletRequest request, HttpServletResponse response, Continuation continuation)
    {
        final JettyContinuationsMessageProcessTemplate messageProcessTemplate = new JettyContinuationsMessageProcessTemplate(request, response, this, getEndpoint().getMuleContext(), continuation);
        final TransportMessageProcessContext messageProcessContext = new TransportMessageProcessContext(this, getWorkManager());
        messageProcessingManager.processMessage(messageProcessTemplate, messageProcessContext);
        return new ContinuationsResponseHandler(messageProcessTemplate);
    }

    public static class ContinuationsResponseHandler
    {
        private JettyContinuationsMessageProcessTemplate jettyMessageProcessTemplateAndContext;

        public ContinuationsResponseHandler(JettyContinuationsMessageProcessTemplate jettyMessageProcessTemplateAndContext)
        {
            this.jettyMessageProcessTemplateAndContext = jettyMessageProcessTemplateAndContext;
        }

        void complete()
        {
            this.jettyMessageProcessTemplateAndContext.completeProcessingRequest();
        }
    }

    @Override
    protected void doInitialise() throws InitialisationException
    {
        super.doInitialise();
        this.messageProcessingManager = endpoint.getMuleContext().getRegistry().get(MuleProperties.OBJECT_DEFAULT_MESSAGE_PROCESSING_MANAGER);
    }
}
TOP

Related Classes of org.mule.transport.servlet.jetty.JettyHttpMessageReceiver$ContinuationsResponseHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.