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 return base.GetPathInfo () ?? String.Empty;
85 public override string GetQueryString () {
86 return _HttpServletRequest.getQueryString ();
89 public override string GetRemoteAddress () {
90 return _HttpServletRequest.getRemoteAddr ();
93 public override string GetRemoteName () {
94 return _HttpServletRequest.getRemoteHost ();
98 public override int GetRemotePort () {
100 return _HttpServletRequest.getRemotePort ();
102 catch (Exception e) {
103 // if servlet API is 2.3 and below - there is no method getRemotePort
104 // in ServletRequest interface... should be described as limitation.
109 public override string GetProtocol () {
110 return _HttpServletRequest.getScheme ();
113 public override string GetServerName () {
114 return _HttpServletRequest.getServerName ();
117 public override bool IsSecure () {
118 return _HttpServletRequest.isSecure ();
121 public override void SendStatus (int statusCode, string statusDescription) {
122 // setStatus(int, string) is deprecated
123 _HttpServletResponse.setStatus (statusCode/*, statusDescription*/);
126 public override void SendUnknownResponseHeader (string name, string value) {
130 _HttpServletResponse.addHeader (name, value);
133 public override bool HeadersSent () {
134 return _HttpServletResponse.isCommitted ();
137 public override void SendCalculatedContentLength (int contentLength) {
138 _HttpServletResponse.setContentLength (contentLength);
141 public override string GetAuthType () {
142 return _HttpServletRequest.getAuthType ();
145 protected override int getContentLength () {
146 return _HttpServletRequest.getContentLength ();
149 protected override string getContentType () {
150 return _HttpServletRequest.getContentType ();
153 public override string GetRemoteUser () {
154 return _HttpServletRequest.getRemoteUser ();
157 protected override java.util.Enumeration getHeaderNames () {
158 return _HttpServletRequest.getHeaderNames ();
161 protected override string getHeader (string name) {
162 return _HttpServletRequest.getHeader (name);
165 protected override java.io.InputStream getInputStream () {
166 return _HttpServletRequest.getInputStream ();
169 public override javax.servlet.ServletContext GetContext () {
170 return _HttpServlet.getServletContext ();
173 protected override OutputStreamWrapper CreateOutputStream (bool binary) {
174 return _outputStream ?? (_outputStream = binary ?
175 new OutputStreamWrapper (_HttpServletResponse.getOutputStream ()) :
176 new OutputStreamWrapper (_HttpServletResponse.getWriter ()));
179 public override HttpSession GetSession (bool create) {
180 return _HttpServletRequest.getSession (create);
183 public override bool IsRequestedSessionIdValid () {
184 return _HttpServletRequest.isRequestedSessionIdValid ();
186 public override string GetRequestedSessionId () {
187 return _HttpServletRequest.getRequestedSessionId ();
190 public override bool IsUserInRole (string name) {
191 return _HttpServletRequest.isUserInRole (name);
194 public override Principal GetUserPrincipal () {
195 return _HttpServletRequest.getUserPrincipal ();
198 public override BaseHttpContext CreateContext (System.Web.HttpContext context) {
199 return new ServletHttpContext (context);