001: /*
002: * RimfaxeServletContext.java
003: *
004: *
005: * Copyright (c) 2003 Rimfaxe ApS (www.rimfaxe.com).
006: * All rights reserved.
007: *
008: * This package is written by Lars Andersen <lars@rimfaxe.com>
009: * and licensed by Rimfaxe ApS.
010: *
011: * Redistribution and use in source and binary forms, with or without
012: * modification, are permitted provided that the following conditions
013: * are met:
014: *
015: * 1. Redistributions of source code must retain the above copyright
016: * notice, this list of conditions and the following disclaimer.
017: *
018: * 2. Redistributions in binary form must reproduce the above copyright
019: * notice, this list of conditions and the following disclaimer in
020: * the documentation and/or other materials provided with the
021: * distribution.
022: *
023: * 3. The end-user documentation included with the redistribution, if
024: * any, must include the following acknowlegement:
025: * "This product includes software developed by Rimfaxe ApS
026: (www.rimfaxe.com)"
027: * Alternately, this acknowlegement may appear in the software itself,
028: * if and wherever such third-party acknowlegements normally appear.
029: *
030: * 4. The names "Rimfaxe", "Rimfaxe Software", "Lars Andersen" and
031: * "Rimfaxe WebServer" must not be used to endorse or promote products
032: * derived from this software without prior written permission. For written
033: * permission, please contact info@rimfaxe.com
034: *
035: * 5. Products derived from this software may not be called "Rimfaxe"
036: * nor may "Rimfaxe" appear in their names without prior written
037: * permission of the Rimfaxe ApS.
038: *
039: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
040: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
041: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
042: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
043: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
044: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
045: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
046: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
047: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
048: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
049: * SUCH DAMAGE.
050: *
051: */
052:
053: package com.rimfaxe.webserver.servletapi;
054:
055: import com.rimfaxe.util.RimfaxeVector;
056: import java.util.*;
057:
058: /**
059: *
060: * @author Lars Andersen
061: */
062: public class RimfaxeServletContext implements
063: javax.servlet.ServletContext {
064: com.rimfaxe.webserver.WebContext webcontext;
065: com.rimfaxe.webserver.VirtualHost virtualhost;
066:
067: Hashtable attributes = new Hashtable();
068: Hashtable params = new Hashtable();
069:
070: /** Creates a new instance of RimfaxeServletContext */
071: public RimfaxeServletContext(
072: com.rimfaxe.webserver.WebContext webcontext,
073: com.rimfaxe.webserver.VirtualHost vh) {
074: this .webcontext = webcontext;
075: this .virtualhost = vh;
076: }
077:
078: public Object getAttribute(String str) {
079: //System.out.println("RimfaxeServletContext,getAttribute("+str+")");
080: return attributes.get(str);
081: }
082:
083: public java.util.Enumeration getAttributeNames() {
084: return attributes.keys();
085: }
086:
087: public javax.servlet.ServletContext getContext(String str) {
088: javax.servlet.ServletContext ctx = null;
089:
090: ctx = (javax.servlet.ServletContext) virtualhost
091: .getServletContext(str);
092: return ctx;
093: }
094:
095: public String getInitParameter(String str) {
096: return "" + params.get(str);
097: }
098:
099: public java.util.Enumeration getInitParameterNames() {
100: return params.keys();
101: }
102:
103: public int getMajorVersion() {
104: return 2;
105: }
106:
107: public String getMimeType(String str) {
108: String ext = "unknown";
109: //System.out.println("Get mime type for ["+str+"]");
110: StringTokenizer tkz = new StringTokenizer(str, ".", false);
111: while (tkz.hasMoreTokens()) {
112: ext = tkz.nextToken();
113: }
114:
115: //System.out.println("Get mime type extension ["+ext+"]");
116: return webcontext.getMimeType(ext);
117: }
118:
119: public int getMinorVersion() {
120: return 3;
121: }
122:
123: public javax.servlet.RequestDispatcher getNamedDispatcher(String str) {
124: return RimfaxeRequestDispatcher.getNamedDispatcher(str,
125: virtualhost, webcontext);
126: }
127:
128: public String getRealPath(String str) {
129: return webcontext.getRoot() + "/" + str;
130: }
131:
132: public javax.servlet.RequestDispatcher getRequestDispatcher(
133: String str) {
134: return RimfaxeRequestDispatcher.getRequestDispatcher(str,
135: virtualhost, webcontext);
136: }
137:
138: public java.net.URL getResource(String str)
139: throws java.net.MalformedURLException {
140: // OBS OBS ikke god med WAR!!!!
141: return new java.net.URL("file://" + webcontext.getRoot() + str);
142:
143: }
144:
145: public java.io.InputStream getResourceAsStream(String str) {
146: byte[] buf = webcontext.getResourceByteArray(str);
147: return (java.io.InputStream) new java.io.ByteArrayInputStream(
148: buf);
149: }
150:
151: public java.util.Set getResourcePaths(String str) {
152: HashSet hs = new HashSet();
153: // OBS
154: hs.add(str);
155: return hs;
156: }
157:
158: public String getServerInfo() {
159: return "Rimfaxe Web Server";
160: }
161:
162: public javax.servlet.Servlet getServlet(String str) {
163: //deprecated
164: return null;
165: }
166:
167: public String getServletContextName() {
168: //deprecated
169: return null;
170: }
171:
172: public java.util.Enumeration getServletNames() {
173: Vector vec = new Vector();
174: return vec.elements();
175: }
176:
177: public java.util.Enumeration getServlets() {
178: Vector vec = new Vector();
179: return vec.elements();
180: }
181:
182: public void log(String str) {
183: System.out.println(str);
184: }
185:
186: public void log(Exception exception, String str) {
187: }
188:
189: public void log(String str, Throwable throwable) {
190: }
191:
192: public void removeAttribute(String str) {
193: attributes.remove(str);
194: }
195:
196: public void setAttribute(String str, Object obj) {
197: attributes.put(str, obj);
198: }
199:
200: }
|