OW2 Consortium
Search OW2 Mail Archive: 

Advanced Search - Powered by Google


Mail Archive Home | jonas-team List | March 2009 Index

<--  Date Index  --> <--  Thread Index  -->

[jonas-team] Re: Re: [jonas-commits] [16977]jonas/trunk/jonas/modules/services/webservices:makesome change for thetests.


ï
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 :

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>();
     }



<--  Date Index  --> <--  Thread Index  -->

Reply via email to:

Powered by MHonArc.

Copyright © 2006-2007, OW2 Consortium | contact | webmaster.