[jboss-svn-commits] JBL Code SVN: r27450 - in labs/jbossesb/trunk/product: rosetta/src/org/jboss/soa/esb/listeners/gateway and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jul 2 12:56:10 EDT 2009
Author: dward
Date: 2009-07-02 12:56:10 -0400 (Thu, 02 Jul 2009)
New Revision: 27450
Modified:
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpGatewayListener.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpMessageComposer.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/ResponseHeader.java
labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/AbstractWsdlContractPublisher.java
labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java
labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java
labs/jbossesb/trunk/product/services/soap/src/test/java/org/jboss/soa/esb/actions/soap/SOAPClient_Response_UnitTest.java
Log:
Fix for: JBESB-2511
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java 2009-07-02 16:50:04 UTC (rev 27449)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java 2009-07-02 16:56:10 UTC (rev 27450)
@@ -19,30 +19,31 @@
*/
package org.jboss.soa.esb.actions.routing.http;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Properties;
+
+import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethodBase;
import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.Header;
import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.util.StreamUtils;
import org.jboss.soa.esb.ConfigurationException;
-import org.jboss.soa.esb.http.HttpClientFactory;
import org.jboss.soa.esb.actions.ActionLifecycleException;
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.routing.AbstractRouter;
import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.http.HttpClientFactory;
import org.jboss.soa.esb.listeners.ListenerTagNames;
import org.jboss.soa.esb.listeners.message.MessageDeliverException;
import org.jboss.soa.esb.message.Message;
-import org.jboss.internal.soa.esb.util.StreamUtils;
+import org.jboss.soa.esb.message.ResponseHeader;
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Properties;
-
/**
* Http router.
* <p/>
@@ -155,13 +156,18 @@
private void attachResponseDetails(Message message, HttpMethodBase method, int responseCode) {
HttpResponse response = new HttpResponse(responseCode);
+ org.jboss.soa.esb.message.Properties properties = message.getProperties();
response.setEncoding(method.getResponseCharSet());
response.setLength(method.getResponseContentLength());
- Header[] responseHeaders = method.getRequestHeaders();
+ Header[] responseHeaders = method.getResponseHeaders();
for(Header responseHeader : responseHeaders) {
- response.addHeader(new HttpHeader(responseHeader.getName(), responseHeader.getValue()));
+ String name = responseHeader.getName();
+ String value = responseHeader.getValue();
+ response.addHeader(new HttpHeader(name, value));
+ // https://jira.jboss.org/jira/browse/JBESB-2511
+ new ResponseHeader(name, value).addToProperties(properties);
}
message.getBody().add(HttpResponse.RESPONSE_KEY, response);
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpGatewayListener.java 2009-07-02 16:50:04 UTC (rev 27449)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpGatewayListener.java 2009-07-02 16:56:10 UTC (rev 27450)
@@ -404,17 +404,6 @@
}
}
}
-
- /**Get the uncomposed message delivery dapater
- * @return uncomposed message delivery adapter
- * @throws ConfigurationException For configuation error
- */
- protected UncomposedMessageDeliveryAdapter createDeliveryAdapter()
- throws ConfigurationException {
- return UncomposedMessageDeliveryAdapter.getGatewayDeliveryAdapter(
- getConfig(),
- new HttpMessageComposer<HttpRequestWrapper>());
- }
/**Initialize the StandardContext.By default it will uses
* {@link org.jboss.soa.esb.listeners.gateway.TomcatDefaultServlet} as default servlet mapping
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpMessageComposer.java 2009-07-02 16:50:04 UTC (rev 27449)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HttpMessageComposer.java 2009-07-02 16:56:10 UTC (rev 27450)
@@ -23,7 +23,6 @@
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -37,8 +36,11 @@
import org.jboss.soa.esb.message.Body;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.MessagePayloadProxy;
+import org.jboss.soa.esb.message.Properties;
+import org.jboss.soa.esb.message.ResponseHeader;
import org.jboss.soa.esb.message.MessagePayloadProxy.NullPayloadHandling;
import org.jboss.soa.esb.message.body.content.BytesBody;
+
/**
* TomcatMessageComposer class is used to compose the HttpServletRquest
* to ESB aware message and decompse the ESB aware message to HttpServletRespones
@@ -95,6 +97,10 @@
protected void populateMessage(Message message, T requestWrapper)
throws MessageDeliverException {
HttpServletRequest request = requestWrapper.getRequest();
+ Properties properties = message.getProperties();
+ //Set http request info
+ setRequestInfo(request, properties);
+ //Set http request params
Map paraMap = request.getParameterMap();
byte[] bodyBytes = null;
try {
@@ -103,10 +109,8 @@
throw new MessageDeliverException(
"Failed to read body data from http request", e);
}
- //Set http request info
- message.getProperties().setProperty(HTTP_REQUEST_INFO_MAP, getRequestInfo(request));
if (paraMap != null && paraMap.size() > 0) {
- message.getProperties().setProperty(HTTP_REQUEST_PARAMETER_MAP, paraMap);
+ properties.setProperty(HTTP_REQUEST_PARAMETER_MAP, paraMap);
}
// https://jira.jboss.org/jira/browse/JBESB-2664
String contentType = request.getContentType();
@@ -129,18 +133,30 @@
@SuppressWarnings("unchecked")
public Object decompose(Message message, T requestWrapper) throws MessageDeliverException {
HttpServletResponse httpResponse = (HttpServletResponse)requestWrapper.getResponse();
- Object header = message.getProperties().getProperty(HTTP_RESPONSE_HEADER_MAP);
- Object status = message.getProperties().getProperty(HTTP_RESPONSE_STATUS);
- if (header != null) {
- Map headerMap = (Map)header;
- Iterator ite = headerMap.keySet().iterator();
- while (ite.hasNext()) {
- String name = (String)ite.next();
- String value = (String)headerMap.get(name);
- httpResponse.setHeader(name, value);
+
+ Properties properties = message.getProperties();
+ for ( String propertyName : properties.getNames() )
+ {
+ Object propertyValue = properties.getProperty(propertyName);
+ if ( propertyName.equals(HTTP_RESPONSE_HEADER_MAP) )
+ {
+ Map headerMap = (Map)propertyValue;
+ for (Object headerKey : headerMap.keySet() )
+ {
+ String headerName = (String)headerKey;
+ String headerValue = (String)headerMap.get(headerName);
+ httpResponse.setHeader(headerName, headerValue);
+ }
}
-
+ else if (propertyValue instanceof ResponseHeader)
+ {
+ // https://jira.jboss.org/jira/browse/JBESB-2511
+ ResponseHeader header = (ResponseHeader)propertyValue;
+ httpResponse.setHeader( header.getName(), header.getValue() );
+ }
}
+
+ Object status = properties.getProperty(HTTP_RESPONSE_STATUS);
if (status != null) {
int reponseStatus = (Integer)status;
httpResponse.setStatus(reponseStatus);
@@ -172,7 +188,7 @@
* @return Request information includes the http header and other information parsed by
* servlet container from a servlet request
*/
- public Map<String, Object> getRequestInfo(HttpServletRequest request) {
+ public void setRequestInfo(HttpServletRequest request, Properties properties) {
Map<String, Object> requestInfoMap = new HashMap<String, Object>();
requestInfoMap.put("authType", request.getAuthType());
requestInfoMap.put("characterEncoding", request.getCharacterEncoding());
@@ -199,7 +215,9 @@
String name = (String) enumeration.nextElement();
String value = request.getHeader(name);
requestInfoMap.put(name, value);
- }
- return requestInfoMap;
+ properties.setProperty(name, value);
+ }
+
+ properties.setProperty(HTTP_REQUEST_INFO_MAP, requestInfoMap);
}
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java 2009-07-02 16:50:04 UTC (rev 27449)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java 2009-07-02 16:56:10 UTC (rev 27450)
@@ -589,6 +589,7 @@
Object value = properties.getProperty(name);
if(value instanceof ResponseHeader) {
+ // https://jira.jboss.org/jira/browse/JBESB-2511
ResponseHeader header = (ResponseHeader) value;
responseMap.put(header.getName(), header.getValue());
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/ResponseHeader.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/ResponseHeader.java 2009-07-02 16:50:04 UTC (rev 27449)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/ResponseHeader.java 2009-07-02 16:56:10 UTC (rev 27450)
@@ -20,6 +20,8 @@
package org.jboss.soa.esb.message;
import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
/**
* Response header.
@@ -30,6 +32,14 @@
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
public class ResponseHeader implements Serializable {
+
+ private static final Set<String> BLACKLISTED_PROPERTY_NAMES = new HashSet<String>();
+ static {
+ BLACKLISTED_PROPERTY_NAMES.add("content-length"); // can hang the response
+ BLACKLISTED_PROPERTY_NAMES.add("transfer-encoding"); // can hang the response
+ BLACKLISTED_PROPERTY_NAMES.add("server"); // creates duplicate values
+ }
+
private String name;
private String value;
@@ -56,4 +66,11 @@
public void setValue(String value) {
this.value = value;
}
+
+ public void addToProperties(Properties properties) {
+ if ( !BLACKLISTED_PROPERTY_NAMES.contains(name.toLowerCase()) ) {
+ properties.setProperty(name, this);
+ }
+ }
+
}
Modified: labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/AbstractWsdlContractPublisher.java
===================================================================
--- labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/AbstractWsdlContractPublisher.java 2009-07-02 16:50:04 UTC (rev 27449)
+++ labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/AbstractWsdlContractPublisher.java 2009-07-02 16:56:10 UTC (rev 27450)
@@ -150,7 +150,7 @@
* @return The WSDL.
* @throws IOException Error reading wsdl.
*/
- private String getWsdl(String wsdlAddress) throws IOException {
+ public String getWsdl(String wsdlAddress) throws IOException {
RemoteWsdlLoader loader;
try {
Modified: labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java
===================================================================
--- labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java 2009-07-02 16:50:04 UTC (rev 27449)
+++ labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java 2009-07-02 16:56:10 UTC (rev 27450)
@@ -22,37 +22,42 @@
package org.jboss.soa.esb.actions.soap;
-import java.io.*;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
-import java.net.URI;
-import java.net.URISyntaxException;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
+import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.publish.Publish;
import org.jboss.internal.soa.esb.soap.OGNLUtils;
import org.jboss.internal.soa.esb.util.StreamUtils;
-import org.jboss.internal.soa.esb.publish.Publish;
import org.jboss.soa.esb.ConfigurationException;
-import org.jboss.soa.esb.listeners.ListenerTagNames;
-import org.jboss.soa.esb.listeners.message.MessageDeliverException;
-import org.jboss.soa.esb.http.HttpClientFactory;
import org.jboss.soa.esb.actions.AbstractActionPipelineProcessor;
+import org.jboss.soa.esb.actions.ActionLifecycleException;
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.ActionUtils;
-import org.jboss.soa.esb.actions.ActionLifecycleException;
import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.http.HttpClientFactory;
+import org.jboss.soa.esb.listeners.ListenerTagNames;
+import org.jboss.soa.esb.listeners.message.MessageDeliverException;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.MessagePayloadProxy;
+import org.jboss.soa.esb.message.ResponseHeader;
import org.jboss.soa.esb.message.body.content.BytesBody;
import org.jboss.soa.esb.util.ClassUtil;
import org.w3c.dom.Document;
@@ -415,7 +420,7 @@
} catch (SAXException e) {
throw new ActionProcessingException("soapUI Client Service invocation failed.", e);
}
- String response = invokeEndpoint(request);
+ Response response = invokeEndpoint(request);
// And process the response into the message...
processResponse(message, response);
@@ -438,8 +443,26 @@
return soapAction;
}
}
+
+ protected static class Response {
+ private Header[] headers;
+ private String body;
+ protected Response(String body) {
+ this(body, new Header[0]);
+ }
+ protected Response(String body, Header[] headers) {
+ this.headers = headers;
+ this.body = body;
+ }
+ protected Header[] getHeaders() {
+ return headers;
+ }
+ protected String getBody() {
+ return body;
+ }
+ }
- protected String invokeEndpoint(String request) throws ActionProcessingException {
+ private Response invokeEndpoint(String request) throws ActionProcessingException {
String endpoint;
try {
@@ -465,7 +488,7 @@
logger.warn("Received status code '" + result + "' on HTTP SOAP (POST) request to '" + endpoint + "'.");
}
- return post.getResponseBodyAsString();
+ return new Response(post.getResponseBodyAsString(), post.getResponseHeaders());
} catch (IOException e) {
throw new ActionProcessingException("Failed to invoke SOAP Endpoint: '" + endpoint + " ' - '" + soapAction + "'.", e);
} finally {
@@ -479,13 +502,13 @@
* @param response The SOAP response.
* @throws ActionProcessingException Error processing the response.
*/
- protected void processResponse(Message message, String response) throws ActionProcessingException {
+ protected void processResponse(Message message, Response response) throws ActionProcessingException {
Object responseObject;
if(responseXStreamDeserialzer != null) {
- responseObject = applyXStreamResponseDeserializer(response);
+ responseObject = applyXStreamResponseDeserializer(response.getBody());
} else if(responseAsOgnlMap) {
- responseObject = populateResponseOgnlMap(response);
+ responseObject = populateResponseOgnlMap(response.getBody());
} else {
// Otherwise, the response Object is the raw SOAP String...
responseObject = response;
@@ -496,6 +519,12 @@
} catch (MessageDeliverException e) {
throw new ActionProcessingException(e);
}
+
+ // https://jira.jboss.org/jira/browse/JBESB-2511
+ org.jboss.soa.esb.message.Properties properties = message.getProperties();
+ for (Header header : response.getHeaders()) {
+ new ResponseHeader(header.getName(), header.getValue()).addToProperties(properties);
+ }
}
private Object applyXStreamResponseDeserializer(String response) {
Modified: labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java
===================================================================
--- labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java 2009-07-02 16:50:04 UTC (rev 27449)
+++ labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java 2009-07-02 16:56:10 UTC (rev 27450)
@@ -195,7 +195,8 @@
for(Map.Entry<String, List<String>> header: responseHeaders.entrySet())
{
// We can only deal with the first value in the list.
- responseProperties.setProperty(header.getKey(), new ResponseHeader(header.getKey(), header.getValue().get(0))) ;
+ // https://jira.jboss.org/jira/browse/JBESB-2511
+ new ResponseHeader(header.getKey(), header.getValue().get(0)).addToProperties(properties);
}
final byte[] responseData = servletResponse.getContent() ;
Modified: labs/jbossesb/trunk/product/services/soap/src/test/java/org/jboss/soa/esb/actions/soap/SOAPClient_Response_UnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/services/soap/src/test/java/org/jboss/soa/esb/actions/soap/SOAPClient_Response_UnitTest.java 2009-07-02 16:50:04 UTC (rev 27449)
+++ labs/jbossesb/trunk/product/services/soap/src/test/java/org/jboss/soa/esb/actions/soap/SOAPClient_Response_UnitTest.java 2009-07-02 16:56:10 UTC (rev 27450)
@@ -1,18 +1,19 @@
package org.jboss.soa.esb.actions.soap;
+import java.io.IOException;
import java.util.Map;
-import java.io.IOException;
import junit.framework.TestCase;
import org.jboss.internal.soa.esb.util.StreamUtils;
import org.jboss.soa.esb.ConfigurationException;
-import org.jboss.soa.esb.testutils.ESBConfigUtil;
import org.jboss.soa.esb.actions.ActionProcessingException;
+import org.jboss.soa.esb.actions.soap.SOAPClient.Response;
import org.jboss.soa.esb.actions.soap.beans.Order;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.testutils.ESBConfigUtil;
import org.xml.sax.SAXException;
/**
@@ -59,8 +60,9 @@
String responseString = new String(StreamUtils.readStream(getClass().getResourceAsStream("soap-message-01.xml")));
Message message = MessageFactory.getInstance().getMessage();
- soapClient.processResponse(message, responseString);
- Order order = (Order) message.getBody().get();
+ soapClient.processResponse(message, new Response(responseString));
+ @SuppressWarnings("unused")
+ Order order = (Order) message.getBody().get();
//assertEquals();
}
@@ -71,7 +73,7 @@
String responseString = new String(StreamUtils.readStream(getClass().getResourceAsStream("soap-message-01.xml")));
Message message = MessageFactory.getInstance().getMessage();
- soapClient.processResponse(message, responseString);
+ soapClient.processResponse(message, new Response(responseString));
Map<String, String> responseMap = (Map<String, String>) message.getBody().get();
assertEquals("{customerOrder.orderheader.customerName=Tom Fennelly, customerOrder.items[0].partNumber=1, customerOrder.items[0].description=desc-1, customerOrder.items[0].quantity=1, customerOrder.items[0].price=1.1, customerOrder.items[0].extensionAmount=1, customerOrder.items[1].partNumber=2, customerOrder.items[1].description=desc-2, customerOrder.items[1].quantity=2, customerOrder.items[1].price=2.2, customerOrder.items[1].extensionAmount=2}", responseMap.toString());
@@ -110,17 +112,17 @@
}
- private static String response_01 =
+ private static Response response_01 = new Response(
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
"\t<soapenv:Header/>\n" +
"\t<soapenv:Body>\n" +
"\t\t<aetgt:customerOrderAck xmlns:aetgt=\"http://schemas.active-endpoints.com/sample/customerorder/2006/04/CustomerOrder.xsd\">true</aetgt:customerOrderAck>\n" +
"\t</soapenv:Body>\n" +
- "</soapenv:Envelope>";
- private static String response_02 =
+ "</soapenv:Envelope>");
+ private static Response response_02 = new Response(
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
"\t<soapenv:Body>\n" +
"\t\t<aetgt:customerOrderAck xmlns:aetgt=\"http://schemas.active-endpoints.com/sample/customerorder/2006/04/CustomerOrder.xsd\">false</aetgt:customerOrderAck>\n" +
"\t</soapenv:Body>\n" +
- "</soapenv:Envelope>";
+ "</soapenv:Envelope>");
}
More information about the jboss-svn-commits
mailing list