001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: * $Header:$
018: */
019: package org.apache.beehive.controls.runtime.servlet;
020:
021: import javax.servlet.http.HttpServletRequest;
022: import javax.servlet.http.HttpServletRequestWrapper;
023: import javax.servlet.ServletRequest;
024:
025: /**
026: * This class is the contextual service implementation for javax.servlet.http.HttpServletRequest.
027: * It acts as an intermediary between the client and the HttpServletRequest instance held by the
028: * associated ServletBeanContext. It validates that attempt to access the HttpServletRequest
029: * only occur during the servlet request processing lifecycle, then delegates to the underlying
030: * HttpServletRequest instance for actual services.
031: */
032: /* package */class HttpRequestService extends ServletRequestService
033: implements HttpServletRequest {
034:
035: // todo: how will this class version with subsequent Servlet specification versions?
036:
037: /**
038: * This static helper class derives from javax.servlet.HttpServletRequestWrapper and can
039: * be used to wrap a HttpServletRequestService instance in cases where the client expects
040: * to be able to use the standard wrapper interfaces to unwrap requests.
041: */
042: private static class Wrapper extends HttpServletRequestWrapper {
043: Wrapper(HttpRequestService requestService) {
044: super (requestService);
045: _requestService = requestService;
046: }
047:
048: /**
049: * Overrides the default HttpServletRequestWrapper.getRequest implementation. Rather
050: * than just returning the request passed into the constructor (i.e. the request
051: * service), it will go unwrap step further and return the current (active) http
052: * request.
053: */
054: public HttpServletRequest getRequest() {
055: return _requestService.getHttpServletRequest();
056: }
057:
058: HttpRequestService _requestService;
059: }
060:
061: /* package */HttpRequestService(ServletBeanContext beanContext) {
062: super (beanContext);
063: }
064:
065: final protected HttpServletRequest getHttpServletRequest() {
066: ServletRequest servletRequest = getServletBeanContext()
067: .getServletRequest();
068: if (!(servletRequest instanceof HttpServletRequest))
069: throw new IllegalStateException(
070: "Current request is not an HttpServletRequest");
071: return (HttpServletRequest) servletRequest;
072: }
073:
074: /**
075: * This method returns a HttpServletRequestWrapper instance that wraps the request service.
076: * This is useful in instances where there is code that uses the wrapper interfaces to
077: * unwrap requests to get to the 'root' request.
078: */
079: /* package */HttpServletRequestWrapper getHttpRequestWrapper() {
080: return new Wrapper(this );
081: }
082:
083: public java.lang.String getAuthType() {
084: return getHttpServletRequest().getAuthType();
085: }
086:
087: public javax.servlet.http.Cookie[] getCookies() {
088: return getHttpServletRequest().getCookies();
089: }
090:
091: public long getDateHeader(java.lang.String name) {
092: return getHttpServletRequest().getDateHeader(name);
093: }
094:
095: public java.lang.String getHeader(java.lang.String name) {
096: return getHttpServletRequest().getHeader(name);
097: }
098:
099: public java.util.Enumeration getHeaders(java.lang.String name) {
100: return getHttpServletRequest().getHeaders(name);
101: }
102:
103: public java.util.Enumeration getHeaderNames() {
104: return getHttpServletRequest().getHeaderNames();
105: }
106:
107: public int getIntHeader(java.lang.String name) {
108: return getHttpServletRequest().getIntHeader(name);
109: }
110:
111: public java.lang.String getMethod() {
112: return getHttpServletRequest().getMethod();
113: }
114:
115: public java.lang.String getPathInfo() {
116: return getHttpServletRequest().getPathInfo();
117: }
118:
119: public java.lang.String getPathTranslated() {
120: return getHttpServletRequest().getPathTranslated();
121: }
122:
123: public java.lang.String getContextPath() {
124: return getHttpServletRequest().getContextPath();
125: }
126:
127: public java.lang.String getQueryString() {
128: return getHttpServletRequest().getQueryString();
129: }
130:
131: public java.lang.String getRemoteUser() {
132: return getHttpServletRequest().getRemoteUser();
133: }
134:
135: public boolean isUserInRole(java.lang.String role) {
136: return getHttpServletRequest().isUserInRole(role);
137: }
138:
139: public java.security.Principal getUserPrincipal() {
140: return getHttpServletRequest().getUserPrincipal();
141: }
142:
143: public java.lang.String getRequestedSessionId() {
144: return getHttpServletRequest().getRequestedSessionId();
145: }
146:
147: public java.lang.String getRequestURI() {
148: return getHttpServletRequest().getRequestURI();
149: }
150:
151: public java.lang.StringBuffer getRequestURL() {
152: return getHttpServletRequest().getRequestURL();
153: }
154:
155: public java.lang.String getServletPath() {
156: return getHttpServletRequest().getServletPath();
157: }
158:
159: public javax.servlet.http.HttpSession getSession(boolean create) {
160: return getHttpServletRequest().getSession(create);
161: }
162:
163: public javax.servlet.http.HttpSession getSession() {
164: return getHttpServletRequest().getSession();
165: }
166:
167: public boolean isRequestedSessionIdValid() {
168: return getHttpServletRequest().isRequestedSessionIdValid();
169: }
170:
171: public boolean isRequestedSessionIdFromCookie() {
172: return getHttpServletRequest().isRequestedSessionIdFromCookie();
173: }
174:
175: public boolean isRequestedSessionIdFromURL() {
176: return getHttpServletRequest().isRequestedSessionIdFromURL();
177: }
178:
179: public boolean isRequestedSessionIdFromUrl() {
180: return getHttpServletRequest().isRequestedSessionIdFromUrl();
181: }
182: }
|