You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by he...@apache.org on 2005/03/14 03:59:01 UTC

svn commit: r157369 - in webservices/axis/trunk/java/modules: core/src/java/org/apache/axis/clientapi/ core/src/java/org/apache/axis/context/ core/src/java/org/apache/axis/description/ core/src/java/org/apache/axis/engine/ core/src/java/org/apache/axis/providers/ core/src/java/org/apache/axis/transport/ core/src/java/org/apache/axis/util/ core/src/test/org/apache/axis/engine/ http/src/java/org/apache/axis/transport/http/ mail/src/java/org/apache/axis/transport/mail/

Author: hemapani
Date: Sun Mar 13 18:58:57 2005
New Revision: 157369

URL: http://svn.apache.org/viewcvs?view=rev&rev=157369
Log:
support to pause the engine is added

Added:
    webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EnginePausingTest.java
Removed:
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/transport/TransportReceiverLocator.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/transport/TransportSenderLocator.java
Modified:
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Call.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Invoker.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/context/MessageContext.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/description/AxisTransport.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/AxisEngine.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Dispatcher.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/ExecutionChain.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Phase.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/providers/RawXMLProvider.java
    webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/util/Utils.java
    webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EngineTest.java
    webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/MessageContextTest.java
    webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/AxisServlet.java
    webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/SimpleHTTPServer.java
    webservices/axis/trunk/java/modules/mail/src/java/org/apache/axis/transport/mail/MailWorker.java

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Call.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Call.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Call.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Call.java Sun Mar 13 18:58:57 2005
@@ -15,6 +15,9 @@
 */
 package org.apache.axis.clientapi;
 
+import java.io.IOException;
+import java.io.Writer;
+
 import org.apache.axis.Constants;
 import org.apache.axis.addressing.EndpointReference;
 import org.apache.axis.context.MessageContext;
@@ -26,13 +29,10 @@
 import org.apache.axis.om.OMException;
 import org.apache.axis.om.SOAPEnvelope;
 import org.apache.axis.transport.TransportReceiver;
-import org.apache.axis.transport.TransportReceiverLocator;
+import org.apache.axis.util.Utils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import java.io.IOException;
-import java.io.Writer;
-
 /**
  * Class Call
  */
@@ -103,12 +103,11 @@
      */
     public void setTransportType(String transport) throws AxisFault {
         if ((Constants.TRANSPORT_HTTP.equals(transport)
-                || Constants.TRANSPORT_MAIL.equals(transport)
-                || Constants.TRANSPORT_TCP.equals(transport))) {
+            || Constants.TRANSPORT_MAIL.equals(transport)
+            || Constants.TRANSPORT_TCP.equals(transport))) {
             this.transport = transport;
         } else {
-            throw new AxisFault("Selected transport dose not suppot ( "
-                    + transport + " )");
+            throw new AxisFault("Selected transport dose not suppot ( " + transport + " )");
         }
     }
 
@@ -120,17 +119,15 @@
      * @param useSeparateListener
      * @throws AxisFault
      */
-    public void setListenerTransport(
-            String Listenertransport, boolean useSeparateListener)
-            throws AxisFault {
+    public void setListenerTransport(String Listenertransport, boolean useSeparateListener)
+        throws AxisFault {
         if ((Constants.TRANSPORT_HTTP.equals(transport)
-                || Constants.TRANSPORT_MAIL.equals(transport)
-                || Constants.TRANSPORT_TCP.equals(transport))) {
+            || Constants.TRANSPORT_MAIL.equals(transport)
+            || Constants.TRANSPORT_TCP.equals(transport))) {
             this.Listenertransport = Listenertransport;
             this.useSeparateListener = useSeparateListener;
         } else {
-            throw new AxisFault("Selected transport dose not suppot ( "
-                    + transport + " )");
+            throw new AxisFault("Selected transport dose not suppot ( " + transport + " )");
         }
     }
 
@@ -154,14 +151,13 @@
         Writer out = null;
         try {
             final AxisEngine engine = new AxisEngine();
-            MessageContext msgctx = new MessageContext(registry, null, null);
+            MessageContext msgctx = new MessageContext(registry, null, null,Utils.createHTTPTransport(registry));
             msgctx.setEnvelope(envelope);
             msgctx.setTo(targetEPR);
-            msgctx.setProperty(MessageContext.TRANSPORT_TYPE,
-                    Constants.TRANSPORT_HTTP);
+
             msgctx.setTo(targetEPR);
-            if(action != null) {
-                msgctx.setProperty(MessageContext.SOAP_ACTION,action);
+            if (action != null) {
+                msgctx.setProperty(MessageContext.SOAP_ACTION, action);
             }
             engine.send(msgctx);
         } catch (IOException e) {
@@ -187,18 +183,17 @@
      */
     public void send(SOAPEnvelope envelope) throws AxisFault {
         if (Constants.TRANSPORT_MAIL.equals(transport)) {
-            throw new AxisFault(
-                    "This invocation support only for bi-directional transport");
+            throw new AxisFault("This invocation support only for bi-directional transport");
         } else {
             MessageContext request = null;
             try {
                 final AxisEngine engine = new AxisEngine();
-                request = new MessageContext(registry, null, null);
+                request = new MessageContext(registry, null, null,Utils.createHTTPTransport(registry));
                 request.setEnvelope(envelope);
-                request.setProperty(MessageContext.TRANSPORT_TYPE, transport);
+
                 request.setTo(targetEPR);
-                if(action != null) {
-                    request.setProperty(MessageContext.SOAP_ACTION,action);
+                if (action != null) {
+                    request.setProperty(MessageContext.SOAP_ACTION, action);
                 }
                 engine.send(request);
 
@@ -214,22 +209,18 @@
                 * request.getSessionContext());
                 */
                 request.setServerSide(false);
-                request.setProperty(MessageContext.TRANSPORT_TYPE, transport);
-                TransportReceiver receiver =
-                        TransportReceiverLocator.locate(request);
+                TransportReceiver receiver = request.getTransport().getReciever();
                 receiver.invoke(request);
-                if (request.getProperty(MessageContext.TRANSPORT_SUCCEED)
-                        != null) {
+                if (request.getProperty(MessageContext.TRANSPORT_SUCCEED) != null) {
                     throw new AxisFault("Sent failed");
                 } else if (request.getEnvelope().getBody().hasFault()) {
                     throw new AxisFault(
-                            request.getEnvelope().getBody().getFault().getFaultString());
+                        request.getEnvelope().getBody().getFault().getFaultString());
                 }
             } catch (IOException e) {
                 throw AxisFault.makeFault(e);
             } finally {
-                Writer writer = (Writer) request.getProperty(
-                        MessageContext.TRANSPORT_WRITER);
+                Writer writer = (Writer) request.getProperty(MessageContext.TRANSPORT_WRITER);
                 if (writer != null) {
                     try {
                         writer.close();
@@ -250,26 +241,23 @@
      */
     public SOAPEnvelope sendReceive(SOAPEnvelope envelope) throws AxisFault {
         if (Constants.TRANSPORT_MAIL.equals(transport)) {
-            throw new AxisFault(
-                    "This invocation support only for bi-directional transport");
+            throw new AxisFault("This invocation support only for bi-directional transport");
         }
         try {
             AxisEngine engine = new AxisEngine();
-            MessageContext msgctx = new MessageContext(registry, null, null);
+            MessageContext msgctx = new MessageContext(registry, null, null,Utils.createHTTPTransport(registry));
             msgctx.setEnvelope(envelope);
-            msgctx.setProperty(MessageContext.TRANSPORT_TYPE, transport);
+
             msgctx.setTo(targetEPR);
-            if(action != null) {
-                msgctx.setProperty(MessageContext.SOAP_ACTION,action);
+            if (action != null) {
+                msgctx.setProperty(MessageContext.SOAP_ACTION, action);
             }
             engine.send(msgctx);
-            MessageContext response = new MessageContext(registry,
-                    msgctx.getProperties(),
-                    msgctx.getSessionContext());
+            MessageContext response =
+                new MessageContext(registry, msgctx.getProperties(), msgctx.getSessionContext(),msgctx.getTransport());
             response.setServerSide(false);
-            response.setProperty(MessageContext.TRANSPORT_TYPE, transport);
-            TransportReceiver receiver =
-                    TransportReceiverLocator.locate(response);
+
+            TransportReceiver receiver = response.getTransport().getReciever();
             receiver.invoke(response);
             SOAPEnvelope resenvelope = response.getEnvelope();
 
@@ -287,33 +275,28 @@
      * @param callback
      * @throws AxisFault
      */
-    public void sendReceiveAsync(SOAPEnvelope envelope, final Callback callback)
-            throws AxisFault {
+    public void sendReceiveAsync(SOAPEnvelope envelope, final Callback callback) throws AxisFault {
         try {
             AxisEngine engine = new AxisEngine();
-            final MessageContext msgctx = new MessageContext(registry, null,
-                    null);
+            final MessageContext msgctx = new MessageContext(registry, null, null,Utils.createHTTPTransport(registry));
             msgctx.setEnvelope(envelope);
-            msgctx.setProperty(MessageContext.TRANSPORT_TYPE, transport);
+
             msgctx.setTo(targetEPR);
-            if(action != null) {
-                msgctx.setProperty(MessageContext.SOAP_ACTION,action);
+            if (action != null) {
+                msgctx.setProperty(MessageContext.SOAP_ACTION, action);
             }
             if (useSeparateListener) {
                 if (Constants.TRANSPORT_MAIL.equals(transport)) {
-                    throw new AxisFault(
-                            "This invocation support only for bi-directional transport");
+                    throw new AxisFault("This invocation support only for bi-directional transport");
                 }
-                Invoker invoker = new Invoker(msgctx, engine, registry,
-                        callback);
+                Invoker invoker = new Invoker(msgctx, engine, registry, callback);
                 Thread th = new Thread(invoker);
                 th.start();
             } else {
 
                 // TODO
                 // start the Listener at the client side
-                throw new UnsupportedOperationException(
-                        "Unblocking transports are not supported yet");
+                throw new UnsupportedOperationException("Unblocking transports are not supported yet");
             }
         } catch (OMException e) {
             throw AxisFault.makeFault(e);

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Invoker.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Invoker.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Invoker.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/clientapi/Invoker.java Sun Mar 13 18:58:57 2005
@@ -19,7 +19,6 @@
 import org.apache.axis.engine.AxisEngine;
 import org.apache.axis.engine.EngineRegistry;
 import org.apache.axis.transport.TransportReceiver;
-import org.apache.axis.transport.TransportReceiverLocator;
 
 /**
  * Class Invoker
@@ -74,11 +73,11 @@
                     callback);
             MessageContext resMsgContext =
             new MessageContext(registry, reqMsgContext.getProperties(),
-                    reqMsgContext.getSessionContext());
+                    reqMsgContext.getSessionContext(),reqMsgContext.getTransport());
             resMsgContext.setServerSide(false);
 
-            TransportReceiver receiver =
-                    TransportReceiverLocator.locate(resMsgContext);
+            TransportReceiver receiver = reqMsgContext.getTransport().getReciever();
+
             receiver.invoke(resMsgContext);
             AsyncResult result = new AsyncResult();
             result.setResult(resMsgContext.getEnvelope());

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/context/MessageContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/context/MessageContext.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/context/MessageContext.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/context/MessageContext.java Sun Mar 13 18:58:57 2005
@@ -54,10 +54,6 @@
      */
     public static final String PASSWORD = "PASSWD";
 
-    /**
-     * Field TRANSPORT_TYPE
-     */
-    public static final String TRANSPORT_TYPE = "TRANSPORT_TYPE";
 
     /**
      * Field SOAP_ACTION
@@ -103,9 +99,9 @@
     MessageInformationHeadersCollection messageInformationHeaders;
 
 
-    private ExecutionChain chain;
+    private final ExecutionChain chain;
 
-    private AxisTransport transport;
+    private final AxisTransport transport;
 
     /**
      * Field properties
@@ -171,6 +167,10 @@
      * Field soapOperationElement
      */
     private OMElement soapOperationElement;
+    
+    
+    private boolean paused = false;
+    
 
     /**
      * @param er            registry
@@ -178,8 +178,10 @@
      * @param sessionContext    of the message context, should be null if no sessionContext
      * @throws AxisFault
      */
-    public MessageContext(
-            EngineRegistry er, Map initialProperties, SessionContext sessionContext)
+    public MessageContext(EngineRegistry er, 
+            Map initialProperties, 
+            SessionContext sessionContext,
+            AxisTransport transport)
             throws AxisFault {
         this.globalContext = new GlobalContext(er);
         if (sessionContext == null) {
@@ -193,6 +195,7 @@
         properties = initialProperties;
         chain = new ExecutionChain();
         messageInformationHeaders = new MessageInformationHeadersCollection();
+        this.transport = transport;
     }
 
     /**
@@ -446,26 +449,19 @@
         return this.chain;
     }
 
-    /**
-     * @param chain
-     */
-    public void setExecutionChain(ExecutionChain chain) {
-        this.chain = chain;
-    }
-
-    /**
+     /**
      * @return
      */
     public AxisTransport getTransport() {
         return transport;
     }
 
-    /**
-     * @param transport
-     */
-    public void setTransport(AxisTransport transport) {
-        this.transport = transport;
-    }
+//    /**
+//     * @param transport
+//     */
+//    public void setTransport(AxisTransport transport) {
+//        this.transport = transport;
+//    }
 
     /**
      * @return
@@ -521,5 +517,18 @@
 
     public void setMessageInformationHeaders(MessageInformationHeadersCollection messageInformationHeaders) {
         this.messageInformationHeaders = messageInformationHeaders;
+    }
+    /**
+     * @return
+     */
+    public boolean isPaused() {
+        return paused;
+    }
+
+    /**
+     * @param b
+     */
+    public void setPaused(boolean b) {
+        paused = b;
     }
 }

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/description/AxisTransport.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/description/AxisTransport.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/description/AxisTransport.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/description/AxisTransport.java Sun Mar 13 18:58:57 2005
@@ -16,6 +16,8 @@
 package org.apache.axis.description;
 
 import org.apache.axis.engine.AxisFault;
+import org.apache.axis.transport.TransportReceiver;
+import org.apache.axis.transport.TransportSender;
 
 import javax.xml.namespace.QName;
 import java.util.ArrayList;
@@ -44,6 +46,11 @@
      * Field name
      */
     protected QName name;
+    
+    
+    protected TransportSender sender;
+    
+    protected TransportReceiver reciever;
 
     /**
      * Constructor AxisTransport
@@ -149,4 +156,32 @@
     public void setOutFlow(Flow outFlow) {
         flowInclude.setOutFlow(outFlow);
     }
+    /**
+     * @return
+     */
+    public TransportReceiver getReciever() {
+        return reciever;
+    }
+
+    /**
+     * @return
+     */
+    public TransportSender getSender() {
+        return sender;
+    }
+
+    /**
+     * @param receiver
+     */
+    public void setReciever(TransportReceiver receiver) {
+        reciever = receiver;
+    }
+
+    /**
+     * @param sender
+     */
+    public void setSender(TransportSender sender) {
+        this.sender = sender;
+    }
+
 }

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/AxisEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/AxisEngine.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/AxisEngine.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/AxisEngine.java Sun Mar 13 18:58:57 2005
@@ -21,10 +21,11 @@
 import org.apache.axis.description.AxisGlobal;
 import org.apache.axis.description.AxisService;
 import org.apache.axis.description.AxisTransport;
+import org.apache.axis.handlers.OpNameFinder;
 import org.apache.axis.om.OMFactory;
 import org.apache.axis.om.SOAPBody;
 import org.apache.axis.om.SOAPEnvelope;
-import org.apache.axis.transport.TransportSenderLocator;
+import org.apache.axis.transport.TransportSender;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -83,7 +84,6 @@
             log.info("starting the out flow");
 
             // let us always start with a fresh EC
-            context.setExecutionChain(new ExecutionChain());
             ExecutionChain chain = context.getExecutionChain();
 
             // Receiving is always a matter of running the transport handlers first
@@ -99,13 +99,21 @@
             chain.addPhases(global.getPhases(EngineRegistry.INFLOW));
 
             // create a Dispatch Phase and add it to the Execution Chain
-            Dispatcher dispatcher = new Dispatcher();
-            Phase dispatchPhase = new Phase("DispatchPhase");
-            dispatchPhase.addHandler(dispatcher);
-            chain.addPhase(dispatchPhase);
-
-            // Start rolling the Service Handlers will,be added by the Dispatcher
-            chain.invoke(context);
+            if(context.isServerSide()){
+                Dispatcher dispatcher = new Dispatcher();
+                Phase dispatchPhase = new Phase("DispatchPhase");
+                dispatchPhase.addHandler(dispatcher);
+                chain.addPhase(dispatchPhase);
+
+                // Start rolling the Service Handlers will,be added by the Dispatcher
+                chain.invoke(context);
+            
+                // add invoke Phase
+                Handler opNameFinder = new OpNameFinder();
+                opNameFinder.invoke(context);
+                Receiver reciver = ReceiverLocator.locateReceiver(context);
+                reciver.invoke(context);
+            }
             log.info("ending the out flow");
         } catch (Throwable e) {
             handleFault(context, e);
@@ -129,17 +137,20 @@
             context.setProcessingFault(true);
 
             // create a SOAP envelope with the Fault
-            MessageContext faultContext = new MessageContext(context.getGlobalContext().getRegistry(),context.getProperties(),context.getSessionContext());
+            MessageContext faultContext = new MessageContext(context.getGlobalContext().getRegistry(),
+                context.getProperties(),context.getSessionContext(),context.getTransport());
+            faultContext.setProcessingFault(true);
+            faultContext.setServerSide(true);
             SOAPEnvelope envelope =
                     OMFactory.newInstance().getDefaultEnvelope();
 
             // TODO do we need to set old Headers back?
             SOAPBody body = envelope.getBody();
             body.addFault(new AxisFault(e.getMessage(), e));
-            context.setEnvelope(envelope);
+            faultContext.setEnvelope(envelope);
 
             // send the error
-            executeOutFlow(context, EngineRegistry.FAULTFLOW);
+            executeOutFlow(faultContext, EngineRegistry.FAULTFLOW);
         } else if (!serverSide) {
 
             // if at the client side throw the exception
@@ -163,7 +174,6 @@
     private void executeOutFlow(MessageContext context, int flow)
             throws AxisFault {
         try {
-            context.setExecutionChain(new ExecutionChain());
             ExecutionChain chain = context.getExecutionChain();
             AxisService service = context.getService();
             if (service != null) {
@@ -185,15 +195,14 @@
 
             // Receiving is always a matter of running the transport handlers first
             AxisTransport transport = context.getTransport();
-            if (transport != null) {
-                chain.addPhases(transport.getPhases(flow));
-            }
-            Phase sendPhase = new Phase(Phase.SENDING_PHASE);
-            sendPhase.addHandler(TransportSenderLocator.locate(context));
-            chain.addPhase(sendPhase);
-
+            chain.addPhases(transport.getPhases(flow));
+            
             // startet rolling
             chain.invoke(context);
+            
+            TransportSender sender = transport.getSender();
+            sender.invoke(context);
+            
         } catch (AxisFault error) {
             error.printStackTrace();
             handleFault(context, error);

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Dispatcher.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Dispatcher.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Dispatcher.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Dispatcher.java Sun Mar 13 18:58:57 2005
@@ -23,7 +23,6 @@
 import org.apache.axis.description.AxisService;
 import org.apache.axis.description.HandlerMetadata;
 import org.apache.axis.handlers.AbstractHandler;
-import org.apache.axis.handlers.OpNameFinder;
 import org.apache.wsdl.WSDLService;
 
 /**
@@ -69,12 +68,6 @@
                     // let add the Handlers
                     ExecutionChain chain = msgctx.getExecutionChain();
                     chain.addPhases(service.getPhases(EngineRegistry.INFLOW));
-
-                    // add invoke Phase
-                    Phase invokePhase = new Phase(Phase.SERVICE_INVOCATION);
-                    invokePhase.addHandler(new OpNameFinder());
-                    invokePhase.addHandler(ReceiverLocator.locateReceiver(msgctx));
-                    chain.addPhase(invokePhase);
                 } else {
                     throw new AxisFault("Service " + serviceName + " is not found");
                 }

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/ExecutionChain.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/ExecutionChain.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/ExecutionChain.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/ExecutionChain.java Sun Mar 13 18:58:57 2005
@@ -46,6 +46,8 @@
      * Field log
      */
     private Log log = LogFactory.getLog(getClass());
+    
+    private int indexOfPhaseToExecuted = 0;
 
     /**
      * Constructor ExecutionChain
@@ -98,14 +100,23 @@
     public void invoke(MessageContext msgctx) throws AxisFault {
         Stack executionStack = new Stack();
         try {
-            for (int i = 0; i < executionList.size(); i++) {
-                Phase phase = (Phase) executionList.get(i);
-                if (phase != null) {
-                    log.info("Invoke the Phase " + phase.getPhaseName());
-                    phase.invoke(msgctx);
-                    //This line should be after the invoke as if the invocation failed this phases is takn care of and 
-                    //no need to revoke agien
-                    executionStack.push(phase);
+            while (indexOfPhaseToExecuted < executionList.size()) {
+                if(msgctx.isPaused()){
+                    if(indexOfPhaseToExecuted > 0){
+                        //need to run the last Phase agien so it can finish the handler
+                        indexOfPhaseToExecuted--;
+                    }
+                    break;
+                }else{
+                    Phase phase = (Phase) executionList.get(indexOfPhaseToExecuted);
+                    if (phase != null) {
+                        log.info("Invoke the Phase " + phase.getPhaseName());
+                        phase.invoke(msgctx);
+                        //This line should be after the invoke as if the invocation failed this phases is takn care of and 
+                        //no need to revoke agien
+                        executionStack.push(phase);
+                        indexOfPhaseToExecuted++;
+                    }
                 }
             }
         } catch (Exception e) {

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Phase.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Phase.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Phase.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/engine/Phase.java Sun Mar 13 18:58:57 2005
@@ -67,6 +67,8 @@
      * Field log
      */
     private Log log = LogFactory.getLog(getClass());
+    
+    private int indexOfHandlerToExecute = 0;
 
     /**
      * Constructor Phase
@@ -111,15 +113,20 @@
     public void invoke(MessageContext msgctx) throws AxisFault {
         Stack executionStack = new Stack();
         try {
-            for (int i = 0; i < handlers.size(); i++) {
-                Handler handler = (Handler) handlers.get(i);
-                if (handler != null) {
-                    log.info("Invoke the Handler " + handler.getName()
-                                    + "with in the Phase " + phaseName);
-                    handler.invoke(msgctx);
-                    //This line should be after the invoke as if the invocation failed this handlers is takn care of and 
-                    //no need to revoke agien
-                    executionStack.push(handler);
+            while (indexOfHandlerToExecute < handlers.size() ) {
+                if(msgctx.isPaused()){
+                    break;
+                }else{
+                    Handler handler = (Handler) handlers.get(indexOfHandlerToExecute);
+                    if (handler != null) {
+                        log.info("Invoke the Handler " + handler.getName()
+                                        + "with in the Phase " + phaseName);
+                        handler.invoke(msgctx);
+                        //This line should be after the invoke as if the invocation failed this handlers is takn care of and 
+                        //no need to revoke agien
+                        executionStack.push(handler);
+                        indexOfHandlerToExecute++;
+                    }
                 }
             }
         } catch (Exception e) {

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/providers/RawXMLProvider.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/providers/RawXMLProvider.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/providers/RawXMLProvider.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/providers/RawXMLProvider.java Sun Mar 13 18:58:57 2005
@@ -156,7 +156,7 @@
                 SOAPEnvelope envelope = null;
                 MessageContext msgContext1 = new MessageContext(
                         msgContext.getGlobalContext().getRegistry(),
-                        msgContext.getProperties(), msgContext.getSessionContext());
+                        msgContext.getProperties(), msgContext.getSessionContext(),msgContext.getTransport());
                         
                 if(WSDLService.STYLE_DOC.equals(msgContext.getMessageStyle())){
                     parmeter = methodElement;

Modified: webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/util/Utils.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/util/Utils.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/util/Utils.java (original)
+++ webservices/axis/trunk/java/modules/core/src/java/org/apache/axis/util/Utils.java Sun Mar 13 18:58:57 2005
@@ -17,14 +17,19 @@
 
 import java.util.ArrayList;
 
+import javax.xml.namespace.QName;
+
 import org.apache.axis.Constants;
 import org.apache.axis.description.AxisService;
+import org.apache.axis.description.AxisTransport;
 import org.apache.axis.description.Flow;
 import org.apache.axis.description.HandlerMetadata;
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.EngineRegistry;
 import org.apache.axis.engine.Handler;
 import org.apache.axis.engine.Phase;
+import org.apache.axis.transport.TransportReceiver;
+import org.apache.axis.transport.TransportSender;
 
 public class Utils {
 
@@ -33,13 +38,18 @@
         hmd.setHandler(handler);
         flow.addHandler(hmd);
     }
-    public static void addPhasesToServiceFromFlow(AxisService service, String phaseName, Flow flow, int flowtype) throws AxisFault {
-         ArrayList faultchain = new ArrayList();
-         Phase p = new Phase(Constants.PHASE_SERVICE);
-         faultchain.add(p);
-         addHandlers(flow, p);
-         service.setPhases(faultchain, flowtype);
-     }
+    public static void addPhasesToServiceFromFlow(
+        AxisService service,
+        String phaseName,
+        Flow flow,
+        int flowtype)
+        throws AxisFault {
+        ArrayList faultchain = new ArrayList();
+        Phase p = new Phase(Constants.PHASE_SERVICE);
+        faultchain.add(p);
+        addHandlers(flow, p);
+        service.setPhases(faultchain, flowtype);
+    }
     public static void createExecutionChains(AxisService service) throws AxisFault {
         addPhasesToServiceFromFlow(
             service,
@@ -58,12 +68,56 @@
             EngineRegistry.FAULTFLOW);
     }
     public static void addHandlers(Flow flow, Phase phase) throws AxisFault {
-            if (flow != null) {
-                int handlerCount = flow.getHandlerCount();
-                for (int i = 0; i < handlerCount; i++) {
-                    phase.addHandler(flow.getHandler(i).getHandler());
-                }
+        if (flow != null) {
+            int handlerCount = flow.getHandlerCount();
+            for (int i = 0; i < handlerCount; i++) {
+                phase.addHandler(flow.getHandler(i).getHandler());
+            }
+        }
+    }
+
+    public static AxisTransport createHTTPTransport(EngineRegistry er) throws AxisFault {
+        try {
+            QName transportName = new QName("http");
+            //AxisTransport httpTransport = er.getTransport(transportName);
+            AxisTransport httpTransport = null;
+            if (httpTransport == null) {
+                httpTransport = new AxisTransport(transportName);
+                Class className =
+                    Class.forName("org.apache.axis.transport.http.HTTPTransportSender");
+                httpTransport.setSender((TransportSender) className.newInstance());
+
+                className = Class.forName("org.apache.axis.transport.http.HTTPTransportReceiver");
+                httpTransport.setReciever((TransportReceiver) className.newInstance());
+            }
+            return httpTransport;
+        } catch (ClassNotFoundException e) {
+            throw new AxisFault(e.getMessage(), e);
+        } catch (InstantiationException e) {
+            throw new AxisFault(e.getMessage(), e);
+        } catch (IllegalAccessException e) {
+            throw new AxisFault(e.getMessage(), e);
+        }
+    }
+    public static AxisTransport createMailTransport(EngineRegistry er) throws AxisFault {
+        try {
+            QName transportName = new QName("http");
+
+            AxisTransport mailTransport = null;
+            if (mailTransport == null) {
+                mailTransport = new AxisTransport(new QName("http"));
+                Class className =
+                    Class.forName("org.apache.axis.transport.mail.MailTransportSender");
+                mailTransport.setSender((TransportSender) className.newInstance());
             }
+            return mailTransport;
+        } catch (ClassNotFoundException e) {
+            throw new AxisFault(e.getMessage(), e);
+        } catch (InstantiationException e) {
+            throw new AxisFault(e.getMessage(), e);
+        } catch (IllegalAccessException e) {
+            throw new AxisFault(e.getMessage(), e);
         }
+    }
 
 }

Added: webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EnginePausingTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EnginePausingTest.java?view=auto&rev=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EnginePausingTest.java (added)
+++ webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EnginePausingTest.java Sun Mar 13 18:58:57 2005
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.axis.engine;
+
+import java.util.ArrayList;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.axis.addressing.AddressingConstants;
+import org.apache.axis.addressing.EndpointReference;
+import org.apache.axis.context.MessageContext;
+import org.apache.axis.description.AxisGlobal;
+import org.apache.axis.description.AxisService;
+import org.apache.axis.description.AxisTransport;
+import org.apache.axis.description.HandlerMetadata;
+import org.apache.axis.description.Parameter;
+import org.apache.axis.handlers.AbstractHandler;
+import org.apache.axis.om.OMFactory;
+import org.apache.axis.providers.AbstractProvider;
+import org.apache.axis.transport.TransportSender;
+import org.apache.wsdl.WSDLService;
+
+public class EnginePausingTest extends TestCase {
+    private MessageContext mc;
+    private ArrayList executedHandlers = new ArrayList();
+    private EngineRegistry engineRegistry;
+    private QName serviceName = new QName("NullService");
+
+    public EnginePausingTest() {
+    }
+
+    public EnginePausingTest(String arg0) {
+        super(arg0);
+    }
+    protected void setUp() throws Exception {
+        engineRegistry = new EngineRegistryImpl(new AxisGlobal());
+
+        AxisTransport transport = new AxisTransport(new QName("null"));
+        transport.setSender(new NullTransportSender());
+        mc = new MessageContext(engineRegistry, null, null, transport);
+        mc.setServerSide(true);
+        OMFactory omFac = OMFactory.newInstance();
+        mc.setEnvelope(omFac.getDefaultEnvelope());
+        AxisService service = new AxisService(serviceName);
+        service.setProvider(new NullProvider());
+        ArrayList phases = new ArrayList();
+
+        Phase phase = new Phase("1");
+        phase.addHandler(new TempHandler(1));
+        phase.addHandler(new TempHandler(2));
+        phase.addHandler(new TempHandler(3));
+        phase.addHandler(new TempHandler(4));
+        phase.addHandler(new TempHandler(5));
+        phase.addHandler(new TempHandler(6));
+        phase.addHandler(new TempHandler(7));
+        phase.addHandler(new TempHandler(8));
+        phase.addHandler(new TempHandler(9));
+        phases.add(phase);
+
+        phase = new Phase("2");
+        phase.addHandler(new TempHandler(10));
+        phase.addHandler(new TempHandler(11));
+        phase.addHandler(new TempHandler(12));
+        phase.addHandler(new TempHandler(13));
+        phase.addHandler(new TempHandler(14));
+        phase.addHandler(new TempHandler(15, true));
+        phase.addHandler(new TempHandler(16));
+        phase.addHandler(new TempHandler(17));
+        phase.addHandler(new TempHandler(18));
+        phases.add(phase);
+
+        Phase phase1 = new Phase("3");
+        phase1.addHandler(new TempHandler(19));
+        phase1.addHandler(new TempHandler(20));
+        phase1.addHandler(new TempHandler(21));
+        phase1.addHandler(new TempHandler(22));
+        phase1.addHandler(new TempHandler(23));
+        phase1.addHandler(new TempHandler(24));
+        phase1.addHandler(new TempHandler(25));
+        phase1.addHandler(new TempHandler(26));
+        phase1.addHandler(new TempHandler(27));
+        phases.add(phase1);
+        service.setPhases(phases, EngineRegistry.INFLOW);
+        engineRegistry.addService(service);
+        service.setStyle(WSDLService.STYLE_DOC);
+        mc.setTo(
+            new EndpointReference(
+                AddressingConstants.WSA_TO,
+                "http://127.0.0.1:8080/axis/services/NullService"));
+
+    }
+
+    public void testSend() throws Exception {
+        AxisEngine engine = new AxisEngine();
+        engine.receive(mc);
+        assertEquals(executedHandlers.size(), 15);
+        for (int i = 0; i < 15; i++) {
+            assertEquals(((Integer) executedHandlers.get(i)).intValue(), i + 1);
+        }
+        mc.setPaused(false);
+        engine.receive(mc);
+
+        assertEquals(executedHandlers.size(), 27);
+        for (int i = 15; i < 27; i++) {
+            assertEquals(((Integer) executedHandlers.get(i)).intValue(), i + 1);
+        }
+
+    }
+
+    public class TempHandler extends AbstractHandler {
+        private Integer index;
+        private boolean pause = false;
+        public TempHandler(int index, boolean pause) {
+            this.index = new Integer(index);
+            this.pause = pause;
+        }
+        public TempHandler(int index) {
+            this.index = new Integer(index);
+        }
+
+        public void invoke(MessageContext msgContext) throws AxisFault {
+            executedHandlers.add(index);
+            if (pause) {
+                msgContext.setPaused(true);
+            }
+        }
+
+    }
+
+    public class NullProvider extends AbstractProvider {
+        public MessageContext invoke(MessageContext msgCtx) throws AxisFault {
+            MessageContext newCtx =
+                new MessageContext(
+                    msgCtx.getGlobalContext().getRegistry(),
+                    msgCtx.getProperties(),
+                    msgCtx.getSessionContext(),msgCtx.getTransport());
+            newCtx.setEnvelope(msgCtx.getEnvelope());
+            return newCtx;
+        }
+
+    }
+
+    public class NullTransportSender implements TransportSender {
+        public void cleanup() throws AxisFault {
+        }
+
+        public QName getName() {
+            return null;
+        }
+
+        public Parameter getParameter(String name) {
+            return null;
+        }
+
+        public void init(HandlerMetadata handlerdesc) {
+        }
+
+        public void invoke(MessageContext msgContext) throws AxisFault {
+        }
+
+        public void revoke(MessageContext msgContext) {
+        }
+
+    }
+
+}

Modified: webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EngineTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EngineTest.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EngineTest.java (original)
+++ webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/EngineTest.java Sun Mar 13 18:58:57 2005
@@ -16,47 +16,118 @@
  
 package org.apache.axis.engine;
 
-import junit.framework.TestCase;
-import org.apache.axis.context.MessageContext;
+import java.util.ArrayList;
 
 import javax.xml.namespace.QName;
 
+import junit.framework.TestCase;
+
+import org.apache.axis.addressing.AddressingConstants;
+import org.apache.axis.addressing.EndpointReference;
+import org.apache.axis.context.MessageContext;
+import org.apache.axis.description.AxisGlobal;
+import org.apache.axis.description.AxisService;
+import org.apache.axis.description.AxisTransport;
+import org.apache.axis.description.HandlerMetadata;
+import org.apache.axis.description.Parameter;
+import org.apache.axis.handlers.AbstractHandler;
+import org.apache.axis.om.OMFactory;
+import org.apache.axis.providers.AbstractProvider;
+import org.apache.axis.transport.TransportSender;
+import org.apache.wsdl.WSDLService;
+
 public class EngineTest extends TestCase {
-    private QName serviceName = new QName("", "EchoService");
-    private QName operationName = new QName("", "echoVoid");
-    private QName transportName = new QName("", "NullTransport");
-    private EngineRegistry engineRegistry;
-    private MessageContext mc;
-
-    public EngineTest() {
-    }
-
-    public EngineTest(String arg0) {
-        super(arg0);
-    }
-//    protected void setUp() throws Exception {
-//        engineRegistry = EngineUtils.createMockRegistry(serviceName,operationName,transportName);
-//        mc = new MessageContext(engineRegistry,null);
-//        AxisService service = engineRegistry.getService(serviceName);
-//        mc.setTo(new EndpointReference(AddressingConstants.WSA_TO,"127.0.0.1:8080/axis/services/EchoService"));
-//        mc.setOperation(service.getOperation(operationName));
-//        
-//        OutputStream out = System.out;
-//        mc.setProperty(MessageContext.TRANSPORT_TYPE,
-//                                TransportSenderLocator.TRANSPORT_HTTP);
-//        mc.setProperty(MessageContext.TRANSPORT_WRITER,out);
-//        out.flush();
-//    }
-
-    public void testSend() throws Exception {
-//        AxisEngine engine = new AxisEngine(engineRegistry);
-//        engine.send(mc);
-    }
-//    public void testReceive()throws Exception{
-//        AxisEngine engine = new AxisEngine(engineRegistry);
-//        engine.receive(mc);
-//    }
-//    protected void tearDown() throws Exception {
-//    }
+   private MessageContext mc;
+   private ArrayList executedHandlers = new ArrayList();
+   private EngineRegistry engineRegistry;
+   private QName serviceName = new QName("NullService");
+
+   public EngineTest() {
+   }
+
+   public EngineTest(String arg0) {
+       super(arg0);
+   }
+   protected void setUp() throws Exception {
+       engineRegistry = new EngineRegistryImpl(new AxisGlobal());
+
+       AxisTransport transport = new AxisTransport(new QName("null"));
+       transport.setSender(new NullTransportSender());
+       mc = new MessageContext(engineRegistry, null, null, transport);
+       mc.setServerSide(true);
+       OMFactory omFac = OMFactory.newInstance();
+       mc.setEnvelope(omFac.getDefaultEnvelope());
+       AxisService service = new AxisService(serviceName);
+       service.setProvider(new NullProvider());
+       engineRegistry.addService(service);
+       service.setStyle(WSDLService.STYLE_DOC);
+       mc.setTo(
+           new EndpointReference(
+               AddressingConstants.WSA_TO,
+               "http://127.0.0.1:8080/axis/services/NullService"));
+
+   }
+
+   public void testSend() throws Exception {
+       AxisEngine engine = new AxisEngine();
+       engine.receive(mc);
+   }
+
+   public class TempHandler extends AbstractHandler {
+       private Integer index;
+       private boolean pause = false;
+       public TempHandler(int index, boolean pause) {
+           this.index = new Integer(index);
+           this.pause = pause;
+       }
+       public TempHandler(int index) {
+           this.index = new Integer(index);
+       }
+
+       public void invoke(MessageContext msgContext) throws AxisFault {
+           executedHandlers.add(index);
+           if (pause) {
+               msgContext.setPaused(true);
+           }
+       }
+
+   }
+
+   public class NullProvider extends AbstractProvider {
+       public MessageContext invoke(MessageContext msgCtx) throws AxisFault {
+           MessageContext newCtx =
+               new MessageContext(
+                   msgCtx.getGlobalContext().getRegistry(),
+                   msgCtx.getProperties(),
+                   msgCtx.getSessionContext(),msgCtx.getTransport());
+           newCtx.setEnvelope(msgCtx.getEnvelope());
+           return newCtx;
+       }
+
+   }
+
+   public class NullTransportSender implements TransportSender {
+       public void cleanup() throws AxisFault {
+       }
+
+       public QName getName() {
+           return null;
+       }
+
+       public Parameter getParameter(String name) {
+           return null;
+       }
+
+       public void init(HandlerMetadata handlerdesc) {
+       }
+
+       public void invoke(MessageContext msgContext) throws AxisFault {
+       }
+
+       public void revoke(MessageContext msgContext) {
+       }
+
+   }
+
 
 }

Modified: webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/MessageContextTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/MessageContextTest.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/MessageContextTest.java (original)
+++ webservices/axis/trunk/java/modules/core/src/test/org/apache/axis/engine/MessageContextTest.java Sun Mar 13 18:58:57 2005
@@ -19,7 +19,8 @@
 import org.apache.axis.AbstractTestCase;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.description.AxisGlobal;
-import org.apache.axis.om.OMFactory;
+import org.apache.axis.om.OMFactory;
+import org.apache.axis.util.Utils;
 
 public class MessageContextTest extends AbstractTestCase {
     public MessageContextTest(String testName) {
@@ -28,7 +29,7 @@
 
     public void testMesssageContext() throws AxisFault {
         EngineRegistry er = new EngineRegistryImpl(new AxisGlobal());
-        MessageContext msgctx = new MessageContext(er, null,null);
+        MessageContext msgctx = new MessageContext(er, null,null,null);
 
         msgctx.setEnvelope(OMFactory.newInstance().getDefaultEnvelope());
         assertNotNull(msgctx.getEnvelope());

Modified: webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/AxisServlet.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/AxisServlet.java (original)
+++ webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/AxisServlet.java Sun Mar 13 18:58:57 2005
@@ -39,6 +39,7 @@
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.context.SessionContext;
 import org.apache.axis.context.SimpleSessionContext;
+import org.apache.axis.description.AxisTransport;
 import org.apache.axis.engine.AxisEngine;
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.EngineRegistry;
@@ -47,6 +48,7 @@
 import org.apache.axis.om.SOAPEnvelope;
 import org.apache.axis.om.impl.llom.builder.StAXBuilder;
 import org.apache.axis.om.impl.llom.builder.StAXSOAPModelBuilder;
+import org.apache.axis.util.Utils;
 
 /**
  * Class AxisServlet
@@ -150,7 +152,7 @@
             }
             MessageContext msgContext = new MessageContext(engineRegistry,
                     null,
-                    (SessionContext) sessionContext);
+                    (SessionContext) sessionContext,Utils.createHTTPTransport(engineRegistry));
             msgContext.setServerSide(true);
             String filePart = req.getRequestURL().toString();
             msgContext.setTo(new EndpointReference(AddressingConstants.WSA_TO,
@@ -168,8 +170,10 @@
             StAXBuilder builder =
             new StAXSOAPModelBuilder(OMFactory.newInstance(), reader);
             msgContext.setEnvelope((SOAPEnvelope) builder.getDocumentElement());
-            msgContext.setProperty(MessageContext.TRANSPORT_TYPE,
-                    Constants.TRANSPORT_HTTP);
+            
+            AxisTransport httpTransport = new AxisTransport(new QName("http"));
+            httpTransport.setSender(new HTTPTransportSender());
+
             msgContext.setProperty(MessageContext.TRANSPORT_WRITER,
                     new BufferedWriter(res.getWriter()));
             engine.receive(msgContext);

Modified: webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/SimpleHTTPServer.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/SimpleHTTPServer.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/SimpleHTTPServer.java (original)
+++ webservices/axis/trunk/java/modules/http/src/java/org/apache/axis/transport/http/SimpleHTTPServer.java Sun Mar 13 18:58:57 2005
@@ -23,11 +23,11 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 
-import org.apache.axis.Constants;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.EngineRegistry;
 import org.apache.axis.engine.EngineRegistryFactory;
+import org.apache.axis.util.Utils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -131,7 +131,7 @@
                         Reader in =
                         new InputStreamReader(socket.getInputStream());
                         MessageContext msgContext =
-                        new MessageContext(this.engineReg, null, null);
+                        new MessageContext(this.engineReg, null, null,Utils.createHTTPTransport(engineReg));
                         msgContext.setServerSide(true);
                         out.write(HTTPConstants.HTTP);
                         out.write(HTTPConstants.OK);
@@ -140,8 +140,6 @@
 
                         // We do not have any Addressing Headers to put
                         // let us put the information about incoming transport
-                        msgContext.setProperty(MessageContext.TRANSPORT_TYPE,
-                                Constants.TRANSPORT_HTTP);
                         msgContext.setProperty(MessageContext.TRANSPORT_WRITER,
                                 out);
                         msgContext.setProperty(MessageContext.TRANSPORT_READER,

Modified: webservices/axis/trunk/java/modules/mail/src/java/org/apache/axis/transport/mail/MailWorker.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/mail/src/java/org/apache/axis/transport/mail/MailWorker.java?view=diff&r1=157368&r2=157369
==============================================================================
--- webservices/axis/trunk/java/modules/mail/src/java/org/apache/axis/transport/mail/MailWorker.java (original)
+++ webservices/axis/trunk/java/modules/mail/src/java/org/apache/axis/transport/mail/MailWorker.java Sun Mar 13 18:58:57 2005
@@ -37,7 +37,7 @@
 import org.apache.axis.om.SOAPEnvelope;
 import org.apache.axis.om.impl.llom.builder.StAXBuilder;
 import org.apache.axis.om.impl.llom.builder.StAXSOAPModelBuilder;
-import org.apache.axis.Constants;
+import org.apache.axis.util.Utils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.net.smtp.SMTPClient;
@@ -90,7 +90,7 @@
         MessageContext msgContext = null;
         // create and initialize a message context
         try {
-            msgContext = new MessageContext(this.reg, null, null);
+            msgContext = new MessageContext(this.reg, null, null, Utils.createHTTPTransport(this.reg));
             msgContext.setServerSide(true);
         } catch (AxisFault af) {
             log.error("Error occured while creating the message context", af);
@@ -145,9 +145,6 @@
 
                 msgContext.setEnvelope((SOAPEnvelope) builder
                         .getDocumentElement());
-
-                msgContext.setProperty(MessageContext.TRANSPORT_TYPE,
-                        Constants.TRANSPORT_MAIL);
 
                 //A writer is created and sent to the engine so that the engine
                 // can write straight to the writer