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/23 04:36:44 UTC
svn commit: r193054 - in /webservices/axis/trunk/java/modules:
core/src/org/apache/axis/ core/src/org/apache/axis/engine/
core/src/org/apache/axis/transport/http/ core/src/org/apache/axis/util/
samples/test/org/apache/axis/rest/
Author: hemapani
Date: Wed Jun 22 19:36:43 2005
New Revision: 193054
URL: http://svn.apache.org/viewcvs?rev=193054&view=rev
Log:
updates to do REST via GET
Added:
webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java
Modified:
webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/RequestURIBasedDispatcher.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/SimpleHTTPServer.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java
webservices/axis/trunk/java/modules/samples/test/org/apache/axis/rest/HttpGetRESTBasedTest.java
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=193054&r1=193053&r2=193054&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 Wed Jun 22 19:36:43 2005
@@ -91,6 +91,8 @@
/**
* Field LISTSERVICES
*/
+ public static final String REQUEST_URL_PREFIX = "/services";
+
public static final String LISTSERVICES = "listServices";
public static final String LIST_SERVICE_FOR_MODULE_ENGAMNET = "listoperation";
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/RequestURIBasedDispatcher.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/RequestURIBasedDispatcher.java?rev=193054&r1=193053&r2=193054&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/RequestURIBasedDispatcher.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/engine/RequestURIBasedDispatcher.java Wed Jun 22 19:36:43 2005
@@ -15,14 +15,14 @@
*/
package org.apache.axis.engine;
+import javax.xml.namespace.QName;
+
import org.apache.axis.addressing.EndpointReference;
-import org.apache.axis.context.ConfigurationContext;
import org.apache.axis.context.MessageContext;
import org.apache.axis.description.HandlerDescription;
import org.apache.axis.description.OperationDescription;
import org.apache.axis.description.ServiceDescription;
-
-import javax.xml.namespace.QName;
+import org.apache.axis.util.Utils;
/**
* Class Dispatcher
@@ -58,36 +58,21 @@
/* (non-Javadoc)
* @see org.apache.axis.engine.AbstractDispatcher#findService(org.apache.axis.context.MessageContext)
*/
- public ServiceDescription findService(MessageContext messageContext)
- throws AxisFault {
- final String URI_ID_STRING = "/services";
- EndpointReference toEPR = messageContext.getTo();
- if (toEPR != null) {
- String filePart = toEPR.getAddress();
-
- int index = filePart.lastIndexOf(URI_ID_STRING);
- String serviceStr = null;
- if (-1 != index) {
- serviceStr =
- filePart.substring(index + URI_ID_STRING.length() + 1);
-
- ConfigurationContext engineContext =
- messageContext.getSystemContext();
-
- if ((index = serviceStr.indexOf('/')) > 0) {
- serviceName = new QName(serviceStr.substring(0, index));
- operatoinName =
- new QName(serviceStr.substring(index + 1));
- } else {
- serviceName = new QName(serviceStr);
- }
-
- AxisConfiguration registry =
- messageContext.getSystemContext().getAxisConfiguration();
- return registry.getService(serviceName);
- }
+ public ServiceDescription findService(MessageContext messageContext) throws AxisFault {
+ EndpointReference toEPR = messageContext.getTo();
+ if (toEPR != null) {
+ String filePart = toEPR.getAddress();
+ String[] values = Utils.parseRequestURLForServiceAndOperation(filePart);
+ if (values[1] != null) {
+ operatoinName = new QName(values[1]);
+ }
+ if (values[0] != null) {
+ serviceName = new QName(values[0]);
+ AxisConfiguration registry =
+ messageContext.getSystemContext().getAxisConfiguration();
+ return registry.getService(serviceName);
}
+ }
return null;
-
}
}
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=193054&r1=193053&r2=193054&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 22 19:36:43 2005
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
+import java.util.HashMap;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
@@ -43,9 +44,7 @@
import org.apache.axis.context.SessionContext;
import org.apache.axis.engine.AxisEngine;
import org.apache.axis.engine.AxisFault;
-import org.apache.axis.om.OMElement;
import org.apache.axis.om.OMException;
-import org.apache.axis.om.OMNamespace;
import org.apache.axis.om.impl.llom.builder.StAXBuilder;
import org.apache.axis.om.impl.llom.builder.StAXOMBuilder;
import org.apache.axis.soap.SOAPEnvelope;
@@ -64,7 +63,7 @@
private ConfigurationContext configContext;
- private ListingAgent lister ;
+ private ListingAgent lister;
/**
* Method init
@@ -99,36 +98,17 @@
throws ServletException, IOException {
try {
- String operation =
- httpServletRequest.getParameter(Constants.REST_WITH_GET.GET_PARAMETER_OPERATION);
- if (operation != null) {
- SOAPFactory soapFactory = new SOAP11Factory();
- SOAPEnvelope envelope = soapFactory.getDefaultEnvelope();
-
- OMNamespace omNs =
- soapFactory.createOMNamespace(
- Constants.REST_WITH_GET.GET_PARAMETER_URL,
- "rest");
- OMElement opElement =
- soapFactory.createOMElement(
- Constants.REST_WITH_GET.GET_PARAMETER_OPERATION,
- omNs);
-
- Enumeration enu = httpServletRequest.getParameterNames();
- while (enu.hasMoreElements()) {
- String name = (String) enu.nextElement();
- if (!Constants.REST_WITH_GET.GET_PARAMETER_OPERATION.equals(name)) {
- String value = httpServletRequest.getParameter(name);
- OMElement omEle =
- soapFactory.createOMElement(
- Constants.REST_WITH_GET.GET_PARAMETER_OPERATION,
- omNs);
- omEle.setText(value);
- opElement.addChild(omEle);
- }
- }
+ String filePart = httpServletRequest.getRequestURL().toString();
+ Enumeration enu = httpServletRequest.getParameterNames();
+ HashMap map = new HashMap();
+ while (enu.hasMoreElements()) {
+ String name = (String) enu.nextElement();
+ String value = httpServletRequest.getParameter(name);
+ map.put(name, value);
+ }
- envelope.getBody().addChild(opElement);
+ SOAPEnvelope envelope = HTTPTransportUtils.createEnvelopeFromGetRequest(filePart, map);
+ if (envelope != null) {
XMLStreamWriter wrtier =
XMLOutputFactory.newInstance().createXMLStreamWriter(System.out);
envelope.serialize(wrtier);
@@ -150,7 +130,7 @@
new QName(Constants.TRANSPORT_HTTP)),
configContext.getAxisConfiguration().getTransportOut(
new QName(Constants.TRANSPORT_HTTP)));
- msgContext.setProperty(Constants.Configuration.DO_REST,Constants.VALUE_TRUE);
+ msgContext.setProperty(Constants.Configuration.DO_REST, Constants.VALUE_TRUE);
msgContext.setEnvelope(envelope);
processSOAPMessage(msgContext, httpServletRequest, httpServletResponse);
@@ -252,8 +232,7 @@
req.getContentType(),
soapActionString,
msgContext);
- msgContext.setProperty(
- MessageContext.TRANSPORT_OUT,res.getOutputStream());
+ msgContext.setProperty(MessageContext.TRANSPORT_OUT, res.getOutputStream());
engine.receive(msgContext);
Object contextWritten = msgContext.getProperty(Constants.RESPONSE_WRITTEN);
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=193054&r1=193053&r2=193054&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 Wed Jun 22 19:36:43 2005
@@ -108,31 +108,44 @@
SOAPEnvelope soapEnvelope = null;
InputStream inStream = (InputStream) msgContext.getProperty(MessageContext.TRANSPORT_IN);
- msgContext.setProperty(MessageContext.TRANSPORT_IN,null);
+ msgContext.setProperty(MessageContext.TRANSPORT_IN, null);
Reader in = new InputStreamReader(inStream);
if (in != null) {
boolean serverSide = msgContext.isServerSide();
Map map = parseTheHeaders(in, 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(new EndpointReference(AddressingConstants.WSA_TO, requestURI));
+
if (HTTPConstants.RESPONSE_ACK_CODE_VAL.equals(map.get(HTTPConstants.RESPONSE_CODE))) {
msgContext.setProperty(
MessageContext.TRANSPORT_SUCCEED,
HTTPConstants.RESPONSE_ACK_CODE_VAL);
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());
+ } else if (HTTPConstants.HEADER_GET.equals(map.get(HTTPConstants.HTTP_REQ_TYPE))) {
+ SOAPEnvelope envelope =
+ HTTPTransportUtils.createEnvelopeFromGetRequest(
+ requestURI,
+ getGetRequestParameters(requestURI));
+ if (envelope == null) {
+ this.handleGETRequest(
+ requestURI,
+ (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);
+ } else {
+ msgContext.setProperty(Constants.Configuration.DO_REST, Constants.VALUE_TRUE);
+ return envelope;
+ }
- String requestURI = (String) map.get(HTTPConstants.REQUEST_URI);
- msgContext.setTo(new EndpointReference(AddressingConstants.WSA_TO, requestURI));
+ } else {
//getServiceLookUp(requestURI)));
// TODO see is it a Service request e.g. WSDL, list ....
@@ -141,7 +154,8 @@
//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);
+ XMLStreamReader xmlreader =
+ XMLInputFactory.newInstance().createXMLStreamReader(in);
StAXBuilder builder = null;
SOAPEnvelope envelope = null;
if (doREST != null && "true".equals(doREST)) {
@@ -158,13 +172,13 @@
} catch (Exception e) {
throw new AxisFault(e.getMessage(), e);
}
-
+
}
} else {
throw new AxisFault("Input reader not found");
}
}
-
+
/**
* This is to be called when we are certain that the message being processed is a SOAP message
* @param msgContext
@@ -173,16 +187,21 @@
* @return
* @throws AxisFault
*/
- public SOAPEnvelope checkForMessage(MessageContext msgContext, ConfigurationContext engineContext, Map parsedHeaders) throws AxisFault {
-
+ public SOAPEnvelope checkForMessage(
+ MessageContext msgContext,
+ ConfigurationContext engineContext,
+ Map parsedHeaders)
+ throws AxisFault {
+
SOAPEnvelope soapEnvelope = null;
InputStream inStream = (InputStream) msgContext.getProperty(MessageContext.TRANSPORT_IN);
- msgContext.setProperty(MessageContext.TRANSPORT_IN,null);
+ msgContext.setProperty(MessageContext.TRANSPORT_IN, null);
Reader in = new InputStreamReader(inStream);
-
-
+
if (in != null) {
- if (HTTPConstants.RESPONSE_ACK_CODE_VAL.equals(parsedHeaders.get(HTTPConstants.RESPONSE_CODE))) {
+ if (HTTPConstants
+ .RESPONSE_ACK_CODE_VAL
+ .equals(parsedHeaders.get(HTTPConstants.RESPONSE_CODE))) {
msgContext.setProperty(
MessageContext.TRANSPORT_SUCCEED,
HTTPConstants.RESPONSE_ACK_CODE_VAL);
@@ -260,17 +279,17 @@
length = readLine(reader, buf);
if (serverSide) {
if ((buf[0] == 'P') && (buf[1] == 'O') && (buf[2] == 'S') && (buf[3] == 'T')) {
- map.put(HTTPConstants.HTTP_REQ_TYPE, HTTPConstants.HEADER_POST);
+ map.put(HTTPConstants.HTTP_REQ_TYPE, HTTPConstants.HEADER_POST);
index = 5;
} else if ((buf[0] == 'G') && (buf[1] == 'E') && (buf[2] == 'T')) {
- map.put(HTTPConstants.HTTP_REQ_TYPE, HTTPConstants.HEADER_GET);
+ map.put(HTTPConstants.HTTP_REQ_TYPE, HTTPConstants.HEADER_GET);
index = 4;
} else {
- throw new AxisFault("Unsupported HTTP request type: Only GET and POST is supported");
- }
-
+ throw new AxisFault("Unsupported HTTP request type: Only GET and POST is supported");
+ }
+
value = readFirstLineArg(' ');
map.put(HTTPConstants.REQUEST_URI, value);
value = readFirstLineArg('\n');
@@ -278,14 +297,14 @@
} else {
index = 0;
value = readFirstLineArg(' ');
- if(value != null && value.indexOf("HTTP") >= 0){
+ if (value != null && value.indexOf("HTTP") >= 0) {
map.put(HTTPConstants.PROTOCOL_VERSION, value);
value = readFirstLineArg(' ');
map.put(HTTPConstants.RESPONSE_CODE, value);
- }else{
+ } else {
map.put(HTTPConstants.RESPONSE_CODE, value);
}
-
+
value = readFirstLineArg('\n');
map.put(HTTPConstants.RESPONSE_WORD, value);
}
@@ -522,73 +541,120 @@
}
}
- 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();
+ 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>";
+
+ /**
+ * 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";
}
- 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) {
+ 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;
+ }
+
+ private Map getGetRequestParameters(String requestURI) {
+ Map map = new HashMap();
+
+ char[] chars = requestURI.toCharArray();
+ final int NOT_BEGUN = 1500;
+ final int INSIDE_NAME = 1501;
+ final int INSIDE_VALUE = 1502;
+
+ int state = NOT_BEGUN;
+ StringBuffer name = new StringBuffer();
+ StringBuffer value = new StringBuffer();
+
+ for (int index = 0; index < chars.length; index++) {
+ if (state == NOT_BEGUN) {
+ if (chars[index] == '?') {
+ state = INSIDE_NAME;
+ }
+ } else if (state == INSIDE_NAME) {
+ if (chars[index] == '=') {
+ state = INSIDE_VALUE;
+ } else {
+ name.append(chars[index]);
+ }
+ } else if (state == INSIDE_VALUE) {
+ if (chars[index] == ',') {
+ state = INSIDE_NAME;
+ map.put(name.toString(), value.toString());
+ name.delete(0, name.length());
+ value.delete(0, value.length());
+ } else {
+ value.append(chars[index]);
+ }
+ }
+ }
+ if (name.length() + value.length() > 0) {
+ map.put(name.toString(), value.toString());
+ }
+ return map;
}
-
- temp = "<html><head><title>Axis2: Services</title></head>" +
- "<body>" + temp + "</body></html>";
-
- return temp;
-}
}
Added: 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=193054&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java (added)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java Wed Jun 22 19:36:43 2005
@@ -0,0 +1,63 @@
+/*
+ * 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 java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.axis.Constants;
+import org.apache.axis.om.OMElement;
+import org.apache.axis.om.OMNamespace;
+import org.apache.axis.om.impl.llom.OMNamespaceImpl;
+import org.apache.axis.soap.SOAPEnvelope;
+import org.apache.axis.soap.SOAPFactory;
+import org.apache.axis.soap.impl.llom.soap11.SOAP11Factory;
+import org.apache.axis.util.Utils;
+
+public class HTTPTransportUtils {
+ public static final SOAPEnvelope createEnvelopeFromGetRequest(String requestUrl, Map map) {
+ String[] values = Utils.parseRequestURLForServiceAndOperation(requestUrl);
+
+ if (values[1] != null && values[0] != null) {
+ String operation = values[1];
+ SOAPFactory soapFactory = new SOAP11Factory();
+ SOAPEnvelope envelope = soapFactory.getDefaultEnvelope();
+
+ OMNamespace omNs = soapFactory.createOMNamespace(values[0], "services");
+ OMNamespace defualtNs = new OMNamespaceImpl("", null);
+
+ OMElement opElement = soapFactory.createOMElement(operation, omNs);
+
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String name = (String) it.next();
+ String value = (String) map.get(name);
+ OMElement omEle = soapFactory.createOMElement(name, defualtNs);
+ omEle.setText(value);
+ opElement.addChild(omEle);
+ }
+
+ envelope.getBody().addChild(opElement);
+ return envelope;
+ } else {
+ return null;
+ }
+ }
+}
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=193054&r1=193053&r2=193054&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 Wed Jun 22 19:36:43 2005
@@ -193,6 +193,7 @@
}
} catch (Throwable e) {
log.error(e);
+ e.printStackTrace();
} finally {
if (socket != null) {
this.socket.close();
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=193054&r1=193053&r2=193054&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 Wed Jun 22 19:36:43 2005
@@ -37,8 +37,8 @@
import org.apache.wsdl.WSDLService;
public class Utils {
-
- public static void addHandler(Flow flow,Handler handler,String phaseName){
+
+ public static void addHandler(Flow flow, Handler handler, String phaseName) {
HandlerDescription handlerDesc = new HandlerDescription();
PhaseRule rule = new PhaseRule(phaseName);
handlerDesc.setRules(rule);
@@ -47,38 +47,37 @@
flow.addHandler(handlerDesc);
}
-
-// public static void addPhasesToServiceFromFlow(
-// ServiceContext serviceContext,
-// String phaseName,
-// Flow flow,
-// int flowtype)
-// throws AxisFault {
-// ArrayList faultchain = new ArrayList();
-// Phase p = new Phase(Constants.PHASE_SERVICE);
-// faultchain.add(p);
-// addHandlers(flow, p);
-// serviceContext.setPhases(faultchain, flowtype);
-// }
-
-// public static void createExecutionChains(ServiceContext serviceContext) throws AxisFault {
-// ServiceDescription service = serviceContext.getServiceConfig();
-// addPhasesToServiceFromFlow(
-// serviceContext,
-// Constants.PHASE_SERVICE,
-// service.getInFlow(),
-// AxisConfiguration.INFLOW);
-// addPhasesToServiceFromFlow(
-// serviceContext,
-// Constants.PHASE_SERVICE,
-// service.getOutFlow(),
-// AxisConfiguration.OUTFLOW);
-// addPhasesToServiceFromFlow(
-// serviceContext,
-// Constants.PHASE_SERVICE,
-// service.getFaultInFlow(),
-// AxisConfiguration.FAULT_IN_FLOW);
-// }
+ // public static void addPhasesToServiceFromFlow(
+ // ServiceContext serviceContext,
+ // String phaseName,
+ // Flow flow,
+ // int flowtype)
+ // throws AxisFault {
+ // ArrayList faultchain = new ArrayList();
+ // Phase p = new Phase(Constants.PHASE_SERVICE);
+ // faultchain.add(p);
+ // addHandlers(flow, p);
+ // serviceContext.setPhases(faultchain, flowtype);
+ // }
+
+ // public static void createExecutionChains(ServiceContext serviceContext) throws AxisFault {
+ // ServiceDescription service = serviceContext.getServiceConfig();
+ // addPhasesToServiceFromFlow(
+ // serviceContext,
+ // Constants.PHASE_SERVICE,
+ // service.getInFlow(),
+ // AxisConfiguration.INFLOW);
+ // addPhasesToServiceFromFlow(
+ // serviceContext,
+ // Constants.PHASE_SERVICE,
+ // service.getOutFlow(),
+ // AxisConfiguration.OUTFLOW);
+ // addPhasesToServiceFromFlow(
+ // serviceContext,
+ // Constants.PHASE_SERVICE,
+ // service.getFaultInFlow(),
+ // AxisConfiguration.FAULT_IN_FLOW);
+ // }
public static ServiceDescription createSimpleService(
QName serviceName,
@@ -88,7 +87,7 @@
ServiceDescription service = new ServiceDescription(serviceName);
service.setClassLoader(Thread.currentThread().getContextClassLoader());
service.addParameter(new ParameterImpl(AbstractMessageReceiver.SERVICE_CLASS, className));
-
+
OperationDescription axisOp = new OperationDescription(opName);
axisOp.setMessageReciever(messageReceiver);
axisOp.setStyle(WSDLService.STYLE_RPC);
@@ -96,14 +95,14 @@
return service;
}
-// public static ServiceContext createServiceContext(
-// ServiceDescription service,
-// ConfigurationContext engineContext)
-// throws AxisFault {
-// ServiceContext serviceContext = new ServiceContext(service, engineContext);
-// createExecutionChains(serviceContext);
-// return serviceContext;
-// }
+ // public static ServiceContext createServiceContext(
+ // ServiceDescription service,
+ // ConfigurationContext engineContext)
+ // throws AxisFault {
+ // ServiceContext serviceContext = new ServiceContext(service, engineContext);
+ // createExecutionChains(serviceContext);
+ // return serviceContext;
+ // }
public static ServiceDescription createSimpleService(
QName serviceName,
@@ -116,44 +115,78 @@
opName);
}
-// public static void addHandlers(Flow flow, Phase phase) throws AxisFault {
-// if (flow != null) {
-// int handlerCount = flow.getHandlerCount();
-// for (int i = 0; i < handlerCount; i++) {
-// phase.addHandler(flow.getHandler(i).getHandler());
-// }
-// }
-// }
- public static void resolvePhases(AxisConfiguration axisconfig,ServiceDescription serviceDesc) throws AxisFault, PhaseException{
- PhaseResolver pr = new PhaseResolver(axisconfig,serviceDesc);
+ // public static void addHandlers(Flow flow, Phase phase) throws AxisFault {
+ // if (flow != null) {
+ // int handlerCount = flow.getHandlerCount();
+ // for (int i = 0; i < handlerCount; i++) {
+ // phase.addHandler(flow.getHandler(i).getHandler());
+ // }
+ // }
+ // }
+ public static void resolvePhases(AxisConfiguration axisconfig, ServiceDescription serviceDesc)
+ throws AxisFault, PhaseException {
+ PhaseResolver pr = new PhaseResolver(axisconfig, serviceDesc);
pr.buildchains();
}
-
- public static String getParameterValue(Parameter param){
- if(param == null){
+
+ public static String getParameterValue(Parameter param) {
+ if (param == null) {
return null;
- }else{
- return (String)param.getValue();
+ } else {
+ 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{
+
+ 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)){
+ } 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);
+ } 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);
}
}
-
+
}
-
-
+
+ public static String[] parseRequestURLForServiceAndOperation(String filePart) {
+ String[] values = new String[2];
+
+ int index = filePart.lastIndexOf(Constants.REQUEST_URL_PREFIX);
+ String serviceStr = null;
+ if (-1 != index) {
+ serviceStr = filePart.substring(index + Constants.REQUEST_URL_PREFIX.length() + 1);
+ if ((index = serviceStr.indexOf('/')) > 0) {
+
+ values[0] = serviceStr.substring(0, index);
+ int lastIndex = serviceStr.indexOf('?');
+ if(lastIndex >= 0){
+ values[1] = serviceStr.substring(index + 1,lastIndex);
+ }else{
+ values[1] = serviceStr.substring(index + 1);
+ }
+
+
+
+ } else {
+ values[0] = serviceStr;
+ }
+ }
+ return values;
+ }
+
}
Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/rest/HttpGetRESTBasedTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/rest/HttpGetRESTBasedTest.java?rev=193054&r1=193053&r2=193054&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/rest/HttpGetRESTBasedTest.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/rest/HttpGetRESTBasedTest.java Wed Jun 22 19:36:43 2005
@@ -23,11 +23,19 @@
import java.net.HttpURLConnection;
import java.net.URL;
+import javax.xml.namespace.QName;
+
import junit.framework.TestCase;
+import org.apache.axis.description.ServiceDescription;
+import org.apache.axis.engine.Echo;
import org.apache.axis.integration.UtilServer;
+import org.apache.axis.util.Utils;
public class HttpGetRESTBasedTest extends TestCase {
+ private QName serviceName = new QName("EchoXMLService");
+ private QName operationName = new QName("echoOMElement");
+
public HttpGetRESTBasedTest() {
super(HttpGetRESTBasedTest.class.getName());
@@ -38,29 +46,33 @@
}
protected void setUp() throws Exception {
- // UtilServer.start();
+ UtilServer.start();
+
+ ServiceDescription service =
+ Utils.createSimpleService(serviceName,Echo.class.getName(),operationName);
+ UtilServer.deployService(service);
}
protected void tearDown() throws Exception {
-
- // UtilServer.stop();
+ UtilServer.unDeployService(serviceName);
+ UtilServer.stop();
}
public void testEchoXMLSync() throws Exception {
//TODO support the GET with the Simple Axis Server and enable this test case
-// URL wsdlrequestUrl =
-// new URL("http://127.0.0.1:8080/axis2/services/Version/getVersion?operation=getVersion");
-//
-// HttpURLConnection connection = (HttpURLConnection) wsdlrequestUrl.openConnection();
-// BufferedReader reader =
-// new BufferedReader(new InputStreamReader(connection.getInputStream()));
-// connection.getResponseCode();
-// String line = reader.readLine();
-// while (line != null) {
-// System.out.println(line);
-// line = reader.readLine();
-// }
+ URL wsdlrequestUrl =
+ new URL("http://127.0.0.1:5555/axis2/services/EchoXMLService/echoOMElement?value1=value1,value2=value2");
+
+ HttpURLConnection connection = (HttpURLConnection) wsdlrequestUrl.openConnection();
+ BufferedReader reader =
+ new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ connection.getResponseCode();
+ String line = reader.readLine();
+ while (line != null) {
+ System.out.println(line);
+ line = reader.readLine();
+ }
}
}