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/30 04:58:00 UTC

svn commit: r202470 - in /webservices/axis/trunk/java/modules/core/src/org/apache/axis: context/ receivers/ transport/ transport/http/

Author: hemapani
Date: Wed Jun 29 19:57:59 2005
New Revision: 202470

URL: http://svn.apache.org/viewcvs?rev=202470&view=rev
Log:
handle the MTOM as the HTTP response

Added:
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPOutTransportInfo.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/ServletBasedOutTransportInfo.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutTransportInfo.java
Modified:
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.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/HTTPConstants.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/http/HTTPTransportUtils.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java

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=202470&r1=202469&r2=202470&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 Wed Jun 29 19:57:59 2005
@@ -45,6 +45,8 @@
      * Field TRANSPORT_READER
      */
     public static final String TRANSPORT_IN = "TRANSPORT_IN";
+    
+    
 
     /**
      * Field TRANSPORT_SUCCEED
@@ -124,7 +126,7 @@
     
     private String soapAction;
     
-    private boolean doMTOM = false;
+    private boolean doingMTOM = false;
     
     /**
      * Conveniance Method, but before call engine.send() or  engine.receive() one must send transport in/out
@@ -572,15 +574,15 @@
     /**
      * @return
      */
-    public boolean isDoMTOM() {
-        return doMTOM;
+    public boolean isDoingMTOM() {
+        return doingMTOM;
     }
 
     /**
      * @param b
      */
-    public void setDoMTOM(boolean b) {
-        doMTOM = b;
+    public void setDoingMTOM(boolean b) {
+        doingMTOM = b;
     }
 
 }

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=202470&r1=202469&r2=202470&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 Wed Jun 29 19:57:59 2005
@@ -57,7 +57,7 @@
         newmsgCtx.setServiceContext(messgeCtx.getServiceContext());
         newmsgCtx.setProperty(MessageContext.TRANSPORT_OUT,messgeCtx.getProperty(MessageContext.TRANSPORT_OUT));
         newmsgCtx.setProperty(Constants.Configuration.DO_REST,messgeCtx.getProperty((Constants.Configuration.DO_REST)));
-        newmsgCtx.setDoMTOM(messgeCtx.isDoMTOM());
+        newmsgCtx.setDoingMTOM(messgeCtx.isDoingMTOM());
         
         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=202470&r1=202469&r2=202470&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 Wed Jun 29 19:57:59 2005
@@ -82,7 +82,7 @@
 			this.doREST = true;
 		}
         
-        msgContext.setDoMTOM(HTTPTransportUtils.doWriteMTOM(msgContext));
+        msgContext.setDoingMTOM(HTTPTransportUtils.doWriteMTOM(msgContext));
 
 		OutputStream out = null;
 
@@ -138,7 +138,7 @@
 			OMOutput omOutput = null;
 
 			try {
-				if (msgContext.isDoMTOM()) {
+				if (msgContext.isDoingMTOM()) {
 					omOutput = new OMOutput(out, true);
 					outputMessage.serialize(omOutput);
 					omOutput.flush();

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=202470&r1=202469&r2=202470&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 Wed Jun 29 19:57:59 2005
@@ -109,6 +109,7 @@
                         new QName(Constants.TRANSPORT_HTTP)));
                     msgContext.setProperty(Constants.Configuration.DO_REST, Constants.VALUE_TRUE);
             msgContext.setServerSide(true);
+            msgContext.setProperty(HTTPConstants.HTTPOutTransportInfo,new ServletBasedOutTransportInfo(httpServletResponse));
 
             boolean processed =
                 HTTPTransportUtils.processHTTPGetRequest(

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPConstants.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPConstants.java?rev=202470&r1=202469&r2=202470&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPConstants.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPConstants.java Wed Jun 29 19:57:59 2005
@@ -385,6 +385,7 @@
      */
     public static final String HTTP_REQ_TYPE = "HTTP_REQ_TYPE";
     
+    public static final String HTTPOutTransportInfo = "HTTPOutTransportInfo";
 
        /**
         * Default content encoding chatset

Added: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPOutTransportInfo.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPOutTransportInfo.java?rev=202470&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPOutTransportInfo.java (added)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPOutTransportInfo.java Wed Jun 29 19:57:59 2005
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ *
+ *  Runtime state of the engine
+ */
+package org.apache.axis.transport.http;
+
+/**
+ * @author hemapani
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public interface HTTPOutTransportInfo {
+    public abstract void setContentType(String contentType);
+}
\ No newline at end of file

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=202470&r1=202469&r2=202470&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 Wed Jun 29 19:57:59 2005
@@ -55,7 +55,7 @@
             String soapActionString =
                 soapAction == null ? "" : soapAction.toString();
             
-            boolean doMTOM = msgContext.isDoMTOM();
+            boolean doMTOM = msgContext.isDoingMTOM();
             StringBuffer buf = new StringBuffer();
             buf.append(HTTPConstants.HEADER_POST).append(" ");
             buf.append(url.getFile()).append(" ").append(httpVersion).append("\n");
@@ -76,7 +76,7 @@
                     .append(HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED)
                     .append("\n");
             } 
-            if(!chuncked && !msgContext.isDoMTOM()) {
+            if(!chuncked && !msgContext.isDoingMTOM()) {
                 buf.append(HTTPConstants.HEADER_CONTENT_LENGTH).append(": " + contentLength + "\n");
             }
             if (!this.doREST) {
@@ -133,7 +133,7 @@
                 (TransportSenderInfo) msgContext.getProperty(
                     TRANSPORT_SENDER_INFO);
             InputStream in = null;
-            if(chuncked || msgContext.isDoMTOM()){
+            if(chuncked || msgContext.isDoingMTOM()){
                 if (chuncked) {
                     ((ChunkedOutputStream) out).eos();
                 } 
@@ -185,7 +185,7 @@
         throws AxisFault {
         msgctx.setProperty(TRANSPORT_SENDER_INFO, new TransportSenderInfo());
         
-        if(msgctx.isDoMTOM() || chuncked){
+        if(msgctx.isDoingMTOM() || chuncked){
             return openSocket(msgctx);
         } else {
             TransportSenderInfo transportInfo =
@@ -199,18 +199,10 @@
         MessageContext msgContext,
         OutputStream out)
         throws AxisFault {
-        //        Object contianerManaged =
-        //            msgContext.getProperty(Constants.CONTAINER_MANAGED);
-        //        if (contianerManaged == null
-        //            || !Constants.VALUE_TRUE.equals(contianerManaged)) {
-        //            try {
-        //                out.write(new String(HTTPConstants.HTTP).getBytes());
-        //                out.write(new String(HTTPConstants.OK).getBytes());
-        //                out.write("\n\n".getBytes());
-        //            } catch (IOException e) {
-        //                throw new AxisFault(e);
-        //            }
-        //        }
+        if(msgContext.isDoingMTOM()){
+            HTTPOutTransportInfo httpOutTransportInfo = (HTTPOutTransportInfo)msgContext.getProperty(HTTPConstants.HTTPOutTransportInfo);
+            httpOutTransportInfo.setContentType(OMOutput.getContentType(true));
+        }
         return out;
     }
 
@@ -219,7 +211,7 @@
         OutputStream out)
         throws AxisFault {
         try {
-            if(msgContext.isDoMTOM() || chuncked){
+            if(msgContext.isDoingMTOM() || chuncked){
                 TransportSenderInfo transportInfo =
                     (TransportSenderInfo) msgContext.getProperty(
                         TRANSPORT_SENDER_INFO);

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java?rev=202470&r1=202469&r2=202470&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java Wed Jun 29 19:57:59 2005
@@ -231,7 +231,7 @@
 		boolean envelopeContainsOptimise = HTTPTransportUtils
 				.checkEnvelopeForOptimise(msgContext.getEnvelope());
 		boolean doMTOM = enableMTOM && envelopeContainsOptimise;
-		msgContext.setDoMTOM(doMTOM);
+		msgContext.setDoingMTOM(doMTOM);
 		return doMTOM;
 	}
 }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java?rev=202470&r1=202469&r2=202470&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java Wed Jun 29 19:57:59 2005
@@ -63,11 +63,11 @@
                         transportOut);
                 msgContext.setServerSide(true);
 
-                // We do not have any Addressing Headers to put
-                // let us put the information about incoming transport
+                //parse the Transport Headers
                 HTTPTransportReceiver reciver = new HTTPTransportReceiver();
                 Map map = reciver.parseTheHeaders(inStream, true);
 
+                //build a way to write the respone if the Axis choose to do so
                 SimpleHTTPOutputStream out;
                 String transferEncoding = (String) map.get(HTTPConstants.HEADER_TRANSFER_ENCODING);
                 if (transferEncoding != null
@@ -77,12 +77,14 @@
                 } else {
                     out = new SimpleHTTPOutputStream(socket.getOutputStream(), false);
                 }
-                
-
-                //OutputStream out = socket.getOutputStream();
                 msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
 
+                //This is way to provide Accsess to the transport information to the transport Sender
+                msgContext.setProperty(HTTPConstants.HTTPOutTransportInfo,new SimpleHTTPOutTransportInfo(out));
+                
+
                 if (HTTPConstants.HEADER_GET.equals(map.get(HTTPConstants.HTTP_REQ_TYPE))) {
+                    //It is GET handle the Get request 
                     boolean processed =
                         HTTPTransportUtils.processHTTPGetRequest(
                             msgContext,
@@ -101,6 +103,7 @@
                         out.flush();
                     }
                 } else {
+                    //It is POST, handle it
                     HTTPTransportUtils.processHTTPPostRequest(
                         msgContext,
                         inStream,

Added: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/ServletBasedOutTransportInfo.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/ServletBasedOutTransportInfo.java?rev=202470&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/ServletBasedOutTransportInfo.java (added)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/ServletBasedOutTransportInfo.java Wed Jun 29 19:57:59 2005
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ *
+ *  Runtime state of the engine
+ */
+package org.apache.axis.transport.http;
+
+import javax.servlet.http.HttpServletResponse;
+
+public class ServletBasedOutTransportInfo implements HTTPOutTransportInfo {
+    private HttpServletResponse response;
+    public ServletBasedOutTransportInfo(HttpServletResponse response){
+        this.response = response;
+    }
+    public void setContentType(String contentType){
+        response.setContentType(contentType);
+    }
+}

Added: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutTransportInfo.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutTransportInfo.java?rev=202470&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutTransportInfo.java (added)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutTransportInfo.java Wed Jun 29 19:57:59 2005
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ *
+ *  Runtime state of the engine
+ */
+package org.apache.axis.transport.http;
+
+public class SimpleHTTPOutTransportInfo implements HTTPOutTransportInfo{
+    private SimpleHTTPOutputStream outInfo;
+    public SimpleHTTPOutTransportInfo(SimpleHTTPOutputStream outInfo){
+        this.outInfo = outInfo;
+    }
+
+    public void setContentType(String contentType) {
+        outInfo.setContentType(contentType);
+    }
+}

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java?rev=202470&r1=202469&r2=202470&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java Wed Jun 29 19:57:59 2005
@@ -26,6 +26,7 @@
 public class SimpleHTTPOutputStream extends FilterOutputStream {
     private boolean written = false;
     private boolean chuncked = false;
+    private String contentType = null;
     
     public SimpleHTTPOutputStream(
         OutputStream out,boolean chuncked)
@@ -72,10 +73,18 @@
             buf.append(new String(HTTPConstants.OK)).append("\n");
             buf.append(HTTPConstants.HEADER_TRANSFER_ENCODING).append(": ");
             buf.append(HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED).append("\n");
+            if(contentType != null){
+                buf.append(HTTPConstants.HEADER_CONTENT_TYPE).append(": ");
+                buf.append(contentType).append("\n");
+            }
             buf.append("\n");
         }else{
             buf.append(new String(HTTPConstants.HTTP));
             buf.append(new String(HTTPConstants.OK)).append("\n");
+            if(contentType != null){
+                buf.append(HTTPConstants.HEADER_CONTENT_TYPE).append(": ");
+                buf.append(contentType).append("\n");
+            }
             buf.append("\n");
         }
         out.write(buf.toString().getBytes());
@@ -111,6 +120,13 @@
             finalize();
         }
         super.close();
+    }
+
+    /**
+     * @param string
+     */
+    public void setContentType(String string) {
+        contentType = string;
     }
 
 }