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/20 10:01:16 UTC

svn commit: r191417 - in /webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http: HTTPTransportReceiver.java SimpleHTTPServer.java

Author: hemapani
Date: Mon Jun 20 01:01:16 2005
New Revision: 191417

URL: http://svn.apache.org/viewcvs?rev=191417&view=rev
Log:
refactor the GET support for the Simple Axis Server

Modified:
    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/SimpleHTTPServer.java

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=191417&r1=191416&r2=191417&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 Mon Jun 20 01:01:16 2005
@@ -16,8 +16,13 @@
 package org.apache.axis.transport.http;
 
 import java.io.IOException;
+import java.io.OutputStream;
 import java.io.Reader;
+import java.util.Collection;
+import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
 import java.util.Map;
 
 import javax.xml.stream.XMLInputFactory;
@@ -28,6 +33,8 @@
 import org.apache.axis.addressing.EndpointReference;
 import org.apache.axis.context.ConfigurationContext;
 import org.apache.axis.context.MessageContext;
+import org.apache.axis.description.OperationDescription;
+import org.apache.axis.description.ServiceDescription;
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.om.impl.llom.builder.StAXBuilder;
 import org.apache.axis.om.impl.llom.builder.StAXOMBuilder;
@@ -106,40 +113,47 @@
                 msgContext.setProperty(
                     MessageContext.TRANSPORT_SUCCEED,
                     HTTPConstants.RESPONSE_ACK_CODE_VAL);
-                return soapEnvelope;
-            }
-            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(new EndpointReference(AddressingConstants.WSA_TO, requestURI));
-            //getServiceLookUp(requestURI)));
-
-            // TODO see is it a Service request e.g. WSDL, list ....
-            // TODO take care of the other HTTPHeaders
-            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.Configuration.DO_REST);
-                XMLStreamReader xmlreader = XMLInputFactory.newInstance().createXMLStreamReader(in);
-                StAXBuilder builder = null;
-                SOAPEnvelope envelope = null;
-                if (doREST != null && "true".equals(doREST)) {
-                    SOAPFactory soapFactory = new SOAP11Factory();
-                    builder = new StAXOMBuilder(xmlreader);
-                    builder.setOmbuilderFactory(soapFactory);
-                    envelope = soapFactory.getDefaultEnvelope();
-                    envelope.getBody().addChild(builder.getDocumentElement());
-                } else {
-                    builder = new StAXSOAPModelBuilder(xmlreader);
-                    envelope = (SOAPEnvelope) builder.getDocumentElement();
+                return null;
+            }else if(HTTPConstants.HEADER_GET.equals(map.get(HTTPConstants.HTTP_REQ_TYPE))) {
+                this.handleGETRequest((String)map.get(HTTPConstants.REQUEST_URI), 
+                    (OutputStream)map.get(MessageContext.TRANSPORT_OUT),
+                    msgContext.getSystemContext());
+                    return null;
+            }else{
+                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(new EndpointReference(AddressingConstants.WSA_TO, requestURI));
+                //getServiceLookUp(requestURI)));
+
+                // TODO see is it a Service request e.g. WSDL, list ....
+                // TODO take care of the other HTTPHeaders
+                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.Configuration.DO_REST);
+                    XMLStreamReader xmlreader = XMLInputFactory.newInstance().createXMLStreamReader(in);
+                    StAXBuilder builder = null;
+                    SOAPEnvelope envelope = null;
+                    if (doREST != null && "true".equals(doREST)) {
+                        SOAPFactory soapFactory = new SOAP11Factory();
+                        builder = new StAXOMBuilder(xmlreader);
+                        builder.setOmbuilderFactory(soapFactory);
+                        envelope = soapFactory.getDefaultEnvelope();
+                        envelope.getBody().addChild(builder.getDocumentElement());
+                    } else {
+                        builder = new StAXSOAPModelBuilder(xmlreader);
+                        envelope = (SOAPEnvelope) builder.getDocumentElement();
+                    }
+                    return envelope;
+                } catch (Exception e) {
+                    throw new AxisFault(e.getMessage(), e);
                 }
-                return envelope;
-            } catch (Exception e) {
-                throw new AxisFault(e.getMessage(), e);
+            
             }
         } else {
             throw new AxisFault("Input reader not found");
@@ -500,18 +514,73 @@
         }
     }
 
-    //    private String getServiceLookUp(String requestURI) throws AxisFault {
-    //        final String URI_ID_STRING = "/services";
-    //              String filePart = requestURI;
-    //
-    //              int index = filePart.lastIndexOf(URI_ID_STRING);
-    //              String serviceStr = null;
-    //              if (index > 0) {
-    //                  serviceStr = filePart.substring(index + URI_ID_STRING.length() + 1);
-    //                  return serviceStr;
-    //
-    //              } else {
-    //                  throw new AxisFault("Both the URI and SOAP_ACTION are Null");
-    //              }
-    //    }
+    private void handleGETRequest(String reqUri, OutputStream out,ConfigurationContext configurationContext) {
+        
+    try {
+        out.write(this.getServicesHTML(configurationContext).getBytes());
+        out.flush();
+        out.close();
+    } catch (IOException e) {
+        e.printStackTrace();
+    }
+}
+    
+    
+/**
+ * Returns the HTML text for the list of services deployed
+ * This can be delegated to another Class as well
+ * where it will handle more options of GET messages :-?
+ * @return
+ */
+private String getServicesHTML(ConfigurationContext configurationContext) {
+    String temp = "";
+    Map services = configurationContext.getAxisConfiguration().getServices();
+    Hashtable erroneousServices = configurationContext.getAxisConfiguration().getFaulytServices();
+    boolean status = false;
+        
+    if(services!= null && !services.isEmpty()) {
+        status = true;
+        Collection serviceCollection = services.values();
+        for(Iterator it = serviceCollection.iterator(); it.hasNext();) {
+            Map operations;
+            Collection operationsList;
+            ServiceDescription axisService = (ServiceDescription) it.next();
+            operations = axisService.getOperations();
+            operationsList = operations.values();
+            temp += "<h2>" + "Deployed services" + "</h2>";
+            temp += "<h3>" + axisService.getName().getLocalPart() + "</h3>";
+            if(operationsList.size() > 0) {
+                temp += "Available operations <ul>";
+                for (Iterator iterator1 = operationsList.iterator(); iterator1.hasNext();) {
+                    OperationDescription axisOperation = (OperationDescription) iterator1.next();
+                    temp += "<li>" + axisOperation.getName().getLocalPart() + "</li>";
+                }
+                temp += "</ul>";
+            } else {
+                temp += "No operations speficied for this service";
+            }
+        }
+    }
+        
+    if(erroneousServices != null && !erroneousServices.isEmpty()) {
+            
+       temp += "<hr><h2><font color=\"blue\">Faulty Services</font></h2>";
+       status = true;
+       Enumeration faultyservices = erroneousServices.keys();
+       while (faultyservices.hasMoreElements()) {
+           String faultyserviceName = (String) faultyservices.nextElement();
+           temp += "<h3><font color=\"blue\">" + faultyserviceName + "</font></h3>";
+       }
+    }
+
+    if(!status) {
+            temp = "<h2>There are no services deployed</h2>";
+    }
+        
+    temp = "<html><head><title>Axis2: Services</title></head>" +
+      "<body>" + temp + "</body></html>";
+        
+    return temp;
+}
+
 }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPServer.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPServer.java?rev=191417&r1=191416&r2=191417&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPServer.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPServer.java Mon Jun 20 01:01:16 2005
@@ -22,11 +22,6 @@
 import java.io.Reader;
 import java.net.ServerSocket;
 import java.net.Socket;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Map;
 
 import javax.xml.namespace.QName;
 
@@ -37,13 +32,12 @@
 import org.apache.axis.context.ConfigurationContext;
 import org.apache.axis.context.ConfigurationContextFactory;
 import org.apache.axis.context.MessageContext;
-import org.apache.axis.description.OperationDescription;
 import org.apache.axis.description.Parameter;
-import org.apache.axis.description.ServiceDescription;
 import org.apache.axis.description.TransportInDescription;
 import org.apache.axis.description.TransportOutDescription;
 import org.apache.axis.engine.AxisEngine;
 import org.apache.axis.engine.AxisFault;
+import org.apache.axis.soap.SOAPEnvelope;
 import org.apache.axis.transport.TransportListener;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -164,34 +158,33 @@
                         msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
                         msgContext.setProperty(MessageContext.TRANSPORT_READER, in);
                         HTTPTransportReceiver reciver = new HTTPTransportReceiver();
-                        
+
                         /*
                          * If the request is a GET request then  
                          * process the request and send out HTML
                          * if not get the soap message and process it
-                         */                
-                        Map map = reciver.parseTheHeaders(in,msgContext.isServerSide());
-                        if(map.get(HTTPConstants.HTTP_REQ_TYPE).equals(HTTPConstants.HEADER_POST)) {
-                        	//Handle POST Request
-                            msgContext.setEnvelope(
-                                    reciver.checkForMessage(msgContext, configurationContext, map));
-
-                                AxisEngine engine = new AxisEngine(configurationContext);
-                                engine.receive(msgContext);
-
-                                Object contextWritten =
-                                    msgContext.getProperty(Constants.RESPONSE_WRITTEN);
-                                if (contextWritten == null
-                                    || !Constants.VALUE_TRUE.equals(contextWritten)) {
-                                    out.write(new String(HTTPConstants.NOCONTENT).getBytes());
-                                    out.close();
-                                }
-
-                                log.info("status written");
-                        } else if(map.get(HTTPConstants.HTTP_REQ_TYPE).equals(HTTPConstants.HEADER_GET)) {
-                        	this.handleGETRequest((String)map.get(HTTPConstants.REQUEST_URI), out);
+                         */
+
+                        //Handle POST Request
+                        SOAPEnvelope envelope =
+                            reciver.checkForMessage(msgContext, configurationContext);
+
+                        if (envelope != null) {
+                            msgContext.setEnvelope(envelope);
+
+                            AxisEngine engine = new AxisEngine(configurationContext);
+                            engine.receive(msgContext);
+
+                            Object contextWritten =
+                                msgContext.getProperty(Constants.RESPONSE_WRITTEN);
+                            if (contextWritten == null
+                                || !Constants.VALUE_TRUE.equals(contextWritten)) {
+                                out.write(new String(HTTPConstants.NOCONTENT).getBytes());
+                                out.close();
+                            }
+
                         }
-                        
+
                     }
                 } catch (Throwable e) {
                     log.error(e);
@@ -301,7 +294,11 @@
         ServerSocket serverSoc = null;
         serverSoc = new ServerSocket(Integer.parseInt(args[1]));
         SimpleHTTPServer reciver = new SimpleHTTPServer(args[0], serverSoc);
-        System.out.println("starting SimpleHTTPServer in port "+args[1]+ " using the repository "+ new File(args[0]).getAbsolutePath());
+        System.out.println(
+            "starting SimpleHTTPServer in port "
+                + args[1]
+                + " using the repository "
+                + new File(args[0]).getAbsolutePath());
         reciver.setServerSocket(serverSoc);
         Thread thread = new Thread(reciver);
         thread.setDaemon(true);
@@ -331,73 +328,4 @@
         }
     }
 
-    private void handleGETRequest(String reqUri, OutputStream out) {
-    	
-    	try {
-			out.write(this.getServicesHTML().getBytes());
-			out.flush();
-			out.close();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-    }
-    
-    
-    /**
-     * Returns the HTML text for the list of services deployed
-     * This can be delegated to another Class as well
-     * where it will handle more options of GET messages :-?
-     * @return
-     */
-    private String getServicesHTML() {
-    	String temp = "";
-    	Map services = this.configurationContext.getAxisConfiguration().getServices();
-    	Hashtable erroneousServices = this.configurationContext.getAxisConfiguration().getFaulytServices();
-    	boolean status = false;
-    	
-    	if(services!= null && !services.isEmpty()) {
-    		status = true;
-    		Collection serviceCollection = services.values();
-    		for(Iterator it = serviceCollection.iterator(); it.hasNext();) {
-    			Map operations;
-    			Collection operationsList;
-                ServiceDescription axisService = (ServiceDescription) it.next();
-                operations = axisService.getOperations();
-                operationsList = operations.values();
-                temp += "<h2>" + "Deployed services" + "</h2>";
-                temp += "<h3>" + axisService.getName().getLocalPart() + "</h3>";
-                if(operationsList.size() > 0) {
-                	temp += "Available operations <ul>";
-                    for (Iterator iterator1 = operationsList.iterator(); iterator1.hasNext();) {
-                        OperationDescription axisOperation = (OperationDescription) iterator1.next();
-                        temp += "<li>" + axisOperation.getName().getLocalPart() + "</li>";
-                    }
-                    temp += "</ul>";
-                } else {
-                	temp += "No operations speficied for this service";
-                }
-    		}
-    	}
-    	
-    	if(erroneousServices != null && !erroneousServices.isEmpty()) {
-            
-           temp += "<hr><h2><font color=\"blue\">Faulty Services</font></h2>";
-           status = true;
-           Enumeration faultyservices = erroneousServices.keys();
-           while (faultyservices.hasMoreElements()) {
-               String faultyserviceName = (String) faultyservices.nextElement();
-               temp += "<h3><font color=\"blue\">" + faultyserviceName + "</font></h3>";
-           }
-    	}
-
-    	if(!status) {
-        		temp = "<h2>There are no services deployed</h2>";
-        }
-    	
-    	temp = "<html><head><title>Axis2: Services</title></head>" +
-		  "<body>" + temp + "</body></html>";
-    	
-    	return temp;
-    }
-    
 }