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