org.apache.tiles.web.util.ServletContextAdapter Maven / Gradle / Ivy
/*
* $Id: ServletContextAdapter.java 674918 2008-07-08 19:10:14Z apetrelli $
*
* 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: 674918 $ $Date: 2008-07-08 21:10:14 +0200 (mar, 08 lug 2008) $
*/
@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 initParameters;
/**
* Constructor.
*
* @param config The servlet configuration object.
*/
@SuppressWarnings("unchecked")
public ServletContextAdapter(ServletConfig config) {
this.rootContext = config.getServletContext();
initParameters = new Hashtable();
Enumeration 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("unchecked")
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({ "unchecked" })
public Enumeration getServlets() {
return rootContext.getServlets(); //To change body of implemented methods use File | Settings | File Templates.
}
/** {@inheritDoc} */
@SuppressWarnings({ "unchecked" })
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("unchecked")
public Enumeration getInitParameterNames() {
return initParameters.keys();
}
/** {@inheritDoc} */
public Object getAttribute(String string) {
return rootContext.getAttribute(string);
}
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
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();
}
/**
* Composes an enumeration into a single one.
*/
@SuppressWarnings("unchecked")
class CompositeEnumeration implements Enumeration {
/**
* The first enumeration to consider.
*/
private Enumeration first;
/**
* The second enumeration to consider.
*/
private Enumeration second;
/**
* Constructor.
*
* @param first The first enumeration to consider.
* @param second The second enumeration to consider.
*/
public CompositeEnumeration(Enumeration first, Enumeration second) {
this.first = first;
this.second = second;
}
/** {@inheritDoc} */
public boolean hasMoreElements() {
return first.hasMoreElements() || second.hasMoreElements();
}
/** {@inheritDoc} */
public Object nextElement() {
if (first.hasMoreElements()) {
return first.nextElement();
}
return second.nextElement();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy