2 using System.Collections.Generic;
4 using javax.servlet.http;
8 namespace Mainsoft.Web.Hosting
10 public sealed class ServletWorkerRequest : BaseWorkerRequest
12 readonly HttpServlet _HttpServlet;
13 readonly HttpServletRequest _HttpServletRequest;
14 readonly HttpServletResponse _HttpServletResponse;
15 OutputStreamWrapper _outputStream;
17 public ServletWorkerRequest (HttpServlet servlet, HttpServletRequest req, HttpServletResponse resp)
18 : base (req.getContextPath(), req.getServletPath (), req.getRequestURI ()) {
20 _HttpServlet = servlet;
21 _HttpServletRequest = req;
22 _HttpServletResponse = resp;
26 static readonly Type typeOfHttpServletRequest = typeof (HttpServletRequest);
27 static readonly Type typeOfHttpServletResponse = typeof (HttpServletResponse);
28 static readonly Type typeOfHttpServlet = typeof (HttpServlet);
29 static readonly Type typeOfHttpSession = typeof (HttpSession);
30 static readonly Type typeOfServletContext = typeof (ServletContext);
31 static readonly Type typeOfServletConfig = typeof (ServletConfig);
32 public override object GetService (Type serviceType) {
33 if (serviceType == typeOfHttpServlet ||
34 serviceType == typeOfServletConfig)
36 if (serviceType == typeOfHttpServletRequest)
37 return _HttpServletRequest;
38 if (serviceType == typeOfHttpServletResponse)
39 return _HttpServletResponse;
40 if (serviceType == typeOfHttpSession)
41 return GetSession (false);
42 if (serviceType == typeOfServletContext)
43 return _HttpServlet.getServletContext ();
44 return base.GetService (serviceType);
47 public HttpServlet Servlet {
53 public HttpServletRequest ServletRequest {
55 return _HttpServletRequest;
59 public HttpServletResponse ServletResponse {
61 return _HttpServletResponse;
65 public override string GetHttpVerbName () {
66 return _HttpServletRequest.getMethod ();
69 public override string GetHttpVersion () {
70 return _HttpServletRequest.getProtocol ();
73 public override string GetLocalAddress () {
74 return _HttpServletRequest.getLocalAddr ();
77 public override int GetLocalPort () {
78 return _HttpServletRequest.getServerPort ();
81 public override string GetPathInfo () {
82 string pathInfo = base.GetPathInfo() ?? _HttpServletRequest.getPathInfo ();
83 return pathInfo ?? String.Empty;
86 public override string GetQueryString () {
87 return _HttpServletRequest.getQueryString ();
90 public override string GetRemoteAddress () {
91 return _HttpServletRequest.getRemoteAddr ();
94 public override string GetRemoteName () {
95 return _HttpServletRequest.getRemoteHost ();
99 public override int GetRemotePort () {
101 return _HttpServletRequest.getRemotePort ();
103 catch (Exception e) {
104 // if servlet API is 2.3 and below - there is no method getRemotePort
105 // in ServletRequest interface... should be described as limitation.
110 public override string GetProtocol () {
111 return _HttpServletRequest.getScheme ();
114 public override string GetServerName () {
115 return _HttpServletRequest.getServerName ();
118 public override bool IsSecure () {
119 return _HttpServletRequest.isSecure ();
122 public override void SendStatus (int statusCode, string statusDescription) {
123 // setStatus(int, string) is deprecated
124 _HttpServletResponse.setStatus (statusCode/*, statusDescription*/);
127 public override void SendUnknownResponseHeader (string name, string value) {
131 _HttpServletResponse.addHeader (name, value);
134 public override bool HeadersSent () {
135 return _HttpServletResponse.isCommitted ();
138 public override void SendCalculatedContentLength (int contentLength) {
139 _HttpServletResponse.setContentLength (contentLength);
142 public override string GetAuthType () {
143 return _HttpServletRequest.getAuthType ();
146 protected override int getContentLength () {
147 return _HttpServletRequest.getContentLength ();
150 protected override string getContentType () {
151 return _HttpServletRequest.getContentType ();
154 public override string GetRemoteUser () {
155 return _HttpServletRequest.getRemoteUser ();
158 protected override int getServerPort () {
159 return _HttpServletRequest.getServerPort ();
162 protected override java.util.Enumeration getHeaderNames () {
163 return _HttpServletRequest.getHeaderNames ();
166 protected override string getHeader (string name) {
167 return _HttpServletRequest.getHeader (name);
170 protected override java.io.InputStream getInputStream () {
171 return _HttpServletRequest.getInputStream ();
174 public override javax.servlet.ServletContext GetContext () {
175 return _HttpServlet.getServletContext ();
178 protected override OutputStreamWrapper CreateOutputStream (bool binary) {
179 return _outputStream ?? (_outputStream = binary ?
180 new OutputStreamWrapper (_HttpServletResponse.getOutputStream ()) :
181 new OutputStreamWrapper (_HttpServletResponse.getWriter ()));
184 public override HttpSession GetSession (bool create) {
185 return _HttpServletRequest.getSession (create);
188 public override bool IsRequestedSessionIdValid () {
189 return _HttpServletRequest.isRequestedSessionIdValid ();
191 public override string GetRequestedSessionId () {
192 return _HttpServletRequest.getRequestedSessionId ();
195 public override bool IsUserInRole (string name) {
196 return _HttpServletRequest.isUserInRole (name);
199 public override Principal GetUserPrincipal () {
200 return _HttpServletRequest.getUserPrincipal ();
203 public override BaseHttpContext CreateContext (System.Web.HttpContext context) {
204 return new ServletHttpContext (context);