| /* |
| * 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.felix.http.base.internal.whiteboard; |
| |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.net.URL; |
| import java.util.Enumeration; |
| import java.util.EventListener; |
| import java.util.Map; |
| import java.util.Set; |
| |
| 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.ServletRequestAttributeListener; |
| import javax.servlet.ServletRequestListener; |
| import javax.servlet.SessionCookieConfig; |
| import javax.servlet.SessionTrackingMode; |
| import javax.servlet.descriptor.JspConfigDescriptor; |
| import javax.servlet.http.HttpServletRequest; |
| import javax.servlet.http.HttpServletResponse; |
| import javax.servlet.http.HttpSessionAttributeListener; |
| import javax.servlet.http.HttpSessionListener; |
| |
| import org.apache.felix.http.base.internal.HttpConfig; |
| import org.apache.felix.http.base.internal.context.ExtServletContext; |
| import org.apache.felix.http.base.internal.registry.PerContextHandlerRegistry; |
| import org.apache.felix.http.base.internal.util.MimeTypes; |
| import org.osgi.framework.Bundle; |
| import org.osgi.framework.wiring.BundleWiring; |
| import org.osgi.service.http.context.ServletContextHelper; |
| |
| /** |
| * This servlet context implementation represents the per |
| * bundle specific part of a servlet context backed by a |
| * servlet context helper. |
| * |
| */ |
| public class PerBundleServletContextImpl implements ExtServletContext { |
| |
| private final Bundle bundle; |
| private final ServletContext delegatee; |
| private final ServletContextHelper contextHelper; |
| private final PerContextHandlerRegistry handlerRegistry; |
| |
| public PerBundleServletContextImpl(final Bundle bundle, |
| final ServletContext sharedContext, |
| final ServletContextHelper delegatee, |
| final PerContextHandlerRegistry handlerRegistry) |
| { |
| this.bundle = bundle; |
| this.delegatee = sharedContext; |
| this.contextHelper = delegatee; |
| this.handlerRegistry = handlerRegistry; |
| } |
| |
| @Override |
| public boolean handleSecurity(final HttpServletRequest req, |
| final HttpServletResponse res) |
| throws IOException |
| { |
| return this.contextHelper.handleSecurity(req, res); |
| } |
| |
| @Override |
| public void finishSecurity(HttpServletRequest req, HttpServletResponse res) |
| { |
| this.contextHelper.finishSecurity(req, res); |
| } |
| |
| @Override |
| public HttpSessionListener getHttpSessionListener() |
| { |
| return this.handlerRegistry.getEventListenerRegistry(); |
| } |
| |
| @Override |
| public HttpSessionAttributeListener getHttpSessionAttributeListener() |
| { |
| return this.handlerRegistry.getEventListenerRegistry(); |
| } |
| |
| @Override |
| public ServletRequestListener getServletRequestListener() |
| { |
| return this.handlerRegistry.getEventListenerRegistry(); |
| } |
| |
| @Override |
| public ServletRequestAttributeListener getServletRequestAttributeListener() |
| { |
| return this.handlerRegistry.getEventListenerRegistry(); |
| } |
| |
| @Override |
| public HttpConfig getConfig() |
| { |
| return this.handlerRegistry.getConfig(); |
| } |
| |
| @Override |
| public ClassLoader getClassLoader() |
| { |
| return this.bundle.adapt(BundleWiring.class).getClassLoader(); |
| } |
| |
| /** |
| * @see javax.servlet.ServletContext#getResource(java.lang.String) |
| */ |
| @Override |
| public URL getResource(final String path) |
| { |
| return this.contextHelper.getResource(path); |
| } |
| |
| @Override |
| public String getMimeType(final String name) |
| { |
| String type = this.contextHelper.getMimeType(name); |
| if (type != null) { |
| return type; |
| } |
| |
| return MimeTypes.get().getByFile(name); |
| } |
| |
| @Override |
| public String getRealPath(final String path) |
| { |
| return this.contextHelper.getRealPath(path); |
| } |
| |
| @Override |
| public Set<String> getResourcePaths(final String path) |
| { |
| return this.contextHelper.getResourcePaths(path); |
| } |
| |
| @Override |
| public String getContextPath() |
| { |
| return delegatee.getContextPath(); |
| } |
| |
| @Override |
| public ServletContext getContext(String uripath) |
| { |
| return delegatee.getContext(uripath); |
| } |
| |
| @Override |
| public int getMajorVersion() |
| { |
| return delegatee.getMajorVersion(); |
| } |
| |
| @Override |
| public int getMinorVersion() |
| { |
| return delegatee.getMinorVersion(); |
| } |
| |
| @Override |
| public int getEffectiveMajorVersion() |
| { |
| return delegatee.getEffectiveMajorVersion(); |
| } |
| |
| @Override |
| public int getEffectiveMinorVersion() |
| { |
| return delegatee.getEffectiveMinorVersion(); |
| } |
| |
| @Override |
| public InputStream getResourceAsStream(final String path) |
| { |
| final URL res = getResource(path); |
| if (res != null) |
| { |
| try |
| { |
| return res.openStream(); |
| } |
| catch (IOException e) |
| { |
| // Do nothing |
| } |
| } |
| return null; |
| } |
| |
| @Override |
| public RequestDispatcher getRequestDispatcher(final String path) |
| { |
| return delegatee.getRequestDispatcher(path); |
| } |
| |
| @Override |
| public RequestDispatcher getNamedDispatcher(String name) |
| { |
| return delegatee.getNamedDispatcher(name); |
| } |
| |
| @SuppressWarnings("deprecation") |
| @Override |
| public Servlet getServlet(String name) throws ServletException |
| { |
| return delegatee.getServlet(name); |
| } |
| |
| @SuppressWarnings("deprecation") |
| @Override |
| public Enumeration<Servlet> getServlets() |
| { |
| return delegatee.getServlets(); |
| } |
| |
| @SuppressWarnings("deprecation") |
| @Override |
| public Enumeration<String> getServletNames() |
| { |
| return delegatee.getServletNames(); |
| } |
| |
| @Override |
| public void log(String msg) |
| { |
| delegatee.log(msg); |
| } |
| |
| @SuppressWarnings("deprecation") |
| @Override |
| public void log(Exception exception, String msg) |
| { |
| delegatee.log(exception, msg); |
| } |
| |
| @Override |
| public void log(String message, Throwable throwable) |
| { |
| delegatee.log(message, throwable); |
| } |
| |
| @Override |
| public String getServerInfo() |
| { |
| return delegatee.getServerInfo(); |
| } |
| |
| @Override |
| public String getInitParameter(String name) |
| { |
| return delegatee.getInitParameter(name); |
| } |
| |
| @Override |
| public Enumeration<String> getInitParameterNames() |
| { |
| return delegatee.getInitParameterNames(); |
| } |
| |
| @Override |
| public boolean setInitParameter(String name, String value) |
| { |
| return delegatee.setInitParameter(name, value); |
| } |
| |
| @Override |
| public Object getAttribute(String name) |
| { |
| return delegatee.getAttribute(name); |
| } |
| |
| @Override |
| public Enumeration<String> getAttributeNames() |
| { |
| return delegatee.getAttributeNames(); |
| } |
| |
| @Override |
| public void setAttribute(String name, Object object) |
| { |
| delegatee.setAttribute(name, object); |
| } |
| |
| @Override |
| public void removeAttribute(String name) |
| { |
| delegatee.removeAttribute(name); |
| } |
| |
| @Override |
| public String getServletContextName() |
| { |
| return delegatee.getServletContextName(); |
| } |
| |
| @Override |
| public Dynamic addServlet(String servletName, String className) |
| { |
| return delegatee.addServlet(servletName, className); |
| } |
| |
| @Override |
| public Dynamic addServlet(String servletName, Servlet servlet) |
| { |
| return delegatee.addServlet(servletName, servlet); |
| } |
| |
| @Override |
| public Dynamic addServlet(String servletName, |
| Class<? extends Servlet> servletClass) |
| { |
| return delegatee.addServlet(servletName, servletClass); |
| } |
| |
| @Override |
| public <T extends Servlet> T createServlet(Class<T> clazz) |
| throws ServletException |
| { |
| return delegatee.createServlet(clazz); |
| } |
| |
| @Override |
| public ServletRegistration getServletRegistration(String servletName) |
| { |
| return delegatee.getServletRegistration(servletName); |
| } |
| |
| @Override |
| public Map<String, ? extends ServletRegistration> getServletRegistrations() |
| { |
| return delegatee.getServletRegistrations(); |
| } |
| |
| @Override |
| public javax.servlet.FilterRegistration.Dynamic addFilter( |
| String filterName, String className) |
| { |
| return delegatee.addFilter(filterName, className); |
| } |
| |
| @Override |
| public javax.servlet.FilterRegistration.Dynamic addFilter( |
| String filterName, Filter filter) |
| { |
| return delegatee.addFilter(filterName, filter); |
| } |
| |
| @Override |
| public javax.servlet.FilterRegistration.Dynamic addFilter( |
| String filterName, Class<? extends Filter> filterClass) |
| { |
| return delegatee.addFilter(filterName, filterClass); |
| } |
| |
| @Override |
| public <T extends Filter> T createFilter(Class<T> clazz) |
| throws ServletException |
| { |
| return delegatee.createFilter(clazz); |
| } |
| |
| @Override |
| public FilterRegistration getFilterRegistration(String filterName) |
| { |
| return delegatee.getFilterRegistration(filterName); |
| } |
| |
| @Override |
| public Map<String, ? extends FilterRegistration> getFilterRegistrations() |
| { |
| return delegatee.getFilterRegistrations(); |
| } |
| |
| @Override |
| public SessionCookieConfig getSessionCookieConfig() |
| { |
| return delegatee.getSessionCookieConfig(); |
| } |
| |
| @Override |
| public void setSessionTrackingModes( |
| Set<SessionTrackingMode> sessionTrackingModes) |
| { |
| delegatee.setSessionTrackingModes(sessionTrackingModes); |
| } |
| |
| @Override |
| public Set<SessionTrackingMode> getDefaultSessionTrackingModes() |
| { |
| return delegatee.getDefaultSessionTrackingModes(); |
| } |
| |
| @Override |
| public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() |
| { |
| return delegatee.getEffectiveSessionTrackingModes(); |
| } |
| |
| @Override |
| public void addListener(String className) |
| { |
| delegatee.addListener(className); |
| } |
| |
| @Override |
| public <T extends EventListener> void addListener(T t) |
| { |
| delegatee.addListener(t); |
| } |
| |
| @Override |
| public void addListener(Class<? extends EventListener> listenerClass) |
| { |
| delegatee.addListener(listenerClass); |
| } |
| |
| @Override |
| public <T extends EventListener> T createListener(Class<T> clazz) |
| throws ServletException |
| { |
| return delegatee.createListener(clazz); |
| } |
| |
| @Override |
| public JspConfigDescriptor getJspConfigDescriptor() |
| { |
| return delegatee.getJspConfigDescriptor(); |
| } |
| |
| @Override |
| public void declareRoles(String... roleNames) |
| { |
| delegatee.declareRoles(roleNames); |
| } |
| |
| @Override |
| public String getVirtualServerName() |
| { |
| return delegatee.getVirtualServerName(); |
| } |
| } |