blob: 4d8fe916a643a68bbc37b2ccb3cbabf6a8dff182 [file] [log] [blame]
/*
* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.tiles.web.util;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Set;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
/**
* Adapts a servlet config and a servlet context to become a unique servlet
* context.
*
* @version $Rev$ $Date$
*/
@SuppressWarnings("deprecation")
public class ServletContextAdapter implements ServletContext {
/**
* The root context to use.
*/
private ServletContext rootContext;
/**
* The union of init parameters of {@link ServletConfig} and
* {@link ServletContext}.
*/
private Hashtable<String, String> initParameters;
/**
* Constructor.
*
* @param config The servlet configuration object.
*/
@SuppressWarnings("unchecked")
public ServletContextAdapter(ServletConfig config) {
this.rootContext = config.getServletContext();
initParameters = new Hashtable<String, String>();
Enumeration<String> enumeration = rootContext
.getInitParameterNames();
while (enumeration.hasMoreElements()) {
String paramName = enumeration.nextElement();
initParameters.put(paramName, rootContext
.getInitParameter(paramName));
}
enumeration = config.getInitParameterNames();
while (enumeration.hasMoreElements()) {
String paramName = enumeration.nextElement();
initParameters.put(paramName, config.getInitParameter(paramName));
}
}
/** {@inheritDoc} */
public ServletContext getContext(String string) {
return rootContext.getContext(string);
}
/** {@inheritDoc} */
public int getMajorVersion() {
return rootContext.getMajorVersion();
}
/** {@inheritDoc} */
public int getMinorVersion() {
return rootContext.getMinorVersion();
}
/** {@inheritDoc} */
public String getMimeType(String string) {
return rootContext.getMimeType(string);
}
/** {@inheritDoc} */
@SuppressWarnings({ "rawtypes" })
public Set getResourcePaths(String string) {
return rootContext.getResourcePaths(string);
}
/** {@inheritDoc} */
public URL getResource(String string) throws MalformedURLException {
return rootContext.getResource(string);
}
/** {@inheritDoc} */
public InputStream getResourceAsStream(String string) {
return rootContext.getResourceAsStream(string);
}
/** {@inheritDoc} */
public RequestDispatcher getRequestDispatcher(String string) {
return rootContext.getRequestDispatcher(string);
}
/** {@inheritDoc} */
public RequestDispatcher getNamedDispatcher(String string) {
return rootContext.getNamedDispatcher(string);
}
/** {@inheritDoc} */
public Servlet getServlet(String string) throws ServletException {
return rootContext.getServlet(string);
}
/** {@inheritDoc} */
@SuppressWarnings("rawtypes")
public Enumeration getServlets() {
return rootContext.getServlets(); //To change body of implemented methods use File | Settings | File Templates.
}
/** {@inheritDoc} */
@SuppressWarnings("rawtypes")
public Enumeration getServletNames() {
return rootContext.getServletNames();
}
/** {@inheritDoc} */
public void log(String string) {
rootContext.log(string);
}
/** {@inheritDoc} */
public void log(Exception exception, String string) {
rootContext.log(exception, string);
}
/** {@inheritDoc} */
public void log(String string, Throwable throwable) {
rootContext.log(string, throwable);
}
/** {@inheritDoc} */
public String getRealPath(String string) {
return rootContext.getRealPath(string);
}
/** {@inheritDoc} */
public String getServerInfo() {
return rootContext.getServerInfo();
}
/** {@inheritDoc} */
public String getInitParameter(String string) {
return initParameters.get(string);
}
/** {@inheritDoc} */
@SuppressWarnings("rawtypes")
public Enumeration getInitParameterNames() {
return initParameters.keys();
}
/** {@inheritDoc} */
public Object getAttribute(String string) {
return rootContext.getAttribute(string);
}
/** {@inheritDoc} */
@SuppressWarnings("rawtypes")
public Enumeration getAttributeNames() {
return rootContext.getAttributeNames();
}
/** {@inheritDoc} */
public void setAttribute(String string, Object object) {
rootContext.setAttribute(string, object);
}
/** {@inheritDoc} */
public void removeAttribute(String string) {
rootContext.removeAttribute(string);
}
/** {@inheritDoc} */
public String getServletContextName() {
return rootContext.getServletContextName();
}
/** {@inheritDoc} */
public String getContextPath() {
return rootContext.getContextPath();
}
}