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/06/01 04:31:17 UTC

svn commit: r179336 - in /webservices/axis/trunk/java: etc/ modules/core/src/org/apache/axis/ modules/core/src/org/apache/axis/context/ modules/core/src/org/apache/axis/deployment/ modules/core/src/org/apache/axis/engine/ modules/core/src/org/apache/axis/handlers/ modules/core/src/org/apache/axis/receivers/ modules/core/src/org/apache/axis/transport/ modules/core/src/org/apache/axis/transport/http/ modules/core/src/org/apache/axis/transport/mail/ modules/core/src/org/apache/axis/util/ modules/core/test/org/apache/axis/engine/ modules/samples/test/org/apache/axis/engine/

Author: hemapani
Date: Tue May 31 19:31:16 2005
New Revision: 179336

URL: http://svn.apache.org/viewcvs?rev=179336&view=rev
Log:
fixing the REST and Engine Pausing

Modified:
    webservices/axis/trunk/java/etc/project.xml
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/deployment/DeploymentEngine.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/AxisEngine.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/Phase.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/AbstractHandler.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailTransportSender.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/SimpleMailListener.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java
    webservices/axis/trunk/java/modules/core/test/org/apache/axis/engine/EnginePausingTest.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/CallUnregisteredServiceTest.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLLoadTest.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MailEchoRawXMLTest.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MessageWithServerTest.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/RESTBasedEchoRawXMLTest.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler1.java

Modified: webservices/axis/trunk/java/etc/project.xml
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/etc/project.xml?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/etc/project.xml (original)
+++ webservices/axis/trunk/java/etc/project.xml Tue May 31 19:31:16 2005
@@ -172,9 +172,6 @@
         <exclude>**/*Abstract*.java</exclude>
 	    <exclude>**/*Util*.java</exclude> 
 		<exclude>**/*PhaseResolvingTest.java</exclude>
-		<exclude>**/*EnginePausingTest.java</exclude>
-  
-   
       </excludes>
      <includes>
         <include>**/*Test.java</include>

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java Tue May 31 19:31:16 2005
@@ -83,7 +83,7 @@
      * Field TRANSPORT_SMTP
      */
     public static final String TRANSPORT_MAIL = "mail";
-    
+
     public static final String TRANSPORT_JMS = "jms";
 
     /**
@@ -126,17 +126,12 @@
     public static final String ERROR_SERVICE_MAP = "errprservicemap";
 
     public static final String IS_FAULTY = "Fault";
-    
-    public static final String DO_REST = "doREST";
-
-
 
     public static final String MODULE_ADDRESSING = "addressing";
 
     public static final String USER_NAME = "userName";
     public static final String PASSWORD = "password";
 
-
     /**
      * Field SINGLE_SERVICE
      */
@@ -148,4 +143,20 @@
     public static final char METHOD_NAME_ESCAPE_CHARACTOR = '?';
 
     public static final String LOGGED = "Logged";
+
+    public static interface SOAP {
+        public static final String SOAP_12_CONTENT_TYPE = "application/soap+xml";
+        public static final String SOAP_11_CONTENT_TYPE = "text/xml";
+        public static final String MTOM_CONTENT_TYPE = "text/xml";
+    }
+
+    public static interface Configuration {
+        public static final String DO_REST = "doREST";
+        public static final String ENABLE_REST = "eanbleREST";
+        public static final String ENABLE_MTOM = "eanbleMTOM";
+        public static final String DO_MTOM = "doMTOM";
+    }
+    public static final String VALUE_TRUE = "true";
+    public static final String VALUE_FALSE = "false";
+
 }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java Tue May 31 19:31:16 2005
@@ -15,6 +15,8 @@
  */
 package org.apache.axis.context;
 
+import javax.xml.namespace.QName;
+
 import org.apache.axis.addressing.EndpointReference;
 import org.apache.axis.addressing.MessageInformationHeadersCollection;
 import org.apache.axis.addressing.miheaders.RelatesTo;
@@ -116,6 +118,10 @@
 
     private String serviceInstanceID;
     
+    private String pausedPhaseName;
+    
+    private QName pausedHandlerName;
+    
     /**
      * Conveniance Method, but before call engine.send() or  engine.receive() one must send transport in/out
      * @param engineContext
@@ -373,9 +379,14 @@
     /**
      * @param b
      */
-    public void setPaused(boolean b) {
-        paused = b;
+    public void setPausedTrue(QName handlerName) {
+        paused = true;
+        this.pausedHandlerName = handlerName;
     }
+    
+    public void setPausedFalse() {
+          paused = false;
+      }
 
     /**
      * @return
@@ -519,4 +530,25 @@
         }
         return obj;
     }
+    /**
+     * @return
+     */
+    public QName getPausedHandlerName() {
+        return pausedHandlerName;
+    }
+
+    /**
+     * @return
+     */
+    public String getPausedPhaseName() {
+        return pausedPhaseName;
+    }
+
+    /**
+     * @param name
+     */
+    public void setPausedPhaseName(String name) {
+        pausedPhaseName = name;
+    }
+
 }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/deployment/DeploymentEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/deployment/DeploymentEngine.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/deployment/DeploymentEngine.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/deployment/DeploymentEngine.java Tue May 31 19:31:16 2005
@@ -16,6 +16,21 @@
 
 package org.apache.axis.deployment;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
 import org.apache.axis.context.ConfigurationContextFactory;
 import org.apache.axis.deployment.listener.RepositoryListenerImpl;
 import org.apache.axis.deployment.repository.utill.ArchiveFileData;
@@ -25,23 +40,21 @@
 import org.apache.axis.deployment.scheduler.Scheduler;
 import org.apache.axis.deployment.scheduler.SchedulerTask;
 import org.apache.axis.deployment.util.DeploymentData;
-import org.apache.axis.description.*;
+import org.apache.axis.description.Flow;
+import org.apache.axis.description.HandlerDescription;
+import org.apache.axis.description.ModuleDescription;
+import org.apache.axis.description.OperationDescription;
+import org.apache.axis.description.Parameter;
+import org.apache.axis.description.ServiceDescription;
 import org.apache.axis.engine.AxisConfiguration;
-import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.AxisConfigurationImpl;
+import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.Handler;
 import org.apache.axis.modules.Module;
 import org.apache.axis.phaseresolver.PhaseException;
 import org.apache.axis.phaseresolver.PhaseMetadata;
-import org.apache.axis.phaseresolver.PhaseResolver;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import java.io.*;
-import java.util.*;
-import java.util.zip.ZipInputStream;
 
 
 public class DeploymentEngine implements DeploymentConstants {

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/AxisEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/AxisEngine.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/AxisEngine.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/AxisEngine.java Tue May 31 19:31:16 2005
@@ -68,8 +68,12 @@
             OperationContext operationContext = msgContext.getOperationContext();
 
             ArrayList phases = operationContext.getAxisOperation().getPhasesOutFlow();
-            invokePhases(phases, msgContext);
-            
+            if (msgContext.isPaused()) {
+                resumeInvocationPhases(phases, msgContext);
+            } else {
+                invokePhases(phases, msgContext);
+            }
+
             TransportOutDescription transportOut = msgContext.getTransportOut();
 
             TransportSender sender = transportOut.getSender();
@@ -91,25 +95,36 @@
      * @see Phase
      * @see Handler
      */
-    public void receive(MessageContext context) throws AxisFault {
+    public void receive(MessageContext msgContext) throws AxisFault {
+        boolean paused = msgContext.isPaused();
         try {
-            ConfigurationContext sysCtx = context.getSystemContext();
-            ArrayList phases = sysCtx.getAxisConfiguration().getInPhasesUptoAndIncludingPostDispatch();
-            invokePhases(phases, context);
-            verifyContextBuilt(context);
-            
-            OperationContext operationContext = context.getOperationContext();
+            ConfigurationContext sysCtx = msgContext.getSystemContext();
+            ArrayList phases =
+                sysCtx.getAxisConfiguration().getInPhasesUptoAndIncludingPostDispatch();
+
+            if (paused) {
+                resumeInvocationPhases(phases, msgContext);
+            } else {
+                invokePhases(phases, msgContext);
+            }
+            verifyContextBuilt(msgContext);
+
+            OperationContext operationContext = msgContext.getOperationContext();
             OperationDescription operationDescription = operationContext.getAxisOperation();
             phases = operationDescription.getRemainingPhasesInFlow();
-            invokePhases(phases, context);
-            if (context.isServerSide()) {
+            if (paused) {
+                resumeInvocationPhases(phases, msgContext);
+            } else {
+                invokePhases(phases, msgContext);
+            }
+            if (msgContext.isServerSide()) {
                 // add invoke Phase
                 MessageReceiver reciver =
-                    context.getOperationContext().getAxisOperation().getMessageReciever();
-                reciver.recieve(context);
+                    msgContext.getOperationContext().getAxisOperation().getMessageReciever();
+                reciver.recieve(msgContext);
             }
         } catch (Throwable e) {
-            handleFault(context, e);
+            handleFault(msgContext, e);
         }
     }
 
@@ -131,25 +146,25 @@
 
             // create a SOAP envelope with the Fault
             MessageContext faultContext =
-                new MessageContext(engineContext,
+                new MessageContext(
+                    engineContext,
                     context.getSessionContext(),
                     context.getTransportIn(),
                     context.getTransportOut());
-            
-            if(context.getFaultTo() != null){
+
+            if (context.getFaultTo() != null) {
                 faultContext.setFaultTo(context.getFaultTo());
-            } else{
+            } else {
                 Object writer = context.getProperty(MessageContext.TRANSPORT_WRITER);
-                if(writer != null){
-                    faultContext.setProperty(MessageContext.TRANSPORT_WRITER,writer);
-                }else{
+                if (writer != null) {
+                    faultContext.setProperty(MessageContext.TRANSPORT_WRITER, writer);
+                } else {
                     //TODO Opps there are no place to send this, we will log and should we throw the exception? 
                     log.error("Error in fault flow", e);
                     e.printStackTrace();
                 }
-            }       
-                    
-                    
+            }
+
             faultContext.setOperationContext(context.getOperationContext());
             faultContext.setProcessingFault(true);
             faultContext.setServerSide(true);
@@ -161,8 +176,8 @@
             body.addFault(new AxisFault(e.getMessage(), e));
             faultContext.setEnvelope(envelope);
 
-            OperationContext opContext  = context.getOperationContext();
-            if(opContext != null){
+            OperationContext opContext = context.getOperationContext();
+            if (opContext != null) {
                 OperationDescription axisOperation = opContext.getAxisOperation();
                 ArrayList phases = axisOperation.getPhasesOutFaultFlow();
                 invokePhases(phases, context);
@@ -193,9 +208,28 @@
 
     private void invokePhases(ArrayList phases, MessageContext msgctx) throws AxisFault {
         int count = phases.size();
-        for (int i = 0; i < count; i++) {
+        for (int i = 0; (i < count && !msgctx.isPaused()); i++) {
             Phase phase = (Phase) phases.get(i);
             phase.invoke(msgctx);
+        }
+    }
+
+    public void resumeInvocationPhases(ArrayList phases, MessageContext msgctx) throws AxisFault {
+        msgctx.setPausedFalse();
+        int count = phases.size();
+        boolean foudMatch = false;
+
+        for (int i = 0; i < count && !msgctx.isPaused(); i++) {
+            Phase phase = (Phase) phases.get(i);
+            if (phase.getPhaseName().equals(msgctx.getPausedPhaseName())) {
+                foudMatch = true;
+                phase.invokeStartFromHandler(msgctx.getPausedHandlerName(), msgctx);
+            } else {
+                if (foudMatch) {
+                    phase.invoke(msgctx);
+                }
+
+            }
         }
     }
 

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/Phase.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/Phase.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/Phase.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/Phase.java Tue May 31 19:31:16 2005
@@ -23,6 +23,8 @@
 
 import java.util.ArrayList;
 
+import javax.xml.namespace.QName;
+
 /**
  * <p>This is Phase, a orderd collection of Handlers.
  * seems this is Handler Chain with order.</p>
@@ -91,7 +93,6 @@
      */
     private boolean isonehanlder;
 
-
     /**
      * Constructor Phase
      *
@@ -109,8 +110,8 @@
      * @param index
      */
     public void addHandler(Handler handler, int index) {
-        log.info("Handler " + handler.getName() + "Added to place " + 1
-                + " At the Phase " + phaseName);
+        log.info(
+            "Handler " + handler.getName() + "Added to place " + 1 + " At the Phase " + phaseName);
         handlers.add(index, handler);
     }
 
@@ -120,8 +121,7 @@
      * @param handler
      */
     public void addHandler(Handler handler) {
-        log.info("Handler " + handler.getName() + " Added to the Phase "
-                + phaseName);
+        log.info("Handler " + handler.getName() + " Added to the Phase " + phaseName);
         handlers.add(handler);
     }
 
@@ -132,13 +132,17 @@
      * @throws AxisFault
      */
     public void invoke(MessageContext msgctx) throws AxisFault {
+        msgctx.setPausedPhaseName(this.getPhaseName());
         //If phase first Hnadler is there then it should run first
         if (phaseFirst != null) {
             if (msgctx.isPaused()) {
                 return;
             } else {
-                log.info("Invoke the Phase first handler " + phaseFirst.getName()
-                        + "with in the Phase " + phaseName);
+                log.info(
+                    "Invoke the Phase first handler "
+                        + phaseFirst.getName()
+                        + "with in the Phase "
+                        + phaseName);
                 phaseFirst.invoke(msgctx);
             }
         }
@@ -150,8 +154,11 @@
             } else {
                 Handler handler = (Handler) handlers.get(indexOfHandlerToExecute);
                 if (handler != null) {
-                    log.info("Invoke the Handler " + handler.getName()
-                            + "with in the Phase " + phaseName);
+                    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
@@ -164,8 +171,11 @@
             if (msgctx.isPaused()) {
                 return;
             } else {
-                log.info("Invoke the Phase first handler " + phaseLast.getName()
-                        + "with in the Phase " + phaseName);
+                log.info(
+                    "Invoke the Phase first handler "
+                        + phaseLast.getName()
+                        + "with in the Phase "
+                        + phaseName);
                 phaseLast.invoke(msgctx);
             }
         }
@@ -178,16 +188,12 @@
         return phaseName;
     }
 
-
     public int getHandlerCount() {
         return handlers.size();
     }
 
-
-
     //////////////////////////////////////////////////////////////// FROM PhaseMetaData //////////
 
-
     /**
      * Method getBeforeAfter
      *
@@ -198,9 +204,14 @@
      */
     private int getBeforeAfter(Handler handler) throws PhaseException {
         if ((!handler.getHandlerDesc().getRules().getBefore().equals(""))
-                && (!handler.getHandlerDesc().getRules().getAfter().equals(""))) {
-            if (handler.getHandlerDesc().getRules().getBefore().equals(handler.getHandlerDesc().getRules().getAfter())) {
-                throw new PhaseException("Both before and after cannot be the same for this handler"
+            && (!handler.getHandlerDesc().getRules().getAfter().equals(""))) {
+            if (handler
+                .getHandlerDesc()
+                .getRules()
+                .getBefore()
+                .equals(handler.getHandlerDesc().getRules().getAfter())) {
+                throw new PhaseException(
+                    "Both before and after cannot be the same for this handler"
                         + handler.getName());
             }
             return BOTH_BEFORE_AFTER;
@@ -219,14 +230,15 @@
      * @param phaseFirst
      * @throws PhaseException
      */
-    public void setPhaseFirst(Handler phaseFirst)
-            throws PhaseException {
+    public void setPhaseFirst(Handler phaseFirst) throws PhaseException {
         if (phasefirstset) {
-            throw new PhaseException("PhaseFirst alredy has been set, cannot have two phaseFirst Handler for same phase "
+            throw new PhaseException(
+                "PhaseFirst alredy has been set, cannot have two phaseFirst Handler for same phase "
                     + this.getPhaseName());
         } else {
             if (getBeforeAfter(phaseFirst) != ANYWHERE) {
-                throw new PhaseException("Handler with PhaseFirst can not have any before or after proprty error in "
+                throw new PhaseException(
+                    "Handler with PhaseFirst can not have any before or after proprty error in "
                         + phaseFirst.getName());
             } else {
                 this.phaseFirst = phaseFirst;
@@ -235,7 +247,6 @@
         }
     }
 
-
     /**
      * Method setPhaseLast
      *
@@ -244,11 +255,13 @@
      */
     public void setPhaseLast(Handler phaseLast) throws PhaseException {
         if (phaselastset) {
-            throw new PhaseException("PhaseLast already has been set, cannot have two PhaseLast Handler for same phase "
+            throw new PhaseException(
+                "PhaseLast already has been set, cannot have two PhaseLast Handler for same phase "
                     + this.getPhaseName());
         } else {
             if (getBeforeAfter(phaseLast) != ANYWHERE) {
-                throw new PhaseException("Handler with PhaseLast property can not have any before or after property error in "
+                throw new PhaseException(
+                    "Handler with PhaseLast property can not have any before or after property error in "
                         + phaseLast.getName());
             } else {
                 this.phaseLast = phaseLast;
@@ -257,7 +270,6 @@
         }
     }
 
-
     /**
      * Method addHandler
      *
@@ -266,13 +278,18 @@
      */
     public void addHandler(HandlerDescription handler) throws PhaseException {
         if (isonehanlder) {
-            throw new PhaseException(this.getPhaseName() + "can only have one handler, since there is a " +
-                    "handler with both phaseFirst and PhaseLast true ");
+            throw new PhaseException(
+                this.getPhaseName()
+                    + "can only have one handler, since there is a "
+                    + "handler with both phaseFirst and PhaseLast true ");
         } else {
             if (handler.getRules().isPhaseFirst() && handler.getRules().isPhaseLast()) {
                 if (handlers.size() > 0) {
-                    throw new PhaseException(this.getPhaseName() + " can not have more than one handler "
-                            + handler.getName() + " is invalid or incorrect phase rules");
+                    throw new PhaseException(
+                        this.getPhaseName()
+                            + " can not have more than one handler "
+                            + handler.getName()
+                            + " is invalid or incorrect phase rules");
                 } else {
                     handlers.add(handler.getHandler());
                     isonehanlder = true;
@@ -303,7 +320,8 @@
         if (phaseFirst != null) {
             String phasFirstname = phaseFirst.getHandlerDesc().getName().getLocalPart();
             if (handler.getHandlerDesc().getRules().getBefore().equals(phasFirstname)) {
-                throw new PhaseException("Trying to insert  a Handler "
+                throw new PhaseException(
+                    "Trying to insert  a Handler "
                         + handler.getName()
                         + " before phaseFirst "
                         + phasFirstname);
@@ -321,7 +339,8 @@
         if (phaseLast != null) {
             String phaseLastName = phaseLast.getHandlerDesc().getName().getLocalPart();
             if (handler.getName().equals(phaseLastName)) {
-                throw new PhaseException("Try to insert a Handler "
+                throw new PhaseException(
+                    "Try to insert a Handler "
                         + handler.getName()
                         + " after phaseLast "
                         + phaseLastName);
@@ -397,8 +416,7 @@
      * @param handler
      * @throws PhaseException
      */
-    private void insertBeforeandAfter(Handler handler)
-            throws PhaseException {
+    private void insertBeforeandAfter(Handler handler) throws PhaseException {
         int before = -1;
         int after = -1;
 
@@ -407,35 +425,57 @@
          * just add the entery to vector
          */
         if ((phaseFirst != null) && (phaseLast != null)) {
-            if ((phaseFirst.getHandlerDesc().getName().getLocalPart().equals(handler.getHandlerDesc().getRules().getAfter()))
-                    && (phaseLast.getHandlerDesc().getName().getLocalPart().equals(handler.getHandlerDesc().getRules().getBefore()))) {
+            if ((phaseFirst
+                .getHandlerDesc()
+                .getName()
+                .getLocalPart()
+                .equals(handler.getHandlerDesc().getRules().getAfter()))
+                && (phaseLast
+                    .getHandlerDesc()
+                    .getName()
+                    .getLocalPart()
+                    .equals(handler.getHandlerDesc().getRules().getBefore()))) {
                 handlers.add(handler);
                 return;
             }
         }
 
-        if (phaseFirst != null &&
-                (phaseFirst.getHandlerDesc().getName().getLocalPart().equals(handler.getHandlerDesc().getRules().getAfter()))) {
+        if (phaseFirst != null
+            && (phaseFirst
+                .getHandlerDesc()
+                .getName()
+                .getLocalPart()
+                .equals(handler.getHandlerDesc().getRules().getAfter()))) {
             after = 0;
         }
-        if (phaseLast != null &&
-                (phaseLast.getHandlerDesc().getName().getLocalPart().equals(handler.getHandlerDesc().getRules().getBefore()))) {
+        if (phaseLast != null
+            && (phaseLast
+                .getHandlerDesc()
+                .getName()
+                .getLocalPart()
+                .equals(handler.getHandlerDesc().getRules().getBefore()))) {
             before = handlers.size();
         }
 
         for (int i = 0; i < handlers.size(); i++) {
             Handler temphandler = (Handler) handlers.get(i);
-            if (handler.getHandlerDesc().getRules().getAfter().equals(temphandler.getHandlerDesc().getName().getLocalPart())) {
+            if (handler
+                .getHandlerDesc()
+                .getRules()
+                .getAfter()
+                .equals(temphandler.getHandlerDesc().getName().getLocalPart())) {
                 after = i;
-            } else if (handler.getHandlerDesc().getRules().getBefore().equals(temphandler.getHandlerDesc().getName().getLocalPart())) {
+            } else if (
+                handler.getHandlerDesc().getRules().getBefore().equals(
+                    temphandler.getHandlerDesc().getName().getLocalPart())) {
                 before = i;
             }
             if ((after >= 0) && (before >= 0)) {
                 // no point of continue since both the before and after index has found
                 if (after > before) {
                     //TODO fix me Deepal , (have to check this)
-                    throw new PhaseException("incorrect handler order for "
-                            + handler.getHandlerDesc().getName());
+                    throw new PhaseException(
+                        "incorrect handler order for " + handler.getHandlerDesc().getName());
                 } else {
                     if (after + 1 <= handlers.size()) {
                         handlers.add(after + 1, handler);
@@ -456,22 +496,22 @@
         validateafter(han);
         validatebefore(han);
         switch (type) {
-            case BOTH_BEFORE_AFTER:
+            case BOTH_BEFORE_AFTER :
                 {
                     insertBeforeandAfter(han);
                     break;
                 }
-            case BEFORE:
+            case BEFORE :
                 {
                     insertBefore(han);
                     break;
                 }
-            case AFTER:
+            case AFTER :
                 {
                     insertAfter(han);
                     break;
                 }
-            case ANYWHERE:
+            case ANYWHERE :
                 {
                     handlers.add(han);
                     break;
@@ -479,10 +519,10 @@
         }
     }
 
-   /**
-    * To get the all the handlers in the phase
-    * @return
-    */
+    /**
+     * To get the all the handlers in the phase
+     * @return
+     */
     public ArrayList getHandlers() {
         ArrayList phaseHandlers = new ArrayList();
         if (phaseFirst != null) {
@@ -496,6 +536,25 @@
             phaseHandlers.add(phaseLast);
         }
         return phaseHandlers;
+    }
+    public void invokeStartFromHandler(QName name, MessageContext msgctx) throws AxisFault {
+        msgctx.setPausedPhaseName(this.getPhaseName());
+        boolean foudMatch = false;
+        ArrayList phaseHandlers = getHandlers();
+        for (int i = 0; i < phaseHandlers.size(); i++) {
+            Handler handler = (Handler) handlers.get(i);
+            if(handler != null && handler.getName().equals(name)){
+                foudMatch = true;
+            }
+            
+            if(handler != null && foudMatch){
+                handler.invoke(msgctx);
+            }
+        }
+    }
+
+    public String toString() {
+        return this.getPhaseName();
     }
 
 }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/AbstractHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/AbstractHandler.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/AbstractHandler.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/AbstractHandler.java Tue May 31 19:31:16 2005
@@ -32,7 +32,7 @@
      * Field EMPTY_HANDLER_METADATA
      */
     private static HandlerDescription EMPTY_HANDLER_METADATA =
-            new HandlerDescription();
+            new HandlerDescription(new QName("deafult Handler"));
 
     /**
      * Field handlerDesc
@@ -99,4 +99,12 @@
     public HandlerDescription getHandlerDesc() {
         return handlerDesc;
     }
+    /* (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString() {
+        QName name = this.getName();
+        return (name!=null)?name.toString():null;
+    }
+
 }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java Tue May 31 19:31:16 2005
@@ -15,6 +15,7 @@
  */
 package org.apache.axis.receivers;
 
+import org.apache.axis.Constants;
 import org.apache.axis.addressing.AddressingConstants;
 import org.apache.axis.addressing.MessageInformationHeadersCollection;
 import org.apache.axis.addressing.miheaders.RelatesTo;
@@ -55,6 +56,8 @@
         newmsgCtx.setOperationContext(messgeCtx.getOperationContext());
         newmsgCtx.setServiceContext(messgeCtx.getServiceContext());
         newmsgCtx.setProperty(MessageContext.TRANSPORT_WRITER,messgeCtx.getProperty(MessageContext.TRANSPORT_WRITER));
+        newmsgCtx.setProperty(Constants.Configuration.DO_REST,messgeCtx.getProperty((Constants.Configuration.DO_REST)));
+        newmsgCtx.setProperty(Constants.Configuration.DO_MTOM,messgeCtx.getProperty(Constants.Configuration.DO_MTOM));
         
         invokeBusinessLogic(messgeCtx,newmsgCtx);
 

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java Tue May 31 19:31:16 2005
@@ -38,19 +38,17 @@
  * TRANSPORT_WRITER property set in the message Context with a Writer. This Class would write the 
  * SOAPMessage using either of the methods in the order To then Writer.
  */
-public abstract class AbstractTransportSender
-    extends AbstractHandler
-    implements TransportSender {
+public abstract class AbstractTransportSender extends AbstractHandler implements TransportSender {
     /**
      * Field log
      */
     private Log log = LogFactory.getLog(getClass());
+    protected boolean doREST = false;
 
     /**
      * Field NAME
      */
-    public static final QName NAME =
-        new QName("http://axis.ws.apache.org", "TransportSender");
+    public static final QName NAME = new QName("http://axis.ws.apache.org", "TransportSender");
 
     /**
      * Constructor AbstractTransportSender
@@ -66,13 +64,19 @@
      * @throws AxisFault
      */
     public void invoke(MessageContext msgContext) throws AxisFault {
+        //Check for the REST behaviour, if you desire rest beahaviour
+        //put a <parameter name="doREST" value="true"/> at the server.xml/client.xml file
+        Object doREST = msgContext.getProperty(Constants.Configuration.DO_REST);
+        if (doREST != null && Constants.VALUE_TRUE.equals(doREST)) {
+            this.doREST = true;
+        }
+
         Writer out = null;
 
         EndpointReference epr = null;
 
         if (msgContext.getTo() != null
-            && !AddressingConstants.EPR_ANONYMOUS_URL.equals(
-                msgContext.getTo().getAddress())) {
+            && !AddressingConstants.EPR_ANONYMOUS_URL.equals(msgContext.getTo().getAddress())) {
             epr = msgContext.getTo();
         }
 
@@ -82,43 +86,29 @@
             writeMessage(msgContext, out);
             finalizeSendWithToAddress(msgContext, out);
         } else {
-            out =
-                (Writer) msgContext.getProperty(
-                    MessageContext.TRANSPORT_WRITER);
+            out = (Writer) msgContext.getProperty(MessageContext.TRANSPORT_WRITER);
             if (out != null) {
-                startSendWithOutputStreamFromIncomingConnection(
-                    msgContext,
-                    out);
+                startSendWithOutputStreamFromIncomingConnection(msgContext, out);
                 writeMessage(msgContext, out);
-                finalizeSendWithOutputStreamFromIncomingConnection(
-                    msgContext,
-                    out);
+                finalizeSendWithOutputStreamFromIncomingConnection(msgContext, out);
             } else {
                 throw new AxisFault("Both the TO and Property MessageContext.TRANSPORT_WRITER is Null, No where to send");
             }
         }
     }
 
-    public void writeMessage(MessageContext msgContext, Writer out)
-        throws AxisFault {
+    public void writeMessage(MessageContext msgContext, Writer out) throws AxisFault {
         SOAPEnvelope envelope = msgContext.getEnvelope();
         OMElement outputMessage = envelope;
 
-        //Check for the REST behaviour, if you desire rest beahaviour
-        //put a <parameter name="doREST" value="true"/> at the server.xml/client.xml file
-
-        Object doREST = msgContext.getProperty(Constants.DO_REST);
-        if (envelope != null
-            && doREST != null
-            && "true".equals(doREST)) {
+        if (envelope != null && this.doREST) {
             outputMessage = envelope.getBody().getFirstElement();
         }
 
         if (outputMessage != null) {
             XMLStreamWriter outputWriter = null;
             try {
-                outputWriter =
-                    XMLOutputFactory.newInstance().createXMLStreamWriter(out);
+                outputWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(out);
                 outputMessage.serialize(outputWriter);
                 outputWriter.flush();
                 out.flush();
@@ -131,13 +121,9 @@
         }
     }
 
-    public abstract void startSendWithToAddress(
-        MessageContext msgContext,
-        Writer writer)
+    public abstract void startSendWithToAddress(MessageContext msgContext, Writer writer)
         throws AxisFault;
-    public abstract void finalizeSendWithToAddress(
-        MessageContext msgContext,
-        Writer writer)
+    public abstract void finalizeSendWithToAddress(MessageContext msgContext, Writer writer)
         throws AxisFault;
 
     public abstract void startSendWithOutputStreamFromIncomingConnection(
@@ -149,6 +135,5 @@
         Writer writer)
         throws AxisFault;
 
-    protected abstract Writer openTheConnection(EndpointReference epr)
-        throws AxisFault;
+    protected abstract Writer openTheConnection(EndpointReference epr) throws AxisFault;
 }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java Tue May 31 19:31:16 2005
@@ -19,10 +19,9 @@
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.Collection;
-import java.util.Iterator;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
@@ -37,23 +36,23 @@
 import javax.xml.stream.XMLStreamReader;
 
 import org.apache.axis.Constants;
-import org.apache.axis.deployment.util.DeploymentData;
-import org.apache.axis.description.ServiceDescription;
 import org.apache.axis.addressing.AddressingConstants;
 import org.apache.axis.addressing.EndpointReference;
 import org.apache.axis.context.ConfigurationContext;
 import org.apache.axis.context.ConfigurationContextFactory;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.context.SessionContext;
+import org.apache.axis.deployment.util.DeploymentData;
+import org.apache.axis.engine.AxisConfigurationImpl;
 import org.apache.axis.engine.AxisEngine;
 import org.apache.axis.engine.AxisFault;
-import org.apache.axis.engine.AxisConfigurationImpl;
 import org.apache.axis.om.impl.llom.builder.StAXBuilder;
 import org.apache.axis.om.impl.llom.builder.StAXOMBuilder;
 import org.apache.axis.soap.SOAPEnvelope;
 import org.apache.axis.soap.SOAPFactory;
 import org.apache.axis.soap.impl.llom.builder.StAXSOAPModelBuilder;
 import org.apache.axis.soap.impl.llom.soap11.SOAP11Factory;
+import org.apache.axis.util.Utils;
 
 /**
  * Class AxisServlet
@@ -234,10 +233,11 @@
                     XMLInputFactory.newInstance().createXMLStreamReader(
                             new BufferedReader(
                                     new InputStreamReader(req.getInputStream())));
+            Utils.configureMessageContextForHTTP(req.getContentType(),soapActionString,msgContext);                                  
 
             //Check for the REST behaviour, if you desire rest beahaviour
             //put a <parameter name="doREST" value="true"/> at the server.xml/client.xml file
-            Object doREST = msgContext.getProperty(Constants.DO_REST);
+            Object doREST = msgContext.getProperty(Constants.Configuration.DO_REST);
             StAXBuilder builder = null;
             SOAPEnvelope envelope = null;
             if (doREST != null && "true".equals(doREST)) {

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java Tue May 31 19:31:16 2005
@@ -35,6 +35,7 @@
 import org.apache.axis.soap.SOAPFactory;
 import org.apache.axis.soap.impl.llom.builder.StAXSOAPModelBuilder;
 import org.apache.axis.soap.impl.llom.soap11.SOAP11Factory;
+import org.apache.axis.util.Utils;
 
 /**
  * Class HTTPTransportReceiver
@@ -105,6 +106,7 @@
             if (serverSide) {
                 msgContext.setWSAAction(
                     (String) map.get(HTTPConstants.HEADER_SOAP_ACTION));
+                Utils.configureMessageContextForHTTP((String)map.get(HTTPConstants.HEADER_CONTENT_TYPE),msgContext.getWSAAction(),msgContext);
 
                 String requestURI = (String) map.get(HTTPConstants.REQUEST_URI);
                 msgContext.setTo(
@@ -131,7 +133,7 @@
             try {
                 //Check for the REST behaviour, if you desire rest beahaviour
                 //put a <parameter name="doREST" value="true"/> at the server.xml/client.xml file
-                Object doREST = msgContext.getProperty(Constants.DO_REST);
+                Object doREST = msgContext.getProperty(Constants.Configuration.DO_REST);
                 XMLStreamReader xmlreader =
                     XMLInputFactory.newInstance().createXMLStreamReader(in);
                 StAXBuilder builder = null;

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java Tue May 31 19:31:16 2005
@@ -83,7 +83,10 @@
         buf.append("Cache-Control: no-cache\n");
         buf.append("Pragma: no-cache\n");
         buf.append("Content-Length: " + contentLength + "\n");
-        buf.append("SOAPAction: \"" + soapActionString + "\"\n\n");
+        if(!this.doREST){
+            buf.append("SOAPAction: \"" + soapActionString + "\"\n");
+        }
+        buf.append("\n");
         out.write(buf.toString());
     }
 

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailTransportSender.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailTransportSender.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailTransportSender.java Tue May 31 19:31:16 2005
@@ -29,6 +29,7 @@
 import javax.mail.PasswordAuthentication;
 import javax.mail.Session;
 import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.axis.addressing.EndpointReference;
@@ -56,34 +57,6 @@
     }
 
     public void startSendWithToAddress(MessageContext msgContext, Writer writer) throws AxisFault {
-    }
-
-    protected Writer openTheConnection(EndpointReference epr) throws AxisFault {
-
-        try {
-
-            in = new PipedInputStream();
-            PipedOutputStream out = new PipedOutputStream(in);
-
-            return new OutputStreamWriter(out);
-        } catch (IOException e) {
-            throw new AxisFault(e);
-        }
-
-    }
-
-    //Output Stream based cases are not supported 
-    public void startSendWithOutputStreamFromIncomingConnection(
-        MessageContext msgContext,
-        Writer writer)
-        throws AxisFault {
-        throw new UnsupportedOperationException();
-
-    }
-    public void finalizeSendWithOutputStreamFromIncomingConnection(
-        MessageContext msgContext,
-        Writer writer)
-        throws AxisFault {
         try {
             TransportOutDescription transportOut = msgContext.getTransportOut();
             user = Utils.getParameterValue(transportOut.getParameter(MailConstants.SMTP_USER));
@@ -111,8 +84,8 @@
                 if (action != null) {
                     msg.setHeader("transport.mail.soapaction", action);
                 }
-
-                msg.addRecipients(Message.RecipientType.TO, msgContext.getTo().getAddress());
+                
+                msg.addRecipient(Message.RecipientType.TO,  new InternetAddress(msgContext.getTo().getAddress()));
                 msg.setSubject(msgContext.getTo().getAddress());
                 Transport.send(msg);
 
@@ -132,6 +105,35 @@
         } catch (MessagingException e) {
             throw new AxisFault(e);
         }
+
+    }
+
+    protected Writer openTheConnection(EndpointReference epr) throws AxisFault {
+
+        try {
+
+            in = new PipedInputStream();
+            PipedOutputStream out = new PipedOutputStream(in);
+
+            return new OutputStreamWriter(out);
+        } catch (IOException e) {
+            throw new AxisFault(e);
+        }
+
+    }
+
+    //Output Stream based cases are not supported 
+    public void startSendWithOutputStreamFromIncomingConnection(
+        MessageContext msgContext,
+        Writer writer)
+        throws AxisFault {
+        throw new UnsupportedOperationException();
+
+    }
+    public void finalizeSendWithOutputStreamFromIncomingConnection(
+        MessageContext msgContext,
+        Writer writer)
+        throws AxisFault {
     }
     /* (non-Javadoc)
      * @see org.apache.axis.transport.TransportSender#cleanUp()

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/SimpleMailListener.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/SimpleMailListener.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/SimpleMailListener.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/SimpleMailListener.java Tue May 31 19:31:16 2005
@@ -191,8 +191,7 @@
                 //log.debug(Messages.getMessage("exception00"), e); TODO Issue
                 // #1 CT 07-Feb-2005.
                 log.debug("An error occured when running the mail listner." + e.getMessage(), e);
-                System.out.println(
-                    "An error occured when running the mail listner." + e.getMessage());
+                e.printStackTrace();
                 break;
             }
             try {

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java Tue May 31 19:31:16 2005
@@ -17,6 +17,8 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.axis.Constants;
+import org.apache.axis.context.MessageContext;
 import org.apache.axis.description.Flow;
 import org.apache.axis.description.HandlerDescription;
 import org.apache.axis.description.OperationDescription;
@@ -134,5 +136,24 @@
             return (String)param.getValue();
         }
     }
+    
+    public static void configureMessageContextForHTTP(String contextType,String soapAction, MessageContext msgCtx) throws AxisFault{
+        if(Constants.SOAP.MTOM_CONTENT_TYPE.equals(contextType)){
+            if(Constants.VALUE_TRUE.equals(msgCtx.getProperty(Constants.Configuration.ENABLE_MTOM))){
+                msgCtx.setProperty(Constants.Configuration.DO_MTOM,Constants.VALUE_TRUE);
+            }else{
+                throw new AxisFault("MTOTM Not supported");
+            }
+        }else  if(Constants.SOAP.SOAP_12_CONTENT_TYPE.equals(contextType)){
+            //TODO what to do with 1.2 for REST
+        }else  if(contextType != null && contextType.indexOf(Constants.SOAP.SOAP_11_CONTENT_TYPE) > -1){
+            if((soapAction == null || soapAction.length() == 0) 
+            && Constants.VALUE_TRUE.equals(msgCtx.getProperty(Constants.Configuration.ENABLE_REST))){
+                msgCtx.setProperty(Constants.Configuration.DO_REST,Constants.VALUE_TRUE);
+            }
+        }
+    
+    }
+    
     
 }

Modified: webservices/axis/trunk/java/modules/core/test/org/apache/axis/engine/EnginePausingTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/test/org/apache/axis/engine/EnginePausingTest.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/test/org/apache/axis/engine/EnginePausingTest.java (original)
+++ webservices/axis/trunk/java/modules/core/test/org/apache/axis/engine/EnginePausingTest.java Tue May 31 19:31:16 2005
@@ -22,6 +22,7 @@
 import org.apache.axis.context.ConfigurationContext;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.context.ServiceContext;
+import org.apache.axis.description.HandlerDescription;
 import org.apache.axis.description.OperationDescription;
 import org.apache.axis.description.ServiceDescription;
 import org.apache.axis.description.TransportInDescription;
@@ -36,7 +37,6 @@
 import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 
-
 public class EnginePausingTest extends TestCase {
 
     private QName serviceName = new QName("NullService");
@@ -81,49 +81,46 @@
         SOAPFactory omFac = OMAbstractFactory.getSOAP11Factory();
         mc.setEnvelope(omFac.getDefaultEnvelope());
 
-        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);
+        Phase phase1 = new Phase("1");
+        phase1.addHandler(new TempHandler(1));
+        phase1.addHandler(new TempHandler(2));
+        phase1.addHandler(new TempHandler(3));
+        phase1.addHandler(new TempHandler(4));
+        phase1.addHandler(new TempHandler(5));
+        phase1.addHandler(new TempHandler(6));
+        phase1.addHandler(new TempHandler(7));
+        phase1.addHandler(new TempHandler(8));
+        phase1.addHandler(new TempHandler(9));
+
+        Phase phase2 = new Phase("2");
+        phase2.addHandler(new TempHandler(10));
+        phase2.addHandler(new TempHandler(11));
+        phase2.addHandler(new TempHandler(12));
+        phase2.addHandler(new TempHandler(13));
+        phase2.addHandler(new TempHandler(14));
+        phase2.addHandler(new TempHandler(15, true));
+        phase2.addHandler(new TempHandler(16));
+        phase2.addHandler(new TempHandler(17));
+        phase2.addHandler(new TempHandler(18));
+
+        Phase phase3 = new Phase("3");
+        phase3.addHandler(new TempHandler(19));
+        phase3.addHandler(new TempHandler(20));
+        phase3.addHandler(new TempHandler(21));
+        phase3.addHandler(new TempHandler(22));
+        phase3.addHandler(new TempHandler(23));
+        phase3.addHandler(new TempHandler(24));
+        phase3.addHandler(new TempHandler(25));
+        phase3.addHandler(new TempHandler(26));
+        phase3.addHandler(new TempHandler(27));
 
         ServiceContext serviceContext = new ServiceContext(service, engineContext);
         engineContext.registerServiceContext(serviceContext.getServiceInstanceID(), serviceContext);
 
         //TODO
-        axisOp.getRemainingPhasesInFlow().addAll(phases);
+        axisOp.getRemainingPhasesInFlow().add(phase1);
+        axisOp.getRemainingPhasesInFlow().add(phase2);
+        axisOp.getRemainingPhasesInFlow().add(phase3);
 
         mc.setWSAAction(operationName.getLocalPart());
         System.out.flush();
@@ -131,14 +128,14 @@
     }
 
     public void testReceive() throws Exception {
-        mc.setTo(new EndpointReference(AddressingConstants.WSA_TO, "axis/services/NullService/DummyOp"));
+        mc.setTo(
+            new EndpointReference(AddressingConstants.WSA_TO, "axis/services/NullService/DummyOp"));
         AxisEngine engine = new AxisEngine(engineContext);
         engine.receive(mc);
-        assertEquals(executedHandlers.size(), 15);
-        for (int i = 0; i < 15; i++) {
+        assertEquals(executedHandlers.size(), 14);
+        for (int i = 0; i < 14; i++) {
             assertEquals(((Integer) executedHandlers.get(i)).intValue(), i + 1);
         }
-        mc.setPaused(false);
         engine.receive(mc);
 
         assertEquals(executedHandlers.size(), 27);
@@ -155,16 +152,21 @@
         public TempHandler(int index, boolean pause) {
             this.index = new Integer(index);
             this.pause = pause;
+            init(new HandlerDescription(new QName("handler" + index)));
         }
 
         public TempHandler(int index) {
             this.index = new Integer(index);
+            init(new HandlerDescription(new QName("handler" + index)));
         }
 
         public void invoke(MessageContext msgContext) throws AxisFault {
-            executedHandlers.add(index);
-            if (pause) {
-                msgContext.setPaused(true);
+            String paused = "paused";
+            if (pause && msgContext.getProperty(paused) == null) {
+                msgContext.setProperty(paused, "true");
+                msgContext.setPausedTrue(getName());
+            }else{
+                executedHandlers.add(index);
             }
         }
 

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/CallUnregisteredServiceTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/CallUnregisteredServiceTest.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/CallUnregisteredServiceTest.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/CallUnregisteredServiceTest.java Tue May 31 19:31:16 2005
@@ -18,7 +18,10 @@
 
 //todo
 
+import javax.xml.namespace.QName;
+
 import junit.framework.TestCase;
+
 import org.apache.axis.Constants;
 import org.apache.axis.addressing.AddressingConstants;
 import org.apache.axis.addressing.EndpointReference;
@@ -34,8 +37,6 @@
 import org.apache.axis.transport.http.SimpleHTTPServer;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
-import javax.xml.namespace.QName;
 
 public class CallUnregisteredServiceTest extends TestCase{
     private Log log = LogFactory.getLog(getClass());

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLLoadTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLLoadTest.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLLoadTest.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLLoadTest.java Tue May 31 19:31:16 2005
@@ -20,15 +20,12 @@
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
 
 import junit.framework.TestCase;
 
 import org.apache.axis.Constants;
 import org.apache.axis.addressing.AddressingConstants;
 import org.apache.axis.addressing.EndpointReference;
-import org.apache.axis.clientapi.AsyncResult;
-import org.apache.axis.clientapi.Callback;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.context.ServiceContext;
 import org.apache.axis.description.ServiceDescription;
@@ -38,7 +35,6 @@
 import org.apache.axis.om.OMFactory;
 import org.apache.axis.om.OMNamespace;
 import org.apache.axis.soap.SOAPFactory;
-import org.apache.axis.transport.http.SimpleHTTPServer;
 import org.apache.axis.util.Utils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java Tue May 31 19:31:16 2005
@@ -38,7 +38,6 @@
 import org.apache.axis.om.OMFactory;
 import org.apache.axis.om.OMNamespace;
 import org.apache.axis.soap.SOAPFactory;
-import org.apache.axis.transport.http.SimpleHTTPServer;
 import org.apache.axis.util.Utils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MailEchoRawXMLTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MailEchoRawXMLTest.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MailEchoRawXMLTest.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MailEchoRawXMLTest.java Tue May 31 19:31:16 2005
@@ -20,15 +20,12 @@
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
 
 import junit.framework.TestCase;
 
 import org.apache.axis.Constants;
 import org.apache.axis.addressing.AddressingConstants;
 import org.apache.axis.addressing.EndpointReference;
-import org.apache.axis.clientapi.AsyncResult;
-import org.apache.axis.clientapi.Callback;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.context.ServiceContext;
 import org.apache.axis.description.ServiceDescription;
@@ -38,7 +35,6 @@
 import org.apache.axis.om.OMFactory;
 import org.apache.axis.om.OMNamespace;
 import org.apache.axis.soap.SOAPFactory;
-import org.apache.axis.transport.http.SimpleHTTPServer;
 import org.apache.axis.util.Utils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MessageWithServerTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MessageWithServerTest.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MessageWithServerTest.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/MessageWithServerTest.java Tue May 31 19:31:16 2005
@@ -18,7 +18,16 @@
 
 //todo
 
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.net.Socket;
+
+import javax.xml.namespace.QName;
+
 import junit.framework.TestCase;
+
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.description.ModuleDescription;
 import org.apache.axis.description.OperationDescription;
@@ -28,13 +37,6 @@
 import org.apache.axis.util.Utils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
-import javax.xml.namespace.QName;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.net.Socket;
 
 public class MessageWithServerTest extends TestCase {
     private Log log = LogFactory.getLog(getClass());

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/RESTBasedEchoRawXMLTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/RESTBasedEchoRawXMLTest.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/RESTBasedEchoRawXMLTest.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/RESTBasedEchoRawXMLTest.java Tue May 31 19:31:16 2005
@@ -18,6 +18,13 @@
 
 //todo
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLOutputFactory;
 
@@ -60,6 +67,11 @@
     private ServiceDescription service;
 
     private boolean finish = false;
+    
+   
+    private Thread thread;
+    
+    private final MessageInformation messageInfo = new MessageInformation();
 
     public RESTBasedEchoRawXMLTest() {
         super(RESTBasedEchoRawXMLTest.class.getName());
@@ -71,7 +83,7 @@
 
     protected void setUp() throws Exception {
         UtilServer.start();
-        Parameter parameter = new ParameterImpl(Constants.DO_REST,"true");
+        Parameter parameter = new ParameterImpl(Constants.Configuration.ENABLE_REST,"true");
         ((AxisConfigurationImpl)UtilServer.getConfigurationContext().getAxisConfiguration()).addParameter(parameter);
         service =
                 Utils.createSimpleService(serviceName,
@@ -80,6 +92,47 @@
         UtilServer.deployService(service);
         serviceContext =
                 UtilServer.getConfigurationContext().createServiceContext(service.getName());
+//                
+//         Runnable runnable = new Runnable() {
+//            public void run() {
+//                try {
+//                    ServerSocket socket = new ServerSocket(UtilServer.TESTING_PORT+345);
+//                    Socket clientSocket = socket.accept();
+//                    
+//                    InputStream in = clientSocket.getInputStream();
+//                    OutputStream out = clientSocket.getOutputStream();
+//                    
+//                    
+//                    byte[] byteBuff = new byte[in.available()];
+//                    in.read(byteBuff);
+//                    messageInfo.requestMessage = new String(byteBuff);
+//                    
+//                    Socket toServer = new Socket();
+//                    toServer.connect(new InetSocketAddress(UtilServer.TESTING_PORT));
+//                    OutputStream toServerOut = toServer.getOutputStream();
+//                    toServerOut.write(messageInfo.requestMessage.getBytes());
+//                    toServerOut.flush();
+//                    
+//                    InputStream fromServerIn = toServer.getInputStream();
+//                    byteBuff = new byte[fromServerIn.available()];
+//                    fromServerIn.read(byteBuff);
+//                    messageInfo.responseMessage = new String(byteBuff);
+//                    out.write(messageInfo.responseMessage.getBytes());
+//                    Thread.sleep(30000);
+//                    out.flush();
+//                    
+//                    toServer.close();
+//                    clientSocket.close();
+//                    socket.close();
+//                } catch (Exception e) {
+//                    // TODO Auto-generated catch block
+//                    e.printStackTrace();
+//                }
+//
+//            }
+//        };
+//        thread = new Thread(runnable);
+//        thread.start();
                 
 
     }
@@ -148,9 +201,17 @@
 
         call.setTo(targetEPR);
         call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, false);
-        call.set(Constants.DO_REST,"true");
+        call.set(Constants.Configuration.DO_REST,"true");
         OMElement result =
                 (OMElement) call.invokeBlocking(operationName.getLocalPart(), payload);
         result.serializeWithCache(XMLOutputFactory.newInstance().createXMLStreamWriter(System.out));
+        
+        System.out.println(messageInfo.requestMessage);
+        System.out.println(messageInfo.responseMessage);
+    }
+    
+    public class MessageInformation{
+        private String requestMessage = null;
+           private String responseMessage = null;
     }
 }

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler.java Tue May 31 19:31:16 2005
@@ -16,12 +16,12 @@
  
 package org.apache.axis.engine;
 
+import javax.xml.namespace.QName;
+
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.handlers.AbstractHandler;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
-import javax.xml.namespace.QName;
 
 public class SpeakingHandler extends AbstractHandler implements Handler {
     private Log log = LogFactory.getLog(getClass());

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler1.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler1.java?rev=179336&r1=179335&r2=179336&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler1.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/SpeakingHandler1.java Tue May 31 19:31:16 2005
@@ -16,6 +16,8 @@
  
 package org.apache.axis.engine;
 
+import javax.xml.namespace.QName;
+
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.description.HandlerDescription;
 import org.apache.axis.description.PhaseRule;
@@ -23,8 +25,6 @@
 import org.apache.axis.phaseresolver.PhaseMetadata;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
-import javax.xml.namespace.QName;
 
 public class SpeakingHandler1 extends AbstractHandler implements Handler {
     private Log log = LogFactory.getLog(getClass());