Author: ruwan
Date: Tue Nov 20 03:18:02 2007
New Revision: 596621
URL: http://svn.apache.org/viewvc?rev=596621&view=rev
Log:
Fixing the REST support through HTTP GET on synapse
Added:
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/util/RESTUtil.java
(with props)
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
Tue Nov 20 03:18:02 2007
@@ -219,6 +219,7 @@
/** Message format values in EndpointDefinition. Used by address, wsdl
endpoints */
public static final String FORMAT_POX = "pox";
+ public static final String FORMAT_GET = "get";
public static final String FORMAT_SOAP11 = "soap11";
public static final String FORMAT_SOAP12 = "soap12";
}
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
Tue Nov 20 03:18:02 2007
@@ -168,20 +168,24 @@
if (format != null)
{
String forceValue =
format.getAttributeValue().trim().toLowerCase();
- if (forceValue.equals(SynapseConstants.FORMAT_POX)) {
+ if (SynapseConstants.FORMAT_POX.equals(forceValue)) {
endpoint.setForcePOX(true);
endpoint.setFormat(SynapseConstants.FORMAT_POX);
- } else if (forceValue.equals(SynapseConstants.FORMAT_SOAP11)) {
+ } else if (SynapseConstants.FORMAT_GET.equals(forceValue)) {
+ endpoint.setForceGET(true);
+ endpoint.setFormat(SynapseConstants.FORMAT_GET);
+
+ } else if (SynapseConstants.FORMAT_SOAP11.equals(forceValue)) {
endpoint.setForceSOAP11(true);
endpoint.setFormat(SynapseConstants.FORMAT_SOAP11);
- } else if (forceValue.equals(SynapseConstants.FORMAT_SOAP12)) {
+ } else if (SynapseConstants.FORMAT_SOAP12.equals(forceValue)) {
endpoint.setForceSOAP12(true);
endpoint.setFormat(SynapseConstants.FORMAT_SOAP12);
} else {
- handleException("unknown value -\""+forceValue+"\". Attribute
'format' accepts only 'pox','soap11','soap12'");
+ handleException("unknown value -\""+forceValue+"\". Attribute
'format' accepts only 'pox', 'get', 'soap11', 'soap12'");
}
}
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
Tue Nov 20 03:18:02 2007
@@ -109,6 +109,9 @@
if (SynapseConstants.FORMAT_POX.equals(endpt.getFormat())) {
address.addAttribute(fac.createOMAttribute("format", null,
"pox"));
+ } else if (SynapseConstants.FORMAT_GET.equals(endpt.getFormat())) {
+ address.addAttribute(fac.createOMAttribute("format", null, "get"));
+
} else if (SynapseConstants.FORMAT_SOAP11.equals(endpt.getFormat())) {
address.addAttribute(fac.createOMAttribute("format", null,
"soap11"));
@@ -117,8 +120,11 @@
// following two kept for backward compatibility
} else if (endpt.isForcePOX()) {
- address.addAttribute(fac.createOMAttribute("format", null, "pox"));
+ address.addAttribute(fac.createOMAttribute("format", null, "get"));
+ } else if (endpt.isForceGET()) {
+ address.addAttribute(fac.createOMAttribute("format", null, "pox"));
+
} else if (endpt.isForceSOAP11()) {
address.addAttribute(fac.createOMAttribute("format", null,
"soap11"));
} else if (endpt.isForceSOAP12()) {
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
Tue Nov 20 03:18:02 2007
@@ -226,6 +226,10 @@
endpointDefinition.setForcePOX(true);
endpointDefinition.setFormat(SynapseConstants.FORMAT_POX);
+ } else if (SynapseConstants.FORMAT_GET.equals(forceValue)) {
+ endpointDefinition.setForceGET(true);
+ endpointDefinition.setFormat(SynapseConstants.FORMAT_GET);
+
} else if (SynapseConstants.FORMAT_SOAP11.equals(forceValue)) {
endpointDefinition.setForceSOAP11(true);
endpointDefinition.setFormat(SynapseConstants.FORMAT_SOAP11);
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
Tue Nov 20 03:18:02 2007
@@ -111,6 +111,9 @@
if
(SynapseConstants.FORMAT_POX.equals(endpointDefinition.getFormat())) {
wsdlElement.addAttribute(fac.createOMAttribute("format", null,
"pox"));
+ } else if
(SynapseConstants.FORMAT_GET.equals(endpointDefinition.getFormat())) {
+ wsdlElement.addAttribute(fac.createOMAttribute("format", null,
"get"));
+
} else if
(SynapseConstants.FORMAT_SOAP11.equals(endpointDefinition.getFormat())) {
wsdlElement.addAttribute(fac.createOMAttribute("format", null,
"soap11"));
@@ -120,7 +123,8 @@
// following two kept for backward compatibility
} else if (endpointDefinition.isForcePOX()) {
wsdlElement.addAttribute(fac.createOMAttribute("format", null,
"pox"));
-
+ } else if (endpointDefinition.isForceGET()) {
+ wsdlElement.addAttribute(fac.createOMAttribute("format", null,
"get"));
} else if (endpointDefinition.isForceSOAP11()) {
wsdlElement.addAttribute(fac.createOMAttribute("format", null,
"soap11"));
} else if (endpointDefinition.isForceSOAP12()) {
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
Tue Nov 20 03:18:02 2007
@@ -27,6 +27,7 @@
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axiom.soap.SOAPHeaderBlock;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.OperationClient;
@@ -103,7 +104,8 @@
"] [ format = " + endpoint.getFormat() +
"] [ force soap11=" + endpoint.isForceSOAP11() +
"] [ force soap12=" + endpoint.isForceSOAP12() +
- "; pox=" + endpoint.isForcePOX() : "") +
+ "] [ pox=" + endpoint.isForcePOX() +
+ "] [ get=" + endpoint.isForcePOX() : "") +
"] [ to " + synapseOutMessageContext.getTo() + "]");
}
@@ -121,6 +123,11 @@
if (SynapseConstants.FORMAT_POX.equals(endpoint.getFormat())) {
axisOutMsgCtx.setDoingREST(true);
+
+ } else if
(SynapseConstants.FORMAT_GET.equals(endpoint.getFormat())) {
+ axisOutMsgCtx.setDoingREST(true);
+ axisOutMsgCtx.setProperty(Constants.Configuration.HTTP_METHOD,
+ Constants.Configuration.HTTP_METHOD_GET);
} else if
(SynapseConstants.FORMAT_SOAP11.equals(endpoint.getFormat())) {
axisOutMsgCtx.setDoingREST(false);
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
Tue Nov 20 03:18:02 2007
@@ -43,9 +43,11 @@
private String wsSecPolicyKey = null;
/** use a separate listener - implies addressing is on **/
private boolean useSeparateListener = false;
- /** force REST on **/
+ /** force REST (POST) on **/
private boolean forcePOX = false;
- /** force SOAP11 on **/
+ /** force REST (GET) on **/
+ private boolean forceGET = false;
+ /** force SOAP11 on **/
private boolean forceSOAP11 = false;
/** force SOAP11 on **/
private boolean forceSOAP12 = false;
@@ -184,7 +186,15 @@
return forcePOX;
}
- public void setForceSOAP11(boolean forceSOAP11) {
+ public boolean isForceGET() {
+ return forceGET;
+ }
+
+ public void setForceGET(boolean forceGET) {
+ this.forceGET = forceGET;
+ }
+
+ public void setForceSOAP11(boolean forceSOAP11) {
this.forceSOAP11 = forceSOAP11;
}
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
Tue Nov 20 03:18:02 2007
@@ -14,6 +14,7 @@
import org.apache.axiom.om.OMNode;
import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
import java.util.Iterator;
import java.util.ArrayList;
@@ -148,6 +149,8 @@
ori.getProperty(org.apache.axis2.Constants.Configuration.ENABLE_MTOM));
newMC.setProperty(org.apache.axis2.Constants.Configuration.ENABLE_SWA,
ori.getProperty(org.apache.axis2.Constants.Configuration.ENABLE_SWA));
+ newMC.setProperty(Constants.Configuration.HTTP_METHOD,
+ ori.getProperty(Constants.Configuration.HTTP_METHOD));
newMC.setDoingREST(ori.isDoingREST());
newMC.setDoingMTOM(ori.isDoingMTOM());
Modified:
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java
(original)
+++
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java
Tue Nov 20 03:18:02 2007
@@ -21,12 +21,15 @@
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
import org.apache.synapse.transport.nhttp.util.PipeImpl;
+import org.apache.synapse.transport.nhttp.util.RESTUtil;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.MessageFormatter;
import org.apache.axis2.transport.TransportUtils;
import org.apache.http.*;
import org.apache.http.message.BasicHttpEntityEnclosingRequest;
+import org.apache.http.message.BasicHttpRequest;
import org.apache.http.protocol.HTTP;
import org.apache.http.entity.BasicHttpEntity;
import org.apache.axiom.om.OMOutputFormat;
@@ -98,18 +101,41 @@
*/
public HttpRequest getRequest() throws IOException {
- HttpEntityEnclosingRequest httpRequest = null;
+ boolean doingGET = Constants.Configuration.HTTP_METHOD_GET.equals(
+ msgContext.getProperty(Constants.Configuration.HTTP_METHOD));
+ HttpRequest httpRequest = null;
if (msgContext.isPropertyTrue(NhttpConstants.FORCE_HTTP_1_0)) {
- httpRequest = new BasicHttpEntityEnclosingRequest(
- "POST", epr.getAddress(), HttpVersion.HTTP_1_0);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- messageFormatter.writeTo(msgContext, format, baos, true);
- BasicHttpEntity entity = new BasicHttpEntity();
- entity.setContentLength(baos.toByteArray().length);
- httpRequest.setEntity(entity);
+
+ if (doingGET) {
+
+ httpRequest = new BasicHttpRequest(
+ "GET", RESTUtil.getURI(
+ msgContext, epr.getAddress()), HttpVersion.HTTP_1_0);
+
+ } else {
+
+ httpRequest = new BasicHttpEntityEnclosingRequest(
+ "POST", epr.getAddress(), HttpVersion.HTTP_1_0);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ messageFormatter.writeTo(msgContext, format, baos, true);
+ BasicHttpEntity entity = new BasicHttpEntity();
+ entity.setContentLength(baos.toByteArray().length);
+ ((BasicHttpEntityEnclosingRequest)
httpRequest).setEntity(entity);
+ }
+
+
} else {
- httpRequest = new BasicHttpEntityEnclosingRequest("POST",
epr.getAddress());
- httpRequest.setEntity(new BasicHttpEntity());
+
+ if (doingGET) {
+
+ httpRequest = new BasicHttpRequest(
+ "GET", RESTUtil.getURI(msgContext, epr.getAddress()));
+
+ } else {
+ httpRequest = new BasicHttpEntityEnclosingRequest("POST",
epr.getAddress());
+ ((BasicHttpEntityEnclosingRequest) httpRequest).setEntity(new
BasicHttpEntity());
+ }
}
// set any transport headers
@@ -147,7 +173,6 @@
httpRequest.setHeader(HTTPConstants.HEADER_SOAP_ACTION,
soapAction);
}
-
httpRequest.setHeader(
HTTP.CONTENT_TYPE,
Modified:
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java?rev=596621&r1=596620&r2=596621&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
(original)
+++
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
Tue Nov 20 03:18:02 2007
@@ -248,6 +248,7 @@
}
String serviceName = null;
+ String operation = null;
if (uri.startsWith(servicePath)) {
serviceName = uri.substring(servicePath.length());
if (serviceName.startsWith("/")) {
@@ -258,6 +259,12 @@
}
}
+ int opnStart = serviceName.indexOf("/");
+ if (opnStart != -1) {
+ operation = serviceName.substring(opnStart+1);
+ serviceName = serviceName.substring(0, opnStart);
+ }
+
Map parameters = new HashMap();
int pos = uri.indexOf("?");
if (pos != -1) {
@@ -273,6 +280,11 @@
}
}
+ if ("GET".equalsIgnoreCase(request.getRequestLine().getMethod())) {
+ msgContext.setProperty(Constants.Configuration.HTTP_METHOD,
+ Constants.Configuration.HTTP_METHOD_GET);
+ }
+
if (uri.equals("/favicon.ico")) {
response.setStatusCode(HttpStatus.SC_MOVED_PERMANENTLY);
response.addHeader(LOCATION, "http://ws.apache.org/favicon.ico");
@@ -378,7 +390,8 @@
}
} else {
- if (parameters.isEmpty()) {
+
+ if (parameters.isEmpty() && operation == null) {
AxisService service = (AxisService)
cfgCtx.getAxisConfiguration().
getServices().get(serviceName);
if (service != null) {
@@ -398,7 +411,7 @@
} else {
try {
-
+
HTTPTransportUtils.processHTTPGetRequest(
msgContext, os,
(request.getFirstHeader(SOAPACTION) != null ?
@@ -415,6 +428,7 @@
request.getRequestLine().getUri(), axisFault);
}
}
+
}
// make sure that the output stream is flushed and closed properly
Added:
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/util/RESTUtil.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/util/RESTUtil.java?rev=596621&view=auto
==============================================================================
---
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/util/RESTUtil.java
(added)
+++
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/util/RESTUtil.java
Tue Nov 20 03:18:02 2007
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.synapse.transport.nhttp.util;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.WSDL20DefaultValueHolder;
+import org.apache.axis2.description.WSDL2Constants;
+import org.apache.axis2.transport.http.util.URIEncoderDecoder;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Iterator;
+
+/**
+ * This class provides a set of utility methods to manage the REST invocation
calls
+ * going out from the nhttp transport in the HTTP GET method
+ */
+public class RESTUtil {
+
+ /**
+ * This method will return the URI part for the GET HTTPRequest by
converting
+ * the SOAP infoset to the URL-encoded GET format
+ *
+ * @param messageContext - from which the SOAP infoset will be extracted
to encode
+ * @param address - address of the actual service
+ * @return uri - ERI of the GET request
+ * @throws AxisFault - if the SOAP infoset cannot be converted in to the
GET URL-encoded format
+ */
+ public static String getURI(MessageContext messageContext, String address)
throws AxisFault {
+
+ OMElement firstElement;
+ address = address.substring(address.indexOf("//") + 2);
+ address = address.substring(address.indexOf("/"));
+ String queryParameterSeparator = (String) messageContext
+
.getProperty(WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR);
+ // In case queryParameterSeparator is null we better use the default
value
+
+ if (queryParameterSeparator == null) {
+ queryParameterSeparator = WSDL20DefaultValueHolder
+
.getDefaultValue(WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR);
+ }
+
+ firstElement =
messageContext.getEnvelope().getBody().getFirstElement();
+ String params = "";
+
+ if (firstElement != null) {
+
+ // first element corresponds to the operation name
+ address = address + "/" + firstElement.getLocalName();
+
+ Iterator iter = firstElement.getChildElements();
+
+ String legalCharacters = WSDL2Constants
+ .LEGAL_CHARACTERS_IN_QUERY.replaceAll(queryParameterSeparator,
"");
+ StringBuffer buff = new StringBuffer(params);
+
+ // iterate through the child elements and find the request
parameters
+ while (iter.hasNext()) {
+ OMElement element = (OMElement) iter.next();
+ try {
+
buff.append(URIEncoderDecoder.quoteIllegal(element.getLocalName(),
+
legalCharacters)).append("=").append(URIEncoderDecoder.quoteIllegal(element.getText(),
+ legalCharacters)).append(queryParameterSeparator);
+ } catch (UnsupportedEncodingException e) {
+ throw new AxisFault("URI Encoding error : " +
element.getLocalName()
+ + "=" + element.getText(), e);
+ }
+ }
+
+ params = buff.toString();
+ } else {
+ throw new AxisFault("Cannot convert SOAP infoset to a GET
URL-encoded format");
+ }
+
+ if (params.trim().length() != 0) {
+ int index = address.indexOf("?");
+ if (index == -1) {
+ address = address + "?" + params.substring(0, params.length()
- 1);
+ } else if (index == address.length() - 1) {
+ address = address + params.substring(0, params.length() - 1);
+
+ } else {
+ address = address
+ + queryParameterSeparator + params.substring(0,
params.length() - 1);
+ }
+ }
+
+ return address;
+ }
+}
Propchange:
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/util/RESTUtil.java
------------------------------------------------------------------------------
svn:executable = *
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]