| ï
Hi,Guillaume:
I have seen again the solution
I used to make some changes for test. Derived class is a good solution, but the
method WSEndpoint use IWSRequest makes it not so good....because in the test
cases I can not create a HttpServletRequest instance like in the servlet
container.
If I just add a derived class
from IWSRequest for the test, I'm not able to create a HttpServletRequest like
servlet container. But In WSEndpoint.invoke, it
will get the HttpServletRequest using
"HttpServletRequest httpRequest = request.getAttribute(HttpServletRequest.class);
", then it will use this httpRequest.
So if I just create a derived
class from IWSRequest, I must rewrite this code in WSEndpoint to make
sure that WSEndpoint will get information from my class, not the
HttpServletRequest.
I think the essential problem is that WSEndpoint should not just use
HttpServletRequest class, it should allow another information source to enable
the test without HttpServletRequest. So I added a JOnASServletRequestWrapper to
enable that.
What do you think about this
problem?
Of course, we can discuss the
necessity of this unit test of WSEndpoint...maybe
this is not nessary?
2009-03-28
xiaoda08
åääï Guillaume Sauthier
åéæéï 2009-03-27 20:26:25
æääï jonas-team
æéï
äéï [jonas-team] Re: [jonas-commits]
[16977]jonas/trunk/jonas/modules/services/webservices:makesome change for
thetests.
Hi XiaoDa
May I ask what do you need this
change ? The commit comment is not very explicit...
--G
xiaoda08@xxxxxxxxxxxxxx a Ãcrit :
- Revision
- 16977
- Author
- xiaoda
- Date
- 2009-03-27 04:34:32 +0100 (Fri, 27 Mar 2009)
Log Messagemake some change for the tests.
Modified Paths
Added Paths
Diff
Modified:
jonas/trunk/jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/Axis2WSEndpoint.java
(16976 => 16977)
--- jonas/trunk/jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/Axis2WSEndpoint.java 2009-03-26 17:07:51 UTC (rev 16976)
+++ jonas/trunk/jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/Axis2WSEndpoint.java 2009-03-27 03:34:32 UTC (rev 16977)
@@ -102,6 +102,8 @@
import org.ow2.jonas.ws.jaxws.PortIdentifier;
import org.ow2.jonas.ws.jaxws.PortMetaData;
import org.ow2.jonas.ws.jaxws.WSException;
+import org.ow2.jonas.ws.jaxws.http.servlet.JOnASServletRequestWrapper;
+import org.ow2.jonas.ws.jaxws.http.servlet.JOnASServletResponseWrapper;
import org.ow2.util.log.Log;
import org.ow2.util.log.LogFactory;
import org.w3c.dom.Document;
@@ -205,8 +207,8 @@
public void invoke(final IWSRequest request, final IWSResponse response) throws WSException {
- HttpServletRequest httpRequest = request.getAttribute(HttpServletRequest.class);
- HttpServletResponse httpResponse = request.getAttribute(HttpServletResponse.class);
+ JOnASServletRequestWrapper httpRequest = request.getAttribute(JOnASServletRequestWrapper.class);
+ JOnASServletResponseWrapper httpResponse = request.getAttribute(JOnASServletResponseWrapper.class);
if ("GET".equals(httpRequest.getMethod())) {
@@ -396,9 +398,9 @@
msgContext.setProperty(RequestResponseTransport.TRANSPORT_CONTROL, new Axis2RequestResponseTransport(response));
msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
- HttpServletRequest servletRequest = request.getAttribute(HttpServletRequest.class);
- msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST, servletRequest);
- msgContext.setProperty(Constants.Configuration.TRANSPORT_IN_URL, servletRequest.getRequestURI().toString());
+ JOnASServletRequestWrapper servletRequestWrapper = request.getAttribute(JOnASServletRequestWrapper.class);
+ msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST, servletRequestWrapper.getRequest());
+ msgContext.setProperty(Constants.Configuration.TRANSPORT_IN_URL, servletRequestWrapper.getRequestURI().toString());
HttpServletResponse servletResponse = request.getAttribute(HttpServletResponse.class);
@@ -407,8 +409,8 @@
ServletContext servletContext = request.getAttribute(ServletContext.class);
msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT, servletContext);
- if (servletRequest != null) {
- msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, new TransportHeaders(servletRequest));
+ if (servletRequestWrapper != null) {
+ msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, new TransportHeaders(servletRequestWrapper.getRequest()));
}
if (this.binding != null) {
@@ -418,8 +420,8 @@
protected void processPOSTRequest(final IWSRequest request, final IWSResponse response, final AxisService service,
final MessageContext msgContext) throws Exception {
- HttpServletRequest httpRequest = request.getAttribute(HttpServletRequest.class);
- HttpServletResponse httpResponse = request.getAttribute(HttpServletResponse.class);
+ JOnASServletRequestWrapper httpRequest = request.getAttribute(JOnASServletRequestWrapper.class);
+ JOnASServletResponseWrapper httpResponse = request.getAttribute(JOnASServletResponseWrapper.class);
String contentType = request.getHeader(HTTPConstants.HEADER_CONTENT_TYPE);
String soapAction = request.getHeader(HTTPConstants.HEADER_SOAP_ACTION);
Modified:
jonas/trunk/jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/jaxws/CXFWSEndpoint.java
(16976 => 16977)
--- jonas/trunk/jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/jaxws/CXFWSEndpoint.java 2009-03-26 17:07:51 UTC (rev 16976)
+++ jonas/trunk/jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/jaxws/CXFWSEndpoint.java 2009-03-27 03:34:32 UTC (rev 16977)
@@ -40,6 +40,8 @@
import org.ow2.jonas.ws.jaxws.PortMetaData;
import org.ow2.jonas.ws.jaxws.WSException;
import org.ow2.jonas.ws.jaxws.PortIdentifier;
+import org.ow2.jonas.ws.jaxws.http.servlet.JOnASServletRequestWrapper;
+import org.ow2.jonas.ws.jaxws.http.servlet.JOnASServletResponseWrapper;
import org.ow2.util.log.Log;
import org.ow2.util.log.LogFactory;
@@ -139,16 +141,16 @@
Bus bus = destination.getBus();
BusFactory.setThreadDefaultBus(bus);
- HttpServletRequest httpRequest = request.getAttribute(HttpServletRequest.class);
- HttpServletResponse httpResponse = request.getAttribute(HttpServletResponse.class);
+ JOnASServletRequestWrapper httpRequest = request.getAttribute(JOnASServletRequestWrapper.class);
+ JOnASServletResponseWrapper httpResponse = request.getAttribute(JOnASServletResponseWrapper.class);
ServletContext servletContext = request.getAttribute(ServletContext.class);
if ("GET".equals(httpRequest.getMethod())) {
- processGetMethod(bus, httpRequest, httpResponse);
+ processGetMethod(bus, httpRequest.getRequest(), httpResponse.getResponse());
} else {
// this is a POST
- destination.invoke(servletContext, httpRequest, httpResponse);
+ destination.invoke(servletContext, httpRequest.getRequest(), httpResponse.getResponse());
}
} catch (IOException ioe) {
Modified:
jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JAXWSServlet.java
(16976 => 16977)
--- jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JAXWSServlet.java 2009-03-26 17:07:51 UTC (rev 16976)
+++ jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JAXWSServlet.java 2009-03-27 03:34:32 UTC (rev 16977)
@@ -25,17 +25,17 @@
package org.ow2.jonas.ws.jaxws.http.servlet;
-import org.ow2.jonas.ws.jaxws.IWSRequest;
-import org.ow2.jonas.ws.jaxws.IWSResponse;
-import org.ow2.jonas.ws.jaxws.IWebServiceEndpoint;
-import org.ow2.jonas.ws.jaxws.WSException;
-
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.ow2.jonas.ws.jaxws.IWSRequest;
+import org.ow2.jonas.ws.jaxws.IWSResponse;
+import org.ow2.jonas.ws.jaxws.IWebServiceEndpoint;
+import org.ow2.jonas.ws.jaxws.WSException;
+
/**
* JAX-WS 2.x Servlet. It wraps an {@link IWebServiceEndpoint} instance that will be invoked.
* @author Guillaume Sauthier
@@ -101,10 +101,13 @@
final HttpServletResponse response)
throws ServletException {
+ JOnASServletRequestWrapper requestWrapper = new JOnASServletRequestWrapper(request);
+ JOnASServletResponseWrapper responseWrapper = new JOnASServletResponseWrapper(response);
+
// Init Request + Response
- IWSRequest req = new ServletRequestAdapter(request);
- req.setAttribute(HttpServletRequest.class, request);
- req.setAttribute(HttpServletResponse.class, response);
+ IWSRequest req = new ServletRequestAdapter(requestWrapper);
+ req.setAttribute(JOnASServletRequestWrapper.class, requestWrapper);
+ req.setAttribute(JOnASServletResponseWrapper.class, responseWrapper);
req.setAttribute(ServletContext.class, getServletContext());
IWSResponse res = new ServletResponseAdapter(response);
Added:
jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JOnASServletRequestWrapper.java
(0 => 16977)
--- jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JOnASServletRequestWrapper.java (rev 0)
+++ jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JOnASServletRequestWrapper.java 2009-03-27 03:34:32 UTC (rev 16977)
@@ -0,0 +1,180 @@
+/**
+ * JOnAS: Java(TM) Open Application Server
+ * Copyright (C) 2008 Bull S.A.S.
+ * Contact: jonas-team@xxxxxxx
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ *
+ * --------------------------------------------------------------------------
+ * $Id$
+ * --------------------------------------------------------------------------
+ */
+
+
+package org.ow2.jonas.ws.jaxws.http.servlet;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class JOnASServletRequestWrapper {
+
+ private int contentLength;
+ private String contentType;
+ private InputStream in;
+ private String method;
+ private Map parameters;
+ private URI uri;
+ private URL url;
+ private Map headers;
+ private Map attributes;
+ private String remoteAddress;
+ private String qureyString;
+
+ private HttpServletRequest request;
+
+
+ public JOnASServletRequestWrapper(final HttpServletRequest request) {
+ this.request = request;
+ }
+
+ //this constructor is for test
+ public JOnASServletRequestWrapper(final int contentLength, final String contentType, final InputStream in,
+ final String method,final Map parameters, final URI uri, final Map headers, final URL url,
+ final String remoteAddress,final String queryString) {
+ this.contentType = contentType;
+ this.contentLength = contentLength;
+ this.in = in;
+ this.method = method;
+ this.parameters = parameters;
+ this.uri = uri;
+ this.url = ""
+ this.headers = headers;
+ this.attributes = new HashMap();
+ this.remoteAddress = remoteAddress;
+ this.qureyString = queryString;
+ this.request = null;
+ }
+
+ public HttpServletRequest getRequest() {
+ return request;
+ }
+
+ public int getContentLength() {
+ if(request != null) {
+ return request.getContentLength();
+ } else {
+ return contentLength;
+ }
+ }
+
+ public String getContentType() {
+ if(request != null) {
+ return request.getContentType();
+ } else {
+ return contentType;
+ }
+ }
+
+ public String getHeader(final String name) {
+ if(request != null) {
+ return request.getHeader(name);
+ } else {
+ return (String) headers.get(name);
+ }
+ }
+
+ public InputStream getInputStream() throws IOException{
+ if(request != null) {
+ return request.getInputStream();
+ } else {
+ return in;
+ }
+ }
+
+ public String getMethod() {
+ if(request != null) {
+ return request.getMethod();
+ } else {
+ return method;
+ }
+ }
+
+ public String getParameter(final String name) {
+ if(request != null) {
+ return request.getParameter(name);
+ } else {
+ return (String) parameters.get(name);
+ }
+ }
+
+ public Map getParameters() {
+ if(request != null) {
+ return request.getParameterMap();
+ } else {
+ return parameters;
+ }
+ }
+
+ public String getRequestURI() {
+ if(request != null) {
+ return request.getRequestURI();
+ } else {
+ return uri.toString();
+ }
+ }
+
+ public String getRemoteAddr() {
+ if(request != null) {
+ return request.getRemoteAddr();
+ } else {
+ return remoteAddress;
+ }
+ }
+
+ public StringBuffer getRequestURL() {
+ // TODO Auto-generated method stub
+ if(request != null) {
+ return request.getRequestURL();
+ } else {
+ return request.getRequestURL();
+ }
+ }
+
+ public Object getAttribute(final String name) {
+ return attributes.get(name);
+ }
+
+ public void setAttribute(final String name, final Object value) {
+ attributes.put(name, value);
+ }
+
+ public String getContextPath() {
+ return "/";
+ }
+
+ public String getQueryString() {
+ return qureyString;
+ }
+
+
+
+}
Property changes on: jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JOnASServletRequestWrapper.java
___________________________________________________________________
Name: svn:keywords
+ Id
Added:
jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JOnASServletResponseWrapper.java
(0 => 16977)
--- jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JOnASServletResponseWrapper.java (rev 0)
+++ jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JOnASServletResponseWrapper.java 2009-03-27 03:34:32 UTC (rev 16977)
@@ -0,0 +1,144 @@
+/**
+ * JOnAS: Java(TM) Open Application Server
+ * Copyright (C) 2008 Bull S.A.S.
+ * Contact: jonas-team@xxxxxxx
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ *
+ * --------------------------------------------------------------------------
+ * $Id$
+ * --------------------------------------------------------------------------
+ */
+
+
+package org.ow2.jonas.ws.jaxws.http.servlet;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletResponse;
+
+public class JOnASServletResponseWrapper {
+ private String contentType;
+ private String host;
+ private OutputStream out;
+ private String method;
+ private Map parameters;
+ private String path;
+ private URL uri;
+ private int port;
+ private Map headers;
+ private int statusCode;
+ private String statusMessage;
+
+ private HttpServletResponse response;
+
+ public JOnASServletResponseWrapper(final HttpServletResponse response) {
+ this.response = response;
+ }
+
+ // this constructor is for test
+ public JOnASServletResponseWrapper(final String contentType,final String host,final String path, final URL uri,
+ final int port ,final OutputStream out) {
+ this.contentType = contentType;
+ this.host = host;
+ this.parameters = new HashMap();
+ this.path = path;
+ this.uri = uri;
+ this.port = port;
+ this.headers = new HashMap();
+ this.out = out;
+ this.response = null;
+ }
+
+ public HttpServletResponse getResponse() {
+ return response;
+ }
+
+ public void setContentLength(final int length) {
+ if(response != null) {
+ response.setContentLength(length);
+ }
+ }
+ public void setHeader(final String name,final String value) {
+ if(response != null) {
+ response.setHeader(name, value);
+ }
+ }
+ public String getHost() {
+ return host;
+ }
+ public OutputStream getOutputStream() throws IOException {
+ if(response != null) {
+ return response.getOutputStream();
+ } else {
+ return out;
+ }
+ }
+ public String getMethod() {
+ return method;
+ }
+ public String getParameter(final String name) {
+ return (String) parameters.get(name);
+ }
+ public Map getParameters() {
+ return parameters;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public int getPort() {
+ return port;
+ }
+ public URL getURI() {
+ return uri;
+ }
+
+ public String getContentType() {
+ if(response != null) {
+ return response.getContentType();
+ } else {
+ return contentType;
+ }
+ }
+ public void setStatusCode(final int code) {
+ if(response != null) {
+ response.setStatus(code);
+ } else {
+ statusCode =code;
+ }
+ }
+ public int getStatusCode() {
+ return statusCode;
+ }
+ public void setStatusMessage(final String responseString) {
+ statusMessage = responseString;
+ }
+
+ public void setStatus(final int code, final String responseString) {
+ if(response != null) {
+ response.setStatus(code, responseString);
+ } else {
+ statusMessage = responseString;
+ statusCode =code;
+ }
+ }
+}
Property changes on: jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JOnASServletResponseWrapper.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified:
jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/ServletRequestAdapter.java
(16976 => 16977)
--- jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/ServletRequestAdapter.java 2009-03-26 17:07:51 UTC (rev 16976)
+++ jonas/trunk/jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/ServletRequestAdapter.java 2009-03-27 03:34:32 UTC (rev 16977)
@@ -43,7 +43,7 @@
/**
* Wrapped HTTP request.
*/
- private HttpServletRequest request;
+ private JOnASServletRequestWrapper request;
/**
* Storage for attributes.
@@ -54,7 +54,7 @@
* Construct a new {@link IWSRequest} from an {@link HttpServletRequest}.
* @param request wrapped request
*/
- public ServletRequestAdapter(final HttpServletRequest request) {
+ public ServletRequestAdapter(final JOnASServletRequestWrapper request) {
this.request = request;
attributes = new Hashtable<Class<?>, Object>();
}
|