/*
* COMSAT
* Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.fibers.servlet;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.EventListener;
import java.util.Map;
import java.util.Set;
import javax.servlet.AsyncContext;
import javax.servlet.Filter;
import javax.servlet.FilterRegistration;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import javax.servlet.ServletRegistration.Dynamic;
import javax.servlet.SessionCookieConfig;
import javax.servlet.SessionTrackingMode;
import javax.servlet.descriptor.JspConfigDescriptor;
/**
*
* @author eitan
*/
class FiberServletContext implements ServletContext {
private final ServletContext sc;
private final ThreadLocal<AsyncContext> ac;
public FiberServletContext(ServletContext sc, ThreadLocal<AsyncContext> ac) {
this.sc = sc;
this.ac = ac;
}
@Override
public RequestDispatcher getRequestDispatcher(String path) {
return new FiberRequestDispatcher(path, ac.get());
}
@Override
public ServletContext getContext(String uripath) {
return new FiberServletContext(sc.getContext(uripath), ac);
}
@Override
public RequestDispatcher getNamedDispatcher(String name) {
throw new UnsupportedOperationException("Not yet implemented");
// return new RequestDispatcher(sc.getNamedDispatcher(name).;
}
@Override
public String getContextPath() {
return sc.getContextPath();
}
@Override
public int getMajorVersion() {
return sc.getMajorVersion();
}
@Override
public int getMinorVersion() {
return sc.getMinorVersion();
}
@Override
public int getEffectiveMajorVersion() {
return sc.getEffectiveMajorVersion();
}
@Override
public int getEffectiveMinorVersion() {
return sc.getEffectiveMinorVersion();
}
@Override
public String getMimeType(String file) {
return sc.getMimeType(file);
}
@Override
public Set<String> getResourcePaths(String path) {
return sc.getResourcePaths(path);
}
@Override
public URL getResource(String path) throws MalformedURLException {
return sc.getResource(path);
}
@Override
public InputStream getResourceAsStream(String path) {
return sc.getResourceAsStream(path);
}
@Override
@Deprecated
@SuppressWarnings("deprecation")
public Servlet getServlet(String name) throws ServletException {
return sc.getServlet(name);
}
@Override
@Deprecated
@SuppressWarnings("deprecation")
public Enumeration<Servlet> getServlets() {
return sc.getServlets();
}
@Override
@Deprecated
@SuppressWarnings("deprecation")
public Enumeration<String> getServletNames() {
return sc.getServletNames();
}
@Override
public void log(String msg) {
sc.log(msg);
}
@Override
@Deprecated
@SuppressWarnings("deprecation")
public void log(Exception exception, String msg) {
sc.log(exception, msg);
}
@Override
public void log(String message, Throwable throwable) {
sc.log(message, throwable);
}
@Override
public String getRealPath(String path) {
return sc.getRealPath(path);
}
@Override
public String getServerInfo() {
return sc.getServerInfo();
}
@Override
public String getInitParameter(String name) {
return sc.getInitParameter(name);
}
@Override
public Enumeration<String> getInitParameterNames() {
return sc.getInitParameterNames();
}
@Override
public boolean setInitParameter(String name, String value) {
return sc.setInitParameter(name, value);
}
@Override
public Object getAttribute(String name) {
return sc.getAttribute(name);
}
@Override
public Enumeration<String> getAttributeNames() {
return sc.getAttributeNames();
}
@Override
public void setAttribute(String name, Object object) {
sc.setAttribute(name, object);
}
@Override
public void removeAttribute(String name) {
sc.removeAttribute(name);
}
@Override
public String getServletContextName() {
return sc.getServletContextName();
}
@Override
public Dynamic addServlet(String servletName, String className) {
return sc.addServlet(servletName, className);
}
@Override
public Dynamic addServlet(String servletName, Servlet servlet) {
return sc.addServlet(servletName, servlet);
}
@Override
public Dynamic addServlet(String servletName, Class<? extends Servlet> servletClass) {
return sc.addServlet(servletName, servletClass);
}
@Override
public <T extends Servlet> T createServlet(Class<T> clazz) throws ServletException {
return sc.createServlet(clazz);
}
@Override
public ServletRegistration getServletRegistration(String servletName) {
return sc.getServletRegistration(servletName);
}
@Override
public Map<String, ? extends ServletRegistration> getServletRegistrations() {
return sc.getServletRegistrations();
}
@Override
public FilterRegistration.Dynamic addFilter(String filterName, String className) {
return sc.addFilter(filterName, className);
}
@Override
public FilterRegistration.Dynamic addFilter(String filterName, Filter filter) {
return sc.addFilter(filterName, filter);
}
@Override
public FilterRegistration.Dynamic addFilter(String filterName, Class<? extends Filter> filterClass) {
return sc.addFilter(filterName, filterClass);
}
@Override
public <T extends Filter> T createFilter(Class<T> clazz) throws ServletException {
return sc.createFilter(clazz);
}
@Override
public FilterRegistration getFilterRegistration(String filterName) {
return sc.getFilterRegistration(filterName);
}
@Override
public Map<String, ? extends FilterRegistration> getFilterRegistrations() {
return sc.getFilterRegistrations();
}
@Override
public SessionCookieConfig getSessionCookieConfig() {
return sc.getSessionCookieConfig();
}
@Override
public void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes) {
sc.setSessionTrackingModes(sessionTrackingModes);
}
@Override
public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
return sc.getDefaultSessionTrackingModes();
}
@Override
public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
return sc.getEffectiveSessionTrackingModes();
}
@Override
public void addListener(String className) {
sc.addListener(className);
}
@Override
public <T extends EventListener> void addListener(T t) {
sc.addListener(t);
}
@Override
public void addListener(Class<? extends EventListener> listenerClass) {
sc.addListener(listenerClass);
}
@Override
public <T extends EventListener> T createListener(Class<T> clazz) throws ServletException {
return sc.createListener(clazz);
}
@Override
public JspConfigDescriptor getJspConfigDescriptor() {
return sc.getJspConfigDescriptor();
}
@Override
public ClassLoader getClassLoader() {
return sc.getClassLoader();
}
@Override
public void declareRoles(String... roleNames) {
sc.declareRoles(roleNames);
}
@Override
public int hashCode() {
return sc.hashCode();
}
@Override
@SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
public boolean equals(Object obj) {
return sc.equals(obj);
}
@Override
public String toString() {
return sc.toString();
}
}