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.ServletContext;
022:
023: import org.apache.beehive.controls.api.context.ControlContainerContext;
024: import org.apache.beehive.controls.api.context.ControlThreadContext;
025:
026: /**
027: * This class is the contextual service implementation for javax.servlet.ServletContext. It
028: * acts as an intermediary between the client and the ServletContext instance held by the
029: * associated ServletBeanContext. It validates that attempt to access the ServletContext
030: * only occur during the servlet request processing lifecycle, then delegates to the underlying
031: * ServletContext instance for actual services.
032: */
033: /* package */class ServletContextService implements ServletContext {
034:
035: /* package */ServletContextService(ServletBeanContext beanContext) {
036: _beanContext = beanContext;
037: }
038:
039: /**
040: * This method retrieves the current ServletBeanContext for the service. It is capable
041: * of reassociating with the current active context, if the service instance has been
042: * serialized/deserialized.
043: */
044: final protected ServletBeanContext getServletBeanContext() {
045: if (_beanContext == null) {
046: ControlContainerContext ccc = ControlThreadContext
047: .getContext();
048: if (!(ccc instanceof ServletBeanContext))
049: throw new IllegalStateException(
050: "No ServletBeanContext available");
051:
052: _beanContext = (ServletBeanContext) ccc;
053: }
054: return _beanContext;
055: }
056:
057: final protected ServletContext getServletContext() {
058: ServletContext servletContext = getServletBeanContext()
059: .getServletContext();
060: if (servletContext == null)
061: throw new IllegalStateException(
062: "No access to ServletContext outside request processing");
063: return servletContext;
064: }
065:
066: public java.lang.Object getAttribute(java.lang.String name) {
067: return getServletContext().getAttribute(name);
068: }
069:
070: public java.util.Enumeration getAttributeNames() {
071: return getServletContext().getAttributeNames();
072: }
073:
074: public ServletContext getContext(java.lang.String uripath) {
075: return getServletContext().getContext(uripath);
076: }
077:
078: public java.lang.String getInitParameter(java.lang.String name) {
079: return getServletContext().getInitParameter(name);
080: }
081:
082: public java.util.Enumeration getInitParameterNames() {
083: return getServletContext().getInitParameterNames();
084: }
085:
086: public int getMajorVersion() {
087: return getServletContext().getMajorVersion();
088: }
089:
090: public java.lang.String getMimeType(java.lang.String file) {
091: return getServletContext().getMimeType(file);
092: }
093:
094: public int getMinorVersion() {
095: return getServletContext().getMinorVersion();
096: }
097:
098: public javax.servlet.RequestDispatcher getNamedDispatcher(
099: java.lang.String name) {
100: return getServletContext().getNamedDispatcher(name);
101: }
102:
103: public java.lang.String getRealPath(java.lang.String path) {
104: return getServletContext().getRealPath(path);
105: }
106:
107: public javax.servlet.RequestDispatcher getRequestDispatcher(
108: java.lang.String path) {
109: return getServletContext().getRequestDispatcher(path);
110: }
111:
112: public java.net.URL getResource(java.lang.String path)
113: throws java.net.MalformedURLException {
114: return getServletContext().getResource(path);
115: }
116:
117: public java.io.InputStream getResourceAsStream(java.lang.String path) {
118: return getServletContext().getResourceAsStream(path);
119: }
120:
121: public java.util.Set getResourcePaths(java.lang.String path) {
122: return getServletContext().getResourcePaths(path);
123: }
124:
125: public java.lang.String getServerInfo() {
126: return getServletContext().getServerInfo();
127: }
128:
129: public javax.servlet.Servlet getServlet(java.lang.String name)
130: throws javax.servlet.ServletException {
131: return getServletContext().getServlet(name);
132: }
133:
134: public java.lang.String getServletContextName() {
135: return getServletContext().getServletContextName();
136: }
137:
138: public java.util.Enumeration getServletNames() {
139: return getServletContext().getServletNames();
140: }
141:
142: public java.util.Enumeration getServlets() {
143: return getServletContext().getServlets();
144: }
145:
146: public void log(java.lang.String msg) {
147: getServletContext().log(msg);
148: }
149:
150: public void log(java.lang.Exception exception, java.lang.String msg) {
151: getServletContext().log(exception, msg);
152: }
153:
154: public void log(java.lang.String message,
155: java.lang.Throwable throwable) {
156: getServletContext().log(message, throwable);
157: }
158:
159: public void removeAttribute(java.lang.String name) {
160: getServletContext().removeAttribute(name);
161: }
162:
163: public void setAttribute(java.lang.String name,
164: java.lang.Object object) {
165: getServletContext().setAttribute(name, object);
166: }
167:
168: transient private ServletBeanContext _beanContext; // never access directly
169: }
|