You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2011/07/03 23:37:59 UTC

svn commit: r1142507 [1/2] - in /openejb/trunk/openejb3/server: openejb-axis/src/main/java/org/apache/openejb/server/axis/ openejb-axis/src/test/java/org/apache/openejb/server/axis/ openejb-axis2/src/main/java/org/apache/openejb/server/axis2/ openejb-a...

Author: rmannibucau
Date: Sun Jul  3 21:37:58 2011
New Revision: 1142507

URL: http://svn.apache.org/viewvc?rev=1142507&view=rev
Log:
enhancing OpenEJB http layer implementing http servlet objects/interfaces

Added:
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayIntputStream.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayOutputStream.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletIntputStreamAdapter.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletOutputStreamAdapter.java
Modified:
    openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisWsContainer.java
    openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisRequest.java
    openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisResponse.java
    openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisWsContainerTest.java
    openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2RequestResponseTransport.java
    openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2WsContainer.java
    openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Request.java
    openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Response.java
    openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2WsContainerTest.java
    openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java
    openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/HttpDestination.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequest.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponse.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSession.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletRequestAdapter.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletResponseAdapter.java
    openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletSessionAdapter.java
    openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/BasicAuthHttpListenerWrapper.java

Modified: openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisWsContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisWsContainer.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisWsContainer.java (original)
+++ openejb/trunk/openejb3/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisWsContainer.java Sun Jul  3 21:37:58 2011
@@ -132,7 +132,7 @@ public class AxisWsContainer implements 
                 responseMessage = messageContext.getResponseMessage();
             } catch (AxisFault fault) {
                 
-               	if(req.getMethod() == HttpRequest.Method.GET && req.getParameters().isEmpty()){
+               	if(req.getMethod().equals(HttpRequest.Method.GET.name()) && req.getParameters().isEmpty()){
                		String serviceName = req.getURI().getRawPath();
                     serviceName = serviceName.substring(serviceName.lastIndexOf("/")+1);
                		printServiceInfo(res,serviceName);
@@ -148,13 +148,13 @@ public class AxisWsContainer implements 
             if (messageContext.getOperation() != null) {
                 if (messageContext.getOperation().getMep() == OperationType.ONE_WAY) {
                     // No content, so just indicate accepted
-                    res.setStatusCode(202);
+                    res.setStatus(HttpServletResponse.SC_ACCEPTED);
                     return;
                 } else if (responseMessage == null) {
                     responseMessage = handleException(messageContext, null, new RuntimeException("No response for non-one-way operation"));
                 }
             } else if (responseMessage == null) {
-                res.setStatusCode(202);
+                res.setStatus(HttpServletResponse.SC_ACCEPTED);
                 return;
             }
             try {
@@ -175,7 +175,7 @@ public class AxisWsContainer implements 
 //                if (responseEncoding != null) {
 //                    try {
 //                        responseMessage.setProperty(SOAPMessage.CHARACTER_SET_ENCODING,
-//                                                responseEncoding);
+//                                               responseEncoding);
 //                    } catch (SOAPException e) {
 //                        log.info(Messages.getMessage("exception00"), e);
 //                    }
@@ -196,7 +196,7 @@ public class AxisWsContainer implements 
         Message responseMessage;
         //other exceptions are internal trouble
         responseMessage = context.getResponseMessage();
-        res.setStatusCode(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+        res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
         Message responseMsg = responseMessage;
         logger.warning(Messages.getMessage("exception00"), e);
         if (responseMsg == null) {
@@ -234,7 +234,7 @@ public class AxisWsContainer implements 
             // TODO: less generic realm choice?
             res.setHeader("WWW-Authenticate", "Basic realm=\"AXIS\"");
         }
-        res.setStatusCode(status);
+        res.setStatus(status);
         responseMessage = context.getResponseMessage();
         if (responseMessage == null) {
             responseMessage = new Message(fault);

Modified: openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisRequest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisRequest.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisRequest.java (original)
+++ openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisRequest.java Sun Jul  3 21:37:58 2011
@@ -16,7 +16,9 @@
  */
 package org.apache.openejb.server.axis;
 
+import javax.servlet.ServletInputStream;
 import org.apache.openejb.server.httpd.HttpRequest;
+import org.apache.openejb.server.httpd.HttpRequestImpl;
 import org.apache.openejb.server.httpd.HttpSession;
 
 import java.io.IOException;
@@ -25,34 +27,29 @@ import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 
-public class AxisRequest implements HttpRequest {
+public class AxisRequest extends HttpRequestImpl {
     private int contentLength;
 
     private String contentType;
 
-    private InputStream in;
+    private ServletInputStream in;
 
     private Method method;
 
     private Map<String,String> parameters;
 
-    private URI uri;
-
     private Map<String,String> headers;
 
-    private Map<String,Object> attributes;
-
     private String remoteAddress;
 
-    public AxisRequest(int contentLength, String contentType, InputStream in, Method method, Map<String,String> parameters, URI uri, Map<String,String> headers, String remoteAddress) {
+    public AxisRequest(int contentLength, String contentType, ServletInputStream in, Method method, Map<String,String> parameters, URI uri, Map<String,String> headers, String remoteAddress) {
+        super(uri);
         this.contentLength = contentLength;
         this.contentType = contentType;
         this.in = in;
         this.method = method;
         this.parameters = parameters;
-        this.uri = uri;
         this.headers = headers;
-        this.attributes = new HashMap<String,Object>();
         this.remoteAddress = remoteAddress;
     }
 
@@ -68,12 +65,12 @@ public class AxisRequest implements Http
         return headers.get(name);
     }
 
-    public InputStream getInputStream() throws IOException {
+    public ServletInputStream getInputStream() throws IOException {
         return in;
     }
 
-    public Method getMethod() {
-        return method;
+    public String getMethod() {
+        return method.name();
     }
 
     public String getParameter(String name) {
@@ -85,15 +82,7 @@ public class AxisRequest implements Http
     }
 
     public URI getURI() {
-        return uri;
-    }
-
-    public Object getAttribute(String name) {
-        return attributes.get(name);
-    }
-
-    public void setAttribute(String name, Object value) {
-        attributes.put(name, value);
+        return getSocketURI();
     }
 
     public String getRemoteAddr() {

Modified: openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisResponse.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisResponse.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisResponse.java (original)
+++ openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisResponse.java Sun Jul  3 21:37:58 2011
@@ -16,20 +16,20 @@
  */
 package org.apache.openejb.server.axis;
 
-import org.apache.openejb.server.httpd.HttpResponse;
+import javax.servlet.ServletOutputStream;
+import org.apache.openejb.server.httpd.HttpResponseImpl;
 
 import java.io.IOException;
-import java.io.OutputStream;
 import java.io.PrintWriter;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 
-public class AxisResponse implements HttpResponse {
+public class AxisResponse extends HttpResponseImpl {
     private int contentLength;
     private String contentType;
     private String host;
-    private OutputStream out;
+    private ServletOutputStream out;
     private int method;
     private Map<String,String> parameters;
     private String path;
@@ -39,7 +39,7 @@ public class AxisResponse implements Htt
     private int statusCode;
     private String statusMessage;
 
-    public AxisResponse(String contentType, String host, String path, URL uri, int port, OutputStream out) {
+    public AxisResponse(String contentType, String host, String path, URL uri, int port, ServletOutputStream out) {
         this.contentType = contentType;
         this.host = host;
         this.parameters = new HashMap<String,String>();
@@ -63,7 +63,7 @@ public class AxisResponse implements Htt
         return host;
     }
 
-    public OutputStream getOutputStream() {
+    public ServletOutputStream getOutputStream() {
         return out;
     }
 
@@ -131,15 +131,6 @@ public class AxisResponse implements Htt
         uri = url;
     }
 
-    public int getStatusCode() {
-        return statusCode;
-    }
-
-    public void setStatusCode(int code) {
-        statusCode = code;
-
-    }
-
     public String getStatusMessage() {
         return statusMessage;
     }
@@ -151,13 +142,4 @@ public class AxisResponse implements Htt
 
     public void flushBuffer() throws java.io.IOException {
     }
-
-    public void setHeader(String name, String value) {
-        headers.put(name, value);
-    }
-
-
-    public PrintWriter getPrintWriter() throws IOException {
-        throw new UnsupportedOperationException();
-    }
 }

Modified: openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisWsContainerTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisWsContainerTest.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisWsContainerTest.java (original)
+++ openejb/trunk/openejb3/server/openejb-axis/src/test/java/org/apache/openejb/server/axis/AxisWsContainerTest.java Sun Jul  3 21:37:58 2011
@@ -26,6 +26,8 @@ import org.apache.axis.encoding.TypeMapp
 import org.apache.axis.handlers.soap.SOAPService;
 import org.apache.axis.providers.java.RPCProvider;
 import org.apache.openejb.server.httpd.HttpRequest;
+import org.apache.openejb.server.httpd.ServletIntputStreamAdapter;
+import org.apache.openejb.server.httpd.ServletOutputStreamAdapter;
 import org.apache.openejb.server.webservices.WsConstants;
 
 import javax.xml.namespace.QName;
@@ -97,7 +99,7 @@ public class AxisWsContainerTest extends
                 new AxisRequest(
                     504,
                     "text/xml; charset=utf-8",
-                    in,
+                    new ServletIntputStreamAdapter(in),
                     HttpRequest.Method.GET,
                     new HashMap<String,String>(),
                     location,
@@ -105,7 +107,7 @@ public class AxisWsContainerTest extends
                     "127.0.0.1");
             
             ByteArrayOutputStream out = new ByteArrayOutputStream();
-            AxisResponse res = new AxisResponse("text/xml; charset=utf-8", "127.0.0.1", null, null, 8080, out);
+            AxisResponse res = new AxisResponse("text/xml; charset=utf-8", "127.0.0.1", null, null, 8080, new ServletOutputStreamAdapter(out));
             req.setAttribute(WsConstants.POJO_INSTANCE, pojoClass.newInstance());
             container.onMessage(req, res);
             

Modified: openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2RequestResponseTransport.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2RequestResponseTransport.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2RequestResponseTransport.java (original)
+++ openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2RequestResponseTransport.java Sun Jul  3 21:37:58 2011
@@ -51,7 +51,7 @@ public class Axis2RequestResponseTranspo
 
         response.setContentType("text/xml; charset=" + msgContext.getProperty("message.character-set-encoding"));
 
-        response.setStatusCode(HttpURLConnection.HTTP_ACCEPTED);
+        response.setStatus(HttpURLConnection.HTTP_ACCEPTED);
         try {
             response.flushBuffer();
         } catch (IOException e) {

Modified: openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2WsContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2WsContainer.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2WsContainer.java (original)
+++ openejb/trunk/openejb3/server/openejb-axis2/src/main/java/org/apache/openejb/server/axis2/Axis2WsContainer.java Sun Jul  3 21:37:58 2011
@@ -47,6 +47,7 @@ import org.apache.openejb.server.axis2.c
 import org.apache.openejb.server.httpd.HttpRequest;
 import org.apache.openejb.server.httpd.HttpResponse;
 import org.apache.openejb.server.httpd.HttpListener;
+import org.apache.openejb.server.httpd.ServletOutputStreamAdapter;
 import org.apache.openejb.server.webservices.saaj.SaajUniverse;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.LogCategory;
@@ -56,6 +57,9 @@ import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.xml.ws.handler.Handler;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.net.HttpURLConnection;
 import java.net.URL;
@@ -167,16 +171,16 @@ public abstract class Axis2WsContainer i
                 MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e);
                 // If the fault is not going along the back channel we should be 202ing
                 if (AddressingHelper.isFaultRedirected(msgContext)) {
-                    response.setStatusCode(HttpURLConnection.HTTP_ACCEPTED);
+                    response.setStatus(HttpURLConnection.HTTP_ACCEPTED);
                 } else {
-                    response.setStatusCode(HttpURLConnection.HTTP_INTERNAL_ERROR);
+                    response.setStatus(HttpURLConnection.HTTP_INTERNAL_ERROR);
                 }
                 AxisEngine.sendFault(faultContext);
             } catch (Exception ex) {
                 if (AddressingHelper.isFaultRedirected(msgContext)) {
-                    response.setStatusCode(HttpURLConnection.HTTP_ACCEPTED);
+                    response.setStatus(HttpURLConnection.HTTP_ACCEPTED);
                 } else {
-                    response.setStatusCode(HttpURLConnection.HTTP_INTERNAL_ERROR);
+                    response.setStatus(HttpURLConnection.HTTP_INTERNAL_ERROR);
                     response.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, "text/plain");
                     PrintWriter pw = new PrintWriter(response.getOutputStream());
                     ex.printStackTrace(pw);
@@ -210,9 +214,9 @@ public abstract class Axis2WsContainer i
 
     public void doService2(HttpRequest request, HttpResponse response, MessageContext msgContext) throws Exception {
 
-        if (request.getMethod() == HttpRequest.Method.GET) {
+        if (request.getMethod().equals(HttpRequest.Method.GET.name())) {
             processGETRequest(request, response, this.service, msgContext);
-        } else if (request.getMethod() == HttpRequest.Method.POST) {
+        } else if (request.getMethod().equals(HttpRequest.Method.POST.name())) {
             processPOSTRequest(request, response, this.service, msgContext);
         } else {
             throw new UnsupportedOperationException("[" + request.getMethod() + " ] method not supported");
@@ -229,12 +233,12 @@ public abstract class Axis2WsContainer i
 
         if ((contextWritten != null) && Constants.VALUE_TRUE.equals(contextWritten)) {
             if ((isTwoChannel != null) && Constants.VALUE_TRUE.equals(isTwoChannel)) {
-                response.setStatusCode(HttpURLConnection.HTTP_ACCEPTED);
+                response.setStatus(HttpURLConnection.HTTP_ACCEPTED);
                 return;
             }
-            response.setStatusCode(HttpURLConnection.HTTP_OK);
+            response.setStatus(HttpURLConnection.HTTP_OK);
         } else {
-            response.setStatusCode(HttpURLConnection.HTTP_ACCEPTED);
+            response.setStatus(HttpURLConnection.HTTP_ACCEPTED);
         }
     }
 
@@ -286,7 +290,7 @@ public abstract class Axis2WsContainer i
             InvocationResponse processed = RESTUtil.processURLRequest(msgContext, response.getOutputStream(), contentType);
 
             if (!processed.equals(InvocationResponse.CONTINUE)) {
-                response.setStatusCode(HttpURLConnection.HTTP_OK);
+                response.setStatus(HttpURLConnection.HTTP_OK);
                 String s = HTTPTransportReceiver.getServicesHTML(configurationContext);
                 PrintWriter pw = new PrintWriter(response.getOutputStream());
                 pw.write(s);
@@ -296,7 +300,12 @@ public abstract class Axis2WsContainer i
     }
 
     protected void setMsgContextProperties(HttpRequest request, HttpResponse response, AxisService service, MessageContext msgContext) {
-        msgContext.setProperty(MessageContext.TRANSPORT_OUT, response.getOutputStream());
+        try {
+            msgContext.setProperty(MessageContext.TRANSPORT_OUT, response.getOutputStream());
+        } catch (IOException e) {
+            msgContext.setProperty(MessageContext.TRANSPORT_OUT, new ServletOutputStreamAdapter(new ByteArrayOutputStream()));
+        }
+
         msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, new Axis2TransportInfo(response));
         msgContext.setProperty(RequestResponseTransport.TRANSPORT_CONTROL, new Axis2RequestResponseTransport(response));
         msgContext.setProperty(Constants.Configuration.TRANSPORT_IN_URL, request.getURI().toString());

Modified: openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Request.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Request.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Request.java (original)
+++ openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Request.java Sun Jul  3 21:37:58 2011
@@ -16,7 +16,9 @@
  */
 package org.apache.openejb.server.axis2;
 
+import javax.servlet.ServletInputStream;
 import org.apache.openejb.server.httpd.HttpRequest;
+import org.apache.openejb.server.httpd.HttpRequestImpl;
 import org.apache.openejb.server.httpd.HttpSession;
 
 import java.io.IOException;
@@ -25,12 +27,12 @@ import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 
-class Axis2Request implements HttpRequest {
+class Axis2Request extends HttpRequestImpl {
     private int contentLength;
 
     private String contentType;
 
-    private InputStream in;
+    private ServletInputStream in;
 
     private Method method;
 
@@ -44,7 +46,8 @@ class Axis2Request implements HttpReques
 
     private String remoteAddress;
 
-    public Axis2Request(int contentLength, String contentType, InputStream in, Method method, Map<String,String> parameters, URI uri, Map<String,String> headers, String remoteAddress) {
+    public Axis2Request(int contentLength, String contentType, ServletInputStream in, Method method, Map<String,String> parameters, URI uri, Map<String,String> headers, String remoteAddress) {
+        super(uri);
         this.contentLength = contentLength;
         this.contentType = contentType;
         this.in = in;
@@ -68,12 +71,12 @@ class Axis2Request implements HttpReques
         return headers.get(name);
     }
 
-    public InputStream getInputStream() throws IOException {
+    public ServletInputStream getInputStream() throws IOException {
         return in;
     }
 
-    public Method getMethod() {
-        return method;
+    public String getMethod() {
+        return method.name();
     }
 
     public String getParameter(String name) {

Modified: openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Response.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Response.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Response.java (original)
+++ openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2Response.java Sun Jul  3 21:37:58 2011
@@ -16,7 +16,9 @@
  */
 package org.apache.openejb.server.axis2;
 
+import javax.servlet.ServletOutputStream;
 import org.apache.openejb.server.httpd.HttpResponse;
+import org.apache.openejb.server.httpd.HttpResponseImpl;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -25,14 +27,14 @@ import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 
-class Axis2Response implements HttpResponse {
+class Axis2Response extends HttpResponseImpl {
     private int contentLength;
 
     private String contentType;
 
     private String host;
 
-    private OutputStream out;
+    private ServletOutputStream out;
 
     private int method;
 
@@ -50,7 +52,7 @@ class Axis2Response implements HttpRespo
 
     private String statusMessage;
 
-    public Axis2Response(String contentType, String host, String path, URL uri, int port, OutputStream out) {
+    public Axis2Response(String contentType, String host, String path, URL uri, int port, ServletOutputStream out) {
         this.contentType = contentType;
         this.host = host;
         this.parameters = new HashMap<String,String>();
@@ -73,7 +75,7 @@ class Axis2Response implements HttpRespo
         return host;
     }
 
-    public OutputStream getOutputStream() {
+    public ServletOutputStream getOutputStream() {
         return out;
     }
 

Modified: openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2WsContainerTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2WsContainerTest.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2WsContainerTest.java (original)
+++ openejb/trunk/openejb3/server/openejb-axis2/src/test/java/org/apache/openejb/server/axis2/Axis2WsContainerTest.java Sun Jul  3 21:37:58 2011
@@ -20,6 +20,7 @@ import org.apache.openejb.core.webservic
 import org.apache.openejb.server.axis2.pojo.PojoWsContainer;
 import org.apache.openejb.server.axis2.testdata.simple.HelloWorld;
 import org.apache.openejb.server.httpd.HttpRequest;
+import org.apache.openejb.server.httpd.ServletOutputStreamAdapter;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.NodeList;
@@ -61,7 +62,7 @@ public class Axis2WsContainerTest extend
                 new HashMap<String,String>(),
                 "127.0.0.1");
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        Axis2Response res = new Axis2Response("text/xml; charset=utf-8", "127.0.0.1", null, null, 8080, out);
+        Axis2Response res = new Axis2Response("text/xml; charset=utf-8", "127.0.0.1", null, null, 8080, new ServletOutputStreamAdapter(out));
         
         PojoWsContainer container = new PojoWsContainer(port, HelloWorld.class, null, "/axis2");
         container.start();

Modified: openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java (original)
+++ openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java Sun Jul  3 21:37:58 2011
@@ -71,7 +71,7 @@ public abstract class CxfWsContainer imp
     }
 
     public void onMessage(HttpRequest request, HttpResponse response) throws Exception {
-        if (request.getMethod() == HttpRequest.Method.GET) {
+        if (request.getMethod().equals(HttpRequest.Method.GET.name())) {
             processGET(request, response);
         } else {
             processPOST(request, response);

Modified: openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/HttpDestination.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/HttpDestination.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/HttpDestination.java (original)
+++ openejb/trunk/openejb3/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/HttpDestination.java Sun Jul  3 21:37:58 2011
@@ -361,7 +361,7 @@ public class HttpDestination extends Abs
             // set response code
             Integer i = (Integer) this.message.get(Message.RESPONSE_CODE);
             if (i != null) {
-                this.response.setStatusCode(i.intValue());
+                this.response.setStatus(i.intValue());
             }
 
             // set content-type

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequest.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequest.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequest.java Sun Jul  3 21:37:58 2011
@@ -16,8 +16,8 @@
  */
 package org.apache.openejb.server.httpd;
 
-import java.io.IOException;
-import java.io.InputStream;
+import javax.servlet.http.HttpServletRequest;
+
 import java.util.Map;
 
 
@@ -25,7 +25,7 @@ import java.util.Map;
  *  parameters.
  *
  */
-public interface HttpRequest extends java.io.Serializable{
+public interface HttpRequest extends java.io.Serializable, HttpServletRequest {
     /**
      * Request methods
      */
@@ -94,46 +94,6 @@ public interface HttpRequest extends jav
      */
     Map getParameters();
 
-    /**
-     * Returns the current <code>HttpSession</code> associated with this
-     * request or, if there is no current session and <code>create</code> is
-     * true, returns a new session.
-     *
-     * <p>If <code>create</code> is <code>false</code> and the request has no
-     * valid <code>HttpSession</code>, this method returns <code>null</code>.
-     *
-     * @param create <code>true</code> to create a new session for this request
-     * if necessary; <code>false</code> to return <code>null</code> if there's
-     * no current session
-     *
-     * @return the <code>HttpSession</code> associated with this request or
-     * <code>null</code> if <code>create</code> is <code>false</code> and the
-     * request has no valid session
-     *
-     * @see #getSession()
-     */
-    public HttpSession getSession(boolean create);
-
-    /**
-     * Returns the current session associated with this request, or if the
-     * request does not have a session, creates one.
-     *
-     * @return the <code>HttpSession</code> associated with this request
-     *
-     * @see #getSession(boolean)
-     */
-    public HttpSession getSession();
-
-    /** Gets a header based the header name passed in.
-     * @param name The name of the header to get
-     * @return The value of the header
-     */
-    public String getHeader(String name);
-
-    /** Gets an integer value of the request method.
-     * @return The integer value of the method
-     */
-    public Method getMethod();
 
     /** Gets the URI for the current URL page.
      * @return The URI
@@ -144,8 +104,6 @@ public interface HttpRequest extends jav
 
     String getContentType();
 
-    InputStream getInputStream() throws IOException;
-
     public Object getAttribute(String name);
 
     public void setAttribute(String name, Object value);

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java Sun Jul  3 21:37:58 2011
@@ -16,19 +16,19 @@
  */
 package org.apache.openejb.server.httpd;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.InputStream;
+import javax.servlet.*;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.Part;
+import org.apache.openejb.core.security.jaas.UserPrincipal;
+import org.apache.openejb.util.ArrayEnumeration;
+
+import java.io.*;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URLDecoder;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.StringTokenizer;
+import java.security.Principal;
+import java.util.*;
 
 /**
  * A class to take care of HTTP Requests.  It parses headers, content, form and url
@@ -43,7 +43,7 @@ public class HttpRequestImpl implements 
     /**
      * 5.1.1    Method
      */
-    private Method method;
+    private String method;
 
     /**
      * 5.1.2    Request-URI
@@ -70,6 +70,8 @@ public class HttpRequestImpl implements 
      */
     private final Map<String,String> parameters = new HashMap<String,String>();
 
+    private final Map<String, Part> parts = new HashMap<String, Part>();
+
     /**
      * Cookies sent from the client
      */
@@ -79,7 +81,7 @@ public class HttpRequestImpl implements 
      * the content of the body of the request
      */
     private byte[] body;
-    private InputStream in;
+    private ServletByteArrayIntputStream in;
     private int length;
     private String contentType;
 
@@ -93,6 +95,11 @@ public class HttpRequestImpl implements 
      */
     private final Map<String,Object> attributes = new HashMap<String,Object>();
 
+    private String path = "/";
+    private Locale locale = Locale.getDefault();
+    private HttpSession session;
+    private String encoding = "UTF-8";
+
     public HttpRequestImpl(URI socketURI) {
         this.socketURI = socketURI;
     }
@@ -107,6 +114,21 @@ public class HttpRequestImpl implements 
         return headers.get(name);
     }
 
+    @Override
+    public Enumeration<String> getHeaderNames() {
+        return new ArrayEnumeration(new ArrayList<String>(headers.keySet()));
+    }
+
+    @Override
+    public Enumeration<String> getHeaders(String s) {
+        return new ArrayEnumeration(Arrays.asList(headers.get(s)));
+    }
+
+    @Override
+    public int getIntHeader(String s) {
+        return Integer.parseInt(s);
+    }
+
     /**
      * Gets a form parameter based on the name passed in.
      *
@@ -139,10 +161,68 @@ public class HttpRequestImpl implements 
      * Gets the request method.
      * @return the request method
      */
-    public Method getMethod() {
+    public String getMethod() {
         return method;
     }
 
+    @Override
+    public Part getPart(String s) throws IOException, ServletException {
+        return parts.get(s);
+    }
+
+    @Override
+    public Collection<Part> getParts() throws IOException, ServletException {
+        return parts.values();
+    }
+
+    @Override
+    public String getPathInfo() {
+        return path;
+    }
+
+    @Override
+    public String getPathTranslated() {
+        return path;
+    }
+
+    @Override
+    public String getQueryString() {
+        StringBuilder str = new StringBuilder("");
+        for (Map.Entry<String, String> q : queryParams.entrySet()) {
+            str.append(q.getKey()).append("=").append(q.getValue()).append("&");
+        }
+        String out = str.toString();
+        if (out.isEmpty()) {
+            return out;
+        }
+        return out.substring(0, out.length() - 1);
+    }
+
+    @Override
+    public String getRemoteUser() {
+        return null; // TODO
+    }
+
+    @Override
+    public String getRequestedSessionId() {
+        return session.getId();
+    }
+
+    @Override
+    public String getRequestURI() {
+        return getURI().toString();
+    }
+
+    @Override
+    public StringBuffer getRequestURL() {
+        return new StringBuffer(getRequestURI());
+    }
+
+    @Override
+    public String getServletPath() {
+        return getPathInfo();
+    }
+
     /**
      * Gets the URI for the current URL page.
      *
@@ -160,10 +240,40 @@ public class HttpRequestImpl implements 
         return contentType;
     }
 
-    public InputStream getInputStream() throws IOException {
+    @Override
+    public DispatcherType getDispatcherType() {
+        return DispatcherType.REQUEST;
+    }
+
+    public ServletInputStream getInputStream() throws IOException {
         return this.in;
     }
 
+    @Override
+    public String getLocalAddr() {
+        return getURI().getHost();
+    }
+
+    @Override
+    public Locale getLocale() {
+        return locale;
+    }
+
+    @Override
+    public Enumeration<Locale> getLocales() {
+        return new ArrayEnumeration(Arrays.asList(Locale.getAvailableLocales()));
+    }
+
+    @Override
+    public String getLocalName() {
+        return locale.getLanguage();
+    }
+
+    @Override
+    public int getLocalPort() {
+        return getURI().getPort();
+    }
+
     /*------------------------------------------------------------*/
     /*  Methods for reading in and parsing a request              */
     /*------------------------------------------------------------*/
@@ -237,11 +347,11 @@ public class HttpRequestImpl implements 
         }
 
         if (token.equalsIgnoreCase("GET")) {
-            method = Method.GET;
+            method = Method.GET.name();
         } else if (token.equalsIgnoreCase("POST")) {
-            method = Method.POST;
+            method = Method.POST.name();
         } else {
-            method = Method.UNSUPPORTED;
+            method = Method.UNSUPPORTED.name();
             throw new IOException("Unsupported HTTP Request Method :" + token);
         }
     }
@@ -395,7 +505,7 @@ public class HttpRequestImpl implements 
 
         contentType = getHeader(HttpRequest.HEADER_CONTENT_TYPE);
 
-        if (method == Method.POST && FORM_URL_ENCODED.equals(contentType)) {
+        if (method.equals(Method.POST.name()) && FORM_URL_ENCODED.equals(contentType)) {
             String rawParams;
 
             try {
@@ -413,13 +523,13 @@ public class HttpRequestImpl implements 
                 StringTokenizer param = new StringTokenizer(parameters.nextToken(), "=");
 
                 /* [1] Parse the Name */
-                name = URLDecoder.decode(param.nextToken());
+                name = URLDecoder.decode(param.nextToken(), "UTF-8");
                 if (name == null)
                     break;
 
                 /* [2] Parse the Value */
                 if (param.hasMoreTokens()) {
-                    value = URLDecoder.decode(param.nextToken());
+                    value = URLDecoder.decode(param.nextToken(), "UTF-8");
                 } else {
                     value = ""; //if there is no token set value to blank string
                 }
@@ -430,7 +540,7 @@ public class HttpRequestImpl implements 
                 formParams.put(name, value);
                     //System.out.println(name + ": " + value);
             }
-        } else if (method == Method.POST && CHUNKED.equals(headers.get(TRANSFER_ENCODING))) {
+        } else if (method.equals(Method.POST.name()) && CHUNKED.equals(headers.get(TRANSFER_ENCODING))) {
             try {
                 ByteArrayOutputStream out = new ByteArrayOutputStream(4096);
                 for (String line = in.readLine(); line != null; line = in.readLine()) {
@@ -450,19 +560,21 @@ public class HttpRequestImpl implements 
                     in.readLine();
                 }
                 body = out.toByteArray();
-                this.in = new ByteArrayInputStream(body);
+                this.in = new ServletByteArrayIntputStream(body);
             } catch (Exception e) {
                 throw (IOException)new IOException("Unable to read chunked body").initCause(e);
             }
-        } else if (method == Method.POST){
+        } else if (method.equals(Method.POST.name())){
             // TODO This really is terrible
             body = readContent(in);
-            this.in = new ByteArrayInputStream(body);
+            this.in = new ServletByteArrayIntputStream(body);
         } else {
             body = new byte[0];
-            this.in = new ByteArrayInputStream(body);
+            this.in = new ServletByteArrayIntputStream(body);
         }
 
+        session = new HttpSessionImpl();
+
     }
 
     private byte[] readContent(DataInput in) throws IOException {
@@ -518,7 +630,41 @@ public class HttpRequestImpl implements 
         return length;
     }
 
-    protected Map getCookies() {
+    @Override
+    public boolean authenticate(HttpServletResponse httpServletResponse) throws IOException, ServletException {
+        return true; // TODO?
+    }
+
+    @Override
+    public String getAuthType() {
+        return "BASIC"; // to manage?
+    }
+
+    @Override
+    public String getContextPath() {
+        return path;
+    }
+
+    @Override
+    public Cookie[] getCookies() {
+        if (cookies != null) return toCookies(cookies);
+
+        cookies = new HashMap<String,String>();
+
+        String cookieHeader = getHeader(HEADER_COOKIE);
+        if (cookieHeader == null) return toCookies(cookies);
+
+        StringTokenizer tokens = new StringTokenizer(cookieHeader, ";");
+        while (tokens.hasMoreTokens()) {
+            StringTokenizer token = new StringTokenizer(tokens.nextToken(), "=");
+            String name = token.nextToken();
+            String value = token.nextToken();
+            cookies.put(name, value);
+        }
+        return toCookies(cookies);
+    }
+
+    protected Map<?, ?> getInternalCookies() {
         if (cookies != null) return cookies;
 
         cookies = new HashMap<String,String>();
@@ -536,30 +682,152 @@ public class HttpRequestImpl implements 
         return cookies;
     }
 
+    private Cookie[] toCookies(Map<String, String> cookies) {
+        Cookie[] out = new Cookie[cookies.size()];
+        int i = 0;
+        for (Map.Entry<String, String> entry : cookies.entrySet()) {
+            out[i++] = new Cookie(entry.getKey(), entry.getValue());
+        }
+        return out;
+    }
+
+    @Override
+    public long getDateHeader(String s) {
+        return Long.parseLong(s);
+    }
+
     protected String getCookie(String name) {
-        return (String) getCookies().get(name);
+        return (String) getInternalCookies().get(name);
     }
 
     public HttpSession getSession(boolean create) {
-        return null;
+        return session;
+    }
+
+    protected URI getSocketURI() {
+        return socketURI;
+    }
+
+    @Override
+    public Principal getUserPrincipal() {
+        return new UserPrincipal("");
+    }
+
+    @Override
+    public boolean isRequestedSessionIdFromCookie() {
+        return false;
+    }
+
+    @Override
+    public boolean isRequestedSessionIdFromUrl() {
+        return false;
+    }
+
+    @Override
+    public boolean isRequestedSessionIdFromURL() {
+        return false;
+    }
+
+    @Override
+    public boolean isRequestedSessionIdValid() {
+        return false;
+    }
+
+    @Override
+    public boolean isUserInRole(String s) {
+        return true; // TODO?
+    }
+
+    @Override
+    public void login(String s, String s1) throws ServletException {
+        // no-op
+    }
+
+    @Override
+    public void logout() throws ServletException {
+        // no-op
     }
 
     public HttpSession getSession() {
         return getSession(true);
     }
-    
+
+    @Override
+    public AsyncContext getAsyncContext() {
+        return null;
+    }
+
     public Object getAttribute(String name) {
         return attributes.get(name);
     }
 
+    @Override
+    public Enumeration<String> getAttributeNames() {
+        return new ArrayEnumeration(new ArrayList<String>(attributes.keySet()));
+    }
+
+    @Override
+    public String getCharacterEncoding() {
+        return encoding;
+    }
+
     public void setAttribute(String name, Object value){
         attributes.put(name, value);
     }
 
+    @Override
+    public void setCharacterEncoding(String s) throws UnsupportedEncodingException {
+        encoding = s;
+    }
+
+    @Override
+    public AsyncContext startAsync() {
+        return null;
+    }
+
+    @Override
+    public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) {
+        return null;
+    }
+
     public String getParameter(String name) {
         return parameters.get(name);
     }
 
+    @Override
+    public Map<String, String[]> getParameterMap() {
+        Map<String, String[]> params = new HashMap<String, String[]>();
+        for (Map.Entry<String, String> p : parameters.entrySet()) {
+            params.put(p.getKey(), new String[] { p.getValue() });
+        }
+        return params;
+    }
+
+    @Override
+    public Enumeration<String> getParameterNames() {
+        return new ArrayEnumeration(new ArrayList<String>(parameters.keySet()));
+    }
+
+    @Override
+    public String[] getParameterValues(String s) {
+        return new String[] { parameters.get(s) };
+    }
+
+    @Override
+    public String getProtocol() {
+        return uri.getScheme();
+    }
+
+    @Override
+    public BufferedReader getReader() throws IOException {
+        return null;
+    }
+
+    @Override
+    public String getRealPath(String s) {
+        return path;
+    }
+
     public Map<String,String> getParameters() {
         return new HashMap<String,String>(parameters);
     }
@@ -568,4 +836,59 @@ public class HttpRequestImpl implements 
         // todo how do we get this value?
         return null;
     }
+
+    @Override
+    public String getRemoteHost() {
+        return getURI().getHost();
+    }
+
+    @Override
+    public int getRemotePort() {
+        return getURI().getPort();
+    }
+
+    @Override
+    public RequestDispatcher getRequestDispatcher(String s) {
+        return null;
+    }
+
+    @Override
+    public String getScheme() {
+        return getURI().getScheme();
+    }
+
+    @Override
+    public String getServerName() {
+        return getURI().getHost();
+    }
+
+    @Override
+    public int getServerPort() {
+        return getURI().getPort();
+    }
+
+    @Override
+    public ServletContext getServletContext() {
+        return null;
+    }
+
+    @Override
+    public boolean isAsyncStarted() {
+        return false;
+    }
+
+    @Override
+    public boolean isAsyncSupported() {
+        return false;
+    }
+
+    @Override
+    public boolean isSecure() {
+        return false; // TODO?
+    }
+
+    @Override
+    public void removeAttribute(String s) {
+        attributes.remove(s);
+    }
 }
\ No newline at end of file

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponse.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponse.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponse.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponse.java Sun Jul  3 21:37:58 2011
@@ -16,38 +16,15 @@
  */
 package org.apache.openejb.server.httpd;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+
 import java.io.IOException;
 
 /**
  * This interface takes care of HTTP Responses.  It sends data back to the browser.
  */
-public interface HttpResponse extends java.io.Serializable{
-    /**
-     * Gets a header based on the name passed in
-     * @param name the header name
-     * @return the header value
-     */
-    public String getHeader(String name);
-
-    /**
-     * Sets a header to be sent back to the browser
-     * @param name the header name
-     * @param value the header value
-     */
-    public void setHeader(String name, String value);
-
-    /**
-     * Gets the PrintWriter to send data to the browser
-     * @return the PrintWriter to send data to the browser
-     */
-    public java.io.PrintWriter getPrintWriter() throws IOException;
-
-    /**
-     * Gets the OutputStream to send data to the browser
-     * @return the OutputStream to send data to the browser
-     */
-    public java.io.OutputStream getOutputStream();
-
+public interface HttpResponse extends java.io.Serializable, HttpServletResponse {
     /**
      * Gets the content type that will be sent to the browser.
      * @return the content type (i.e. "text/html")
@@ -61,18 +38,6 @@ public interface HttpResponse extends ja
     public void setContentType(String type);
 
     /**
-     * Gets the response status code that will be sent to the browser
-     * @return the HTTP status code
-     */
-    int getStatusCode();
-
-    /**
-     * Sets the HTTP response status code to be sent to the browser.
-     * @param code the status code to be sent to the browser
-     */
-    void setStatusCode(int code);
-
-    /**
      * Sets the response string to be sent to the browser
      * @param responseString the response string
      */

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java Sun Jul  3 21:37:58 2011
@@ -16,19 +16,14 @@
  */
 package org.apache.openejb.server.httpd;
 
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutput;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintWriter;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.Cookie;
+
+import java.io.*;
 import java.net.URL;
 import java.net.URLConnection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
+import java.net.URLEncoder;
+import java.util.*;
 
 /** This class takes care of HTTP Responses.  It sends data back to the browser.
  */
@@ -49,7 +44,7 @@ public class HttpResponseImpl implements
     /** the writer for the response */
     private transient PrintWriter writer;
     /** the raw body */
-    private transient ByteArrayOutputStream baos;
+    private transient ServletByteArrayOutputStream sosi;
 
     /** the HTTP version */
     public static final String HTTP_VERSION = "HTTP/1.1";
@@ -65,6 +60,10 @@ public class HttpResponseImpl implements
     private HttpRequestImpl request;
     private URLConnection content;
 
+    private boolean commited = false;
+    private String encoding = "UTF-8";
+    private Locale locale = Locale.getDefault();
+
     protected void setRequest(HttpRequestImpl request){
         this.request = request;
     }
@@ -77,6 +76,71 @@ public class HttpResponseImpl implements
         headers.put(name, value);
     }
 
+    @Override
+    public void setIntHeader(String s, int i) {
+        headers.put(s, Integer.toString(i));
+    }
+
+    @Override
+    public void setStatus(int i) {
+        setCode(i);
+    }
+
+    @Override
+    public void setStatus(int i, String s) {
+        setCode(i);
+        setStatusMessage(s);
+    }
+
+    @Override
+    public void addCookie(Cookie cookie) {
+        headers.put(cookie.getName(), cookie.getValue());
+    }
+
+    @Override
+    public void addDateHeader(String s, long l) {
+        headers.put(s, Long.toString(l));
+    }
+
+    @Override
+    public void addHeader(String s, String s1) {
+        headers.put(s, s1);
+    }
+
+    @Override
+    public void addIntHeader(String s, int i) {
+        setIntHeader(s, i);
+    }
+
+    @Override
+    public boolean containsHeader(String s) {
+        return headers.containsKey(s);
+    }
+
+    @Override
+    public String encodeURL(String s) {
+        try {
+            return URLEncoder.encode(s, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            return s;
+        }
+    }
+
+    @Override
+    public String encodeRedirectURL(String s) {
+        return encodeURL(s);
+    }
+
+    @Override
+    public String encodeUrl(String s) {
+        return encodeURL(s);
+    }
+
+    @Override
+    public String encodeRedirectUrl(String s) {
+        return encodeRedirectURL(s);
+    }
+
     /** Gets a header based on the name passed in
      * @param name The name of the header
      * @return the value of the header
@@ -85,24 +149,73 @@ public class HttpResponseImpl implements
         return headers.get(name);
     }
 
-    /** Gets the PrintWriter to send data to the browser
-     * @return the PrintWriter to send data to the browser
-     */
-    public PrintWriter getPrintWriter(){
-        return writer;
+    @Override
+    public Collection<String> getHeaderNames() {
+        return headers.keySet();
+    }
+
+    @Override
+    public Collection<String> getHeaders(String s) {
+        return Arrays.asList(headers.get(s));
+    }
+
+    @Override
+    public int getStatus() {
+        return getCode();
+    }
+
+    @Override
+    public void sendError(int i) throws IOException {
+        setCode(i);
+    }
+
+    @Override
+    public void sendError(int i, String s) throws IOException {
+        setCode(i);
+        setStatusMessage(s);
+    }
+
+    @Override
+    public void sendRedirect(String s) throws IOException {
+        // no-op
+    }
+
+    @Override
+    public void setDateHeader(String s, long l) {
+        addDateHeader(s, l);
     }
 
     /** gets the OutputStream to send data to the browser
      * @return the OutputStream to send data to the browser
      */
-    public OutputStream getOutputStream(){
-        return baos;
+    public ServletOutputStream getOutputStream(){
+        return sosi;
+    }
+
+    @Override
+    public PrintWriter getWriter() throws IOException {
+        return writer;
+    }
+
+    @Override
+    public boolean isCommitted() {
+        return commited;
     }
 
     public void flushBuffer() throws IOException {
         // there is really no way to flush
     }
 
+    @Override
+    public int getBufferSize() {
+        return sosi.getOutputStream().size();
+    }
+
+    @Override
+    public String getCharacterEncoding() {
+        return encoding;
+    }
+
     /** sets the HTTP response code to be sent to the browser.  These codes are:
      *
      * OPTIONS = 0
@@ -118,6 +231,7 @@ public class HttpResponseImpl implements
      */
     public void setCode(int code){
         this.code = code;
+        commited = true;
     }
 
     /** gets the HTTP response code
@@ -134,6 +248,11 @@ public class HttpResponseImpl implements
         setHeader("Content-Type", type);
     }
 
+    @Override
+    public void setLocale(Locale loc) {
+        locale = loc;
+    }
+
     /** gets the content type that will be sent to the browser
      * @return the content type (i.e. "text/html")
      */
@@ -141,6 +260,11 @@ public class HttpResponseImpl implements
         return getHeader("Content-Type");
     }
 
+    @Override
+    public Locale getLocale() {
+        return locale;
+    }
+
     /** Sets the response string to be sent to the browser
      * @param responseString the response string
      */
@@ -153,6 +277,26 @@ public class HttpResponseImpl implements
         initBody();
     }
 
+    @Override
+    public void resetBuffer() {
+        sosi.getOutputStream().reset();
+    }
+
+    @Override
+    public void setBufferSize(int i) {
+        // no-op
+    }
+
+    @Override
+    public void setCharacterEncoding(String s) {
+        encoding = s;
+    }
+
+    @Override
+    public void setContentLength(int i) {
+        // no-op
+    }
+
     /** resets the data to be sent to the browser with the response code and response
      * string
      * @param code the code to be sent to the browser
@@ -220,8 +364,8 @@ public class HttpResponseImpl implements
 
      /** initalizes the body */
     private void initBody(){
-        baos = new ByteArrayOutputStream();
-        writer = new PrintWriter( baos );
+        sosi = new ServletByteArrayOutputStream();
+        writer = new PrintWriter(sosi);
     }
 
     /** Creates a string version of the response similar to:
@@ -253,7 +397,7 @@ public class HttpResponseImpl implements
         if (content == null){
             writer.flush();
             writer.close();
-            body = baos.toByteArray();
+            body = sosi.getOutputStream().toByteArray();
             setHeader("Content-Length", body.length+"");
         } else {
             setHeader("Content-Length", content.getContentLength()+"");
@@ -363,7 +507,12 @@ public class HttpResponseImpl implements
      */
     protected static HttpResponseImpl createError(String message, Throwable t){
         HttpResponseImpl res = new HttpResponseImpl(500, "Internal Server Error", "text/html");
-        PrintWriter body = res.getPrintWriter();
+        PrintWriter body = null;
+        try {
+            body = res.getWriter();
+        } catch (IOException e) { // impossible normally
+            // no-op
+        }
 
         body.println("<html>");
         body.println("<body>");
@@ -411,7 +560,12 @@ public class HttpResponseImpl implements
      */
     protected static HttpResponseImpl createForbidden(String ip){
         HttpResponseImpl res = new HttpResponseImpl(403, "Forbidden", "text/html");
-        PrintWriter body = res.getPrintWriter();
+        PrintWriter body = null;
+        try {
+            body = res.getWriter();
+        } catch (IOException e) { // normally impossible
+            // no-op
+        }
 
         body.println("<html>");
         body.println("<body>");
@@ -442,7 +596,7 @@ public class HttpResponseImpl implements
 
         /** Response body */
         writer.flush();
-        body = baos.toByteArray();
+        body = sosi.getOutputStream().toByteArray();
         //System.out.println("[] body "+body.length );
         out.writeObject( body );
     }
@@ -468,9 +622,9 @@ public class HttpResponseImpl implements
         /** Response body */
         body = (byte[]) in.readObject();
         //System.out.println("[] body "+body.length );
-        baos = new ByteArrayOutputStream();
-        baos.write( body );
-        writer = new PrintWriter( baos );
+        sosi = new ServletByteArrayOutputStream();
+        sosi.write(body);
+        writer = new PrintWriter(sosi);
 
     }
     /**
@@ -480,14 +634,6 @@ public class HttpResponseImpl implements
         this.content = content;
     }
 
-    public void setStatusCode(int code) {
-        this.setCode(code);
-    }
-
-    public int getStatusCode() {
-        return this.getCode();
-    }
-
     public void setStatusMessage(String responseString) {
         this.setResponseString(responseString);
     }

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSession.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSession.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSession.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSession.java Sun Jul  3 21:37:58 2011
@@ -18,7 +18,7 @@ package org.apache.openejb.server.httpd;
 
 /**
  */
-public interface HttpSession {
+public interface HttpSession extends javax.servlet.http.HttpSession {
 
     public void removeAttribute(String name);
 

Added: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java?rev=1142507&view=auto
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java (added)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java Sun Jul  3 21:37:58 2011
@@ -0,0 +1,106 @@
+package org.apache.openejb.server.httpd;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSessionContext;
+import org.apache.openejb.client.ArrayEnumeration;
+
+import java.util.*;
+
+/**
+ * @author Romain Manni-Bucau
+ */
+public class HttpSessionImpl implements HttpSession {
+    private String sessionId = UUID.randomUUID().toString();
+    private Map<String, Object> attributes = new HashMap<String, Object>();
+
+    @Override
+    public void removeAttribute(String name) {
+        attributes.remove(name);
+    }
+
+    @Override
+    public void removeValue(String s) {
+        Iterator<String> it = attributes.keySet().iterator();
+        while (it.hasNext()) {
+            String key = it.next();
+            if (attributes.get(key).equals(s)) {
+                attributes.remove(key);
+            }
+        }
+    }
+
+    @Override
+    public void invalidate() {
+        attributes.clear();
+    }
+
+    @Override
+    public boolean isNew() {
+        return false;
+    }
+
+    @Override
+    public Object getAttribute(String name) {
+        return attributes.get(name);
+    }
+
+    @Override
+    public Object getValue(String s) {
+        return attributes.get(s);
+    }
+
+    @Override
+    public Enumeration<String> getAttributeNames() {
+        return new ArrayEnumeration(new ArrayList(attributes.keySet()));
+    }
+
+    @Override
+    public String[] getValueNames() {
+        return attributes.keySet().toArray(new String[attributes.size()]);
+    }
+
+    @Override
+    public void setAttribute(String name, Object value) {
+        attributes.put(name, value);
+    }
+
+    @Override
+    public void putValue(String s, Object o) {
+        setAttribute(s, o);
+    }
+
+    @Override
+    public long getCreationTime() {
+        return -1;
+    }
+
+    @Override
+    public String getId() {
+        return sessionId;
+    }
+
+    @Override
+    public long getLastAccessedTime() {
+        return -1;
+    }
+
+    @Override
+    public ServletContext getServletContext() {
+        return null;
+    }
+
+    @Override
+    public void setMaxInactiveInterval(int i) {
+        // no-op
+    }
+
+    @Override
+    public int getMaxInactiveInterval() {
+        return -1;
+    }
+
+    @Override
+    public HttpSessionContext getSessionContext() {
+        return null;
+    }
+}

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java Sun Jul  3 21:37:58 2011
@@ -153,8 +153,12 @@ public class OpenEJBHttpServer implement
         } catch (Throwable t) {
             res.setCode(400);
             res.setResponseString("Could not read the request");
-            res.getPrintWriter().println(t.getMessage());
-            t.printStackTrace(res.getPrintWriter());
+            try {
+                res.getWriter().println(t.getMessage());
+                t.printStackTrace(res.getWriter());
+            } catch (IOException e) {
+                // no-op
+            }
             log.error("BAD REQUEST", t);
             throw new OpenEJBException("Could not read the request.\n" + t.getClass().getName() + ":\n" + t.getMessage(), t);
         }

Added: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayIntputStream.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayIntputStream.java?rev=1142507&view=auto
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayIntputStream.java (added)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayIntputStream.java Sun Jul  3 21:37:58 2011
@@ -0,0 +1,28 @@
+package org.apache.openejb.server.httpd;
+
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletOutputStream;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+/**
+ * @author Romain Manni-Bucau
+ */
+public class ServletByteArrayIntputStream extends ServletInputStream {
+    private ByteArrayInputStream intputStream;
+
+    public ServletByteArrayIntputStream(byte[] body) {
+        intputStream = new ByteArrayInputStream(body);
+    }
+
+    @Override
+    public int read() throws IOException {
+        return intputStream.read();
+    }
+
+    public ByteArrayInputStream getIntputStream() {
+        return intputStream;
+    }
+}

Added: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayOutputStream.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayOutputStream.java?rev=1142507&view=auto
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayOutputStream.java (added)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletByteArrayOutputStream.java Sun Jul  3 21:37:58 2011
@@ -0,0 +1,26 @@
+package org.apache.openejb.server.httpd;
+
+import javax.servlet.ServletOutputStream;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+/**
+ * @author Romain Manni-Bucau
+ */
+public class ServletByteArrayOutputStream extends ServletOutputStream {
+    private ByteArrayOutputStream outputStream;
+
+    public ServletByteArrayOutputStream() {
+        outputStream = new ByteArrayOutputStream();
+    }
+
+    @Override
+    public void write(int b) throws IOException {
+        outputStream.write(b);
+    }
+
+    public ByteArrayOutputStream getOutputStream() {
+        return outputStream;
+    }
+}

Added: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletIntputStreamAdapter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletIntputStreamAdapter.java?rev=1142507&view=auto
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletIntputStreamAdapter.java (added)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletIntputStreamAdapter.java Sun Jul  3 21:37:58 2011
@@ -0,0 +1,23 @@
+package org.apache.openejb.server.httpd;
+
+import javax.servlet.ServletInputStream;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @author Romain Manni-Bucau
+ */
+public class ServletIntputStreamAdapter extends ServletInputStream {
+    private InputStream intputStream;
+
+    public ServletIntputStreamAdapter(InputStream is) {
+        intputStream = is;
+    }
+
+    @Override
+    public int read() throws IOException {
+        return intputStream.read();
+    }
+}

Added: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletOutputStreamAdapter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletOutputStreamAdapter.java?rev=1142507&view=auto
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletOutputStreamAdapter.java (added)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletOutputStreamAdapter.java Sun Jul  3 21:37:58 2011
@@ -0,0 +1,22 @@
+package org.apache.openejb.server.httpd;
+
+import javax.servlet.ServletOutputStream;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * @author Romain Manni-Bucau
+ */
+public class ServletOutputStreamAdapter extends ServletOutputStream {
+    private OutputStream outputStream;
+
+    public ServletOutputStreamAdapter(OutputStream os) {
+        outputStream = os;
+    }
+
+    @Override
+    public void write(int b) throws IOException {
+        outputStream.write(b);
+    }
+}

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletRequestAdapter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletRequestAdapter.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletRequestAdapter.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletRequestAdapter.java Sun Jul  3 21:37:58 2011
@@ -17,13 +17,21 @@
  */
 package org.apache.openejb.server.httpd;
 
-import javax.servlet.ServletContext;
+import javax.servlet.*;
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.Part;
+
+import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.security.Principal;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Locale;
 import java.util.Map;
 
 public class ServletRequestAdapter implements HttpRequest {
@@ -49,6 +57,46 @@ public class ServletRequestAdapter imple
         }
     }
 
+    @Override
+    public Principal getUserPrincipal() {
+        return request.getUserPrincipal();
+    }
+
+    @Override
+    public boolean isRequestedSessionIdFromCookie() {
+        return request.isRequestedSessionIdFromCookie();
+    }
+
+    @Override
+    public boolean isRequestedSessionIdFromUrl() {
+        return request.isRequestedSessionIdFromUrl();
+    }
+
+    @Override
+    public boolean isRequestedSessionIdFromURL() {
+        return request.isRequestedSessionIdFromURL();
+    }
+
+    @Override
+    public boolean isRequestedSessionIdValid() {
+        return request.isRequestedSessionIdValid();
+    }
+
+    @Override
+    public boolean isUserInRole(String s) {
+        return request.isUserInRole(s);
+    }
+
+    @Override
+    public void login(String s, String s1) throws ServletException {
+        request.login(s, s1);
+    }
+
+    @Override
+    public void logout() throws ServletException {
+        request.logout();
+    }
+
     public HttpSession getSession() {
         javax.servlet.http.HttpSession session = request.getSession();
         if (session != null) {
@@ -62,6 +110,21 @@ public class ServletRequestAdapter imple
         return request.getHeader(name);
     }
 
+    @Override
+    public Enumeration<String> getHeaderNames() {
+        return request.getHeaderNames();
+    }
+
+    @Override
+    public Enumeration<String> getHeaders(String s) {
+        return request.getHeaders(s);
+    }
+
+    @Override
+    public int getIntHeader(String s) {
+        return request.getIntHeader(s);
+    }
+
     public URI getURI() {
         try {
             return new URI(request.getScheme(), null, request.getServerName(), request.getServerPort(), request.getRequestURI(), request.getQueryString(), null);
@@ -78,42 +141,257 @@ public class ServletRequestAdapter imple
         return request.getContentType();
     }
 
+    @Override
+    public DispatcherType getDispatcherType() {
+        return request.getDispatcherType();
+    }
+
+    @Override
+    public boolean authenticate(HttpServletResponse httpServletResponse) throws IOException, ServletException {
+        return request.authenticate(httpServletResponse);
+    }
+
+    @Override
+    public String getAuthType() {
+        return request.getAuthType();
+    }
+
     public String getContextPath() {
         return request.getContextPath();
     }
 
-    public InputStream getInputStream() throws IOException {
+    @Override
+    public Cookie[] getCookies() {
+        return request.getCookies();
+    }
+
+    @Override
+    public long getDateHeader(String s) {
+        return request.getDateHeader(s);
+    }
+
+    public ServletInputStream getInputStream() throws IOException {
         return request.getInputStream();
     }
 
-    public Method getMethod() {
-        try {
-            return Method.valueOf(request.getMethod());
+    @Override
+    public String getLocalAddr() {
+        return request.getLocalAddr();
+    }
+
+    @Override
+    public Locale getLocale() {
+        return request.getLocale();
+    }
+
+    @Override
+    public Enumeration<Locale> getLocales() {
+        return request.getLocales();
+    }
+
+    @Override
+    public String getLocalName() {
+        return request.getLocalName();
+    }
+
+    @Override
+    public int getLocalPort() {
+        return request.getLocalPort();
+    }
+
+    public String getMethod() {
+        try { // to check it is supported
+            return Method.valueOf(request.getMethod()).name();
         } catch (IllegalArgumentException e) {
-            return Method.UNSUPPORTED;
+            return Method.UNSUPPORTED.name();
         }
     }
 
+    @Override
+    public Part getPart(String s) throws IOException, ServletException {
+        return request.getPart(s);
+    }
+
+    @Override
+    public Collection<Part> getParts() throws IOException, ServletException {
+        return request.getParts();
+    }
+
+    @Override
+    public String getPathInfo() {
+        return request.getPathInfo();
+    }
+
+    @Override
+    public String getPathTranslated() {
+        return request.getPathTranslated();
+    }
+
+    @Override
+    public String getQueryString() {
+        return request.getQueryString();
+    }
+
+    @Override
+    public String getRemoteUser() {
+        return request.getRemoteUser();
+    }
+
+    @Override
+    public String getRequestedSessionId() {
+        return request.getRequestedSessionId();
+    }
+
+    @Override
+    public String getRequestURI() {
+        return request.getRequestURI();
+    }
+
+    @Override
+    public StringBuffer getRequestURL() {
+        return request.getRequestURL();
+    }
+
+    @Override
+    public String getServletPath() {
+        return request.getServletPath();
+    }
+
     public String getParameter(String name) {
         return request.getParameter(name);
     }
 
+    @Override
+    public Map<String, String[]> getParameterMap() {
+        return request.getParameterMap();
+    }
+
+    @Override
+    public Enumeration<String> getParameterNames() {
+        return request.getParameterNames();
+    }
+
+    @Override
+    public String[] getParameterValues(String s) {
+        return request.getParameterValues(s);
+    }
+
+    @Override
+    public String getProtocol() {
+        return request.getProtocol();
+    }
+
+    @Override
+    public BufferedReader getReader() throws IOException {
+        return request.getReader();
+    }
+
+    @Override
+    public String getRealPath(String s) {
+        return request.getRealPath(s);
+    }
+
     public Map getParameters() {
         return request.getParameterMap();
     }
 
+    @Override
+    public AsyncContext getAsyncContext() {
+        return request.getAsyncContext();
+    }
+
     public Object getAttribute(String s) {
         Object o = request.getAttribute(s);
 
         return o;
     }
 
+    @Override
+    public Enumeration<String> getAttributeNames() {
+        return request.getAttributeNames();
+    }
+
+    @Override
+    public String getCharacterEncoding() {
+        return request.getCharacterEncoding();
+    }
+
     public void setAttribute(String s, Object o) {
         request.setAttribute(s, o);
     }
 
+    @Override
+    public void setCharacterEncoding(String s) throws UnsupportedEncodingException {
+        request.setCharacterEncoding(s);
+    }
+
+    @Override
+    public AsyncContext startAsync() {
+        return request.startAsync();
+    }
+
+    @Override
+    public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) {
+        return request.startAsync(servletRequest, servletResponse);
+    }
+
     public String getRemoteAddr() {
         return request.getRemoteAddr();
     }
 
+    @Override
+    public String getRemoteHost() {
+        return request.getRemoteHost();
+    }
+
+    @Override
+    public int getRemotePort() {
+        return request.getRemotePort();
+    }
+
+    @Override
+    public RequestDispatcher getRequestDispatcher(String s) {
+        return request.getRequestDispatcher(s);
+    }
+
+    @Override
+    public String getScheme() {
+        return request.getScheme();
+    }
+
+    @Override
+    public String getServerName() {
+        return request.getServerName();
+    }
+
+    @Override
+    public int getServerPort() {
+        return request.getServerPort();
+    }
+
+    @Override
+    public ServletContext getServletContext() {
+        return request.getServletContext();
+    }
+
+    @Override
+    public boolean isAsyncStarted() {
+        return request.isAsyncStarted();
+    }
+
+    @Override
+    public boolean isAsyncSupported() {
+        return request.isAsyncSupported();
+    }
+
+    @Override
+    public boolean isSecure() {
+        return request.isSecure();
+    }
+
+    @Override
+    public void removeAttribute(String s) {
+        request.removeAttribute(s);
+    }
+
 }

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletResponseAdapter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletResponseAdapter.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletResponseAdapter.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletResponseAdapter.java Sun Jul  3 21:37:58 2011
@@ -17,10 +17,13 @@
  */
 package org.apache.openejb.server.httpd;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
 import java.io.IOException;
-import java.io.OutputStream;
+import java.util.Collection;
+import java.util.Locale;
 
 public class ServletResponseAdapter implements HttpResponse {
     private final HttpServletResponse response;
@@ -29,19 +32,110 @@ public class ServletResponseAdapter impl
         this.response = response;
     }
 
-    public PrintWriter getPrintWriter() throws IOException {
-        return response.getWriter();
-    }
-
     public void setHeader(String name, String value) {
         response.setHeader(name, value);
     }
 
+    @Override
+    public void setIntHeader(String s, int i) {
+        response.setIntHeader(s, i);
+    }
+
+    @Override
+    public void setStatus(int i) {
+        response.setStatus(i);
+    }
+
+    @Override
+    public void setStatus(int i, String s) {
+        response.setStatus(i, s);
+    }
+
+    @Override
+    public void addCookie(Cookie cookie) {
+        response.addCookie(cookie);
+    }
+
+    @Override
+    public void addDateHeader(String s, long l) {
+        response.addDateHeader(s, l);
+    }
+
+    @Override
+    public void addHeader(String s, String s1) {
+        response.addHeader(s, s1);
+    }
+
+    @Override
+    public void addIntHeader(String s, int i) {
+        response.addIntHeader(s, i);
+    }
+
+    @Override
+    public boolean containsHeader(String s) {
+        return response.containsHeader(s);
+    }
+
+    @Override
+    public String encodeURL(String s) {
+        return response.encodeURL(s);
+    }
+
+    @Override
+    public String encodeRedirectURL(String s) {
+        return response.encodeRedirectURL(s);
+    }
+
+    @Override
+    public String encodeUrl(String s) {
+        return response.encodeUrl(s);
+    }
+
+    @Override
+    public String encodeRedirectUrl(String s) {
+        return response.encodeRedirectUrl(s);
+    }
+
     public String getHeader(String name) {
         throw new UnsupportedOperationException("Not possible to implement");
     }
 
-    public OutputStream getOutputStream() {
+    @Override
+    public Collection<String> getHeaderNames() {
+        return response.getHeaderNames();
+    }
+
+    @Override
+    public Collection<String> getHeaders(String s) {
+        return response.getHeaders(s);
+    }
+
+    @Override
+    public int getStatus() {
+        return response.getStatus();
+    }
+
+    @Override
+    public void sendError(int i) throws IOException {
+        response.sendError(i);
+    }
+
+    @Override
+    public void sendError(int i, String s) throws IOException {
+        response.sendError(i, s);
+    }
+
+    @Override
+    public void sendRedirect(String s) throws IOException {
+        response.sendRedirect(s);
+    }
+
+    @Override
+    public void setDateHeader(String s, long l) {
+        response.setDateHeader(s, l);
+    }
+
+    public ServletOutputStream getOutputStream() {
         try {
             return response.getOutputStream();
         } catch (IOException e) {
@@ -49,28 +143,75 @@ public class ServletResponseAdapter impl
         }
     }
 
-    public void setStatusCode(int code) {
-        response.setStatus(code);
+    @Override
+    public PrintWriter getWriter() throws IOException {
+        return response.getWriter();
     }
 
-    public int getStatusCode() {
-        throw new UnsupportedOperationException("Not possible to implement");
+    @Override
+    public boolean isCommitted() {
+        return response.isCommitted();
+    }
+
+    @Override
+    public void reset() {
+        response.reset();
+    }
+
+    @Override
+    public void resetBuffer() {
+        response.resetBuffer();
+    }
+
+    @Override
+    public void setBufferSize(int i) {
+        response.setBufferSize(i);
+    }
+
+    @Override
+    public void setCharacterEncoding(String s) {
+        response.setCharacterEncoding(s);
+    }
+
+    @Override
+    public void setContentLength(int i) {
+        response.setContentLength(i);
     }
 
     public void setContentType(String type) {
         response.setContentType(type);
     }
 
+    @Override
+    public void setLocale(Locale locale) {
+        response.setLocale(locale);
+    }
+
     public String getContentType() {
         return response.getContentType();
     }
 
+    @Override
+    public Locale getLocale() {
+        return response.getLocale();
+    }
+
     @SuppressWarnings({"deprecation"})
     public void setStatusMessage(String responseString) {
-        response.setStatus(getStatusCode(), responseString);
+        response.setStatus(getStatus(), responseString);
     }
 
     public void flushBuffer() throws IOException {
         response.flushBuffer();
     }
+
+    @Override
+    public int getBufferSize() {
+        return response.getBufferSize();
+    }
+
+    @Override
+    public String getCharacterEncoding() {
+        return response.getCharacterEncoding();  //To change body of implemented methods use File | Settings | File Templates.
+    }
 }

Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletSessionAdapter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletSessionAdapter.java?rev=1142507&r1=1142506&r2=1142507&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletSessionAdapter.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletSessionAdapter.java Sun Jul  3 21:37:58 2011
@@ -17,6 +17,11 @@
  */
 package org.apache.openejb.server.httpd;
 
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSessionContext;
+
+import java.util.Enumeration;
+
 public class ServletSessionAdapter implements HttpSession {
     private final javax.servlet.http.HttpSession session;
 
@@ -24,19 +29,84 @@ public class ServletSessionAdapter imple
         this.session = session;
     }
 
+    @Override
+    public long getCreationTime() {
+        return session.getCreationTime();
+    }
+
     public String getId() {
         return session.getId();
     }
 
+    @Override
+    public long getLastAccessedTime() {
+        return session.getLastAccessedTime();
+    }
+
+    @Override
+    public ServletContext getServletContext() {
+        return session.getServletContext();
+    }
+
+    @Override
+    public void setMaxInactiveInterval(int i) {
+        session.setMaxInactiveInterval(i);
+    }
+
+    @Override
+    public int getMaxInactiveInterval() {
+        return session.getMaxInactiveInterval();
+    }
+
+    @Override
+    public HttpSessionContext getSessionContext() {
+        return session.getSessionContext();
+    }
+
     public Object getAttribute(String name) {
         return session.getAttribute(name);
     }
 
+    @Override
+    public Object getValue(String s) {
+        return session.getValue(s);
+    }
+
+    @Override
+    public Enumeration<String> getAttributeNames() {
+        return session.getAttributeNames();
+    }
+
+    @Override
+    public String[] getValueNames() {
+        return session.getValueNames();
+    }
+
     public void setAttribute(String name, Object value) {
         session.setAttribute(name, value);
     }
 
+    @Override
+    public void putValue(String s, Object o) {
+        session.putValue(s, o);
+    }
+
     public void removeAttribute(String name) {
         session.removeAttribute(name);
     }
+
+    @Override
+    public void removeValue(String s) {
+        session.removeValue(s);
+    }
+
+    @Override
+    public void invalidate() {
+        session.invalidate();
+    }
+
+    @Override
+    public boolean isNew() {
+        return session.isNew();
+    }
 }