com.atlassian.plugin.servlet
Class PluginServletContextWrapper

java.lang.Object
  extended by com.atlassian.plugin.servlet.PluginServletContextWrapper
All Implemented Interfaces:
javax.servlet.ServletContext

public class PluginServletContextWrapper
extends java.lang.Object
implements javax.servlet.ServletContext

A wrapper around servlet context that allows plugin servlets to add attributes which will not be shared/clobbered by other plugins.


Field Summary
 
Fields inherited from interface javax.servlet.ServletContext
ORDERED_LIBS, TEMPDIR
 
Constructor Summary
PluginServletContextWrapper(Plugin plugin, javax.servlet.ServletContext context, java.util.concurrent.ConcurrentMap<java.lang.String,java.lang.Object> attributes, java.util.Map<java.lang.String,java.lang.String> initParams)
           
 
Method Summary
 javax.servlet.FilterRegistration.Dynamic addFilter(java.lang.String filterName, java.lang.Class<? extends javax.servlet.Filter> filterClass)
           
 javax.servlet.FilterRegistration.Dynamic addFilter(java.lang.String filterName, javax.servlet.Filter filter)
           
 javax.servlet.FilterRegistration.Dynamic addFilter(java.lang.String filterName, java.lang.String className)
           
 void addListener(java.lang.Class<? extends java.util.EventListener> listenerClass)
           
 void addListener(java.lang.String className)
           
<T extends java.util.EventListener>
void
addListener(T t)
           
 javax.servlet.ServletRegistration.Dynamic addServlet(java.lang.String servletName, java.lang.Class<? extends javax.servlet.Servlet> servletClass)
           
 javax.servlet.ServletRegistration.Dynamic addServlet(java.lang.String servletName, javax.servlet.Servlet servlet)
           
 javax.servlet.ServletRegistration.Dynamic addServlet(java.lang.String servletName, java.lang.String className)
           
<T extends javax.servlet.Filter>
T
createFilter(java.lang.Class<T> clazz)
           
<T extends java.util.EventListener>
T
createListener(java.lang.Class<T> clazz)
           
<T extends javax.servlet.Servlet>
T
createServlet(java.lang.Class<T> clazz)
           
 void declareRoles(java.lang.String... roleNames)
           
 java.lang.Object getAttribute(java.lang.String name)
          Gets the named attribute.
 java.util.Enumeration<java.lang.String> getAttributeNames()
           
 java.lang.ClassLoader getClassLoader()
           
 javax.servlet.ServletContext getContext(java.lang.String uripath)
           
 java.lang.String getContextPath()
           
 java.util.Set<javax.servlet.SessionTrackingMode> getDefaultSessionTrackingModes()
           
 int getEffectiveMajorVersion()
           
 int getEffectiveMinorVersion()
           
 java.util.Set<javax.servlet.SessionTrackingMode> getEffectiveSessionTrackingModes()
           
 javax.servlet.FilterRegistration getFilterRegistration(java.lang.String filterName)
           
 java.util.Map<java.lang.String,? extends javax.servlet.FilterRegistration> getFilterRegistrations()
           
 java.lang.String getInitParameter(java.lang.String name)
           
 java.util.Enumeration<java.lang.String> getInitParameterNames()
           
 javax.servlet.descriptor.JspConfigDescriptor getJspConfigDescriptor()
           
 int getMajorVersion()
           
 java.lang.String getMimeType(java.lang.String file)
           
 int getMinorVersion()
           
 javax.servlet.RequestDispatcher getNamedDispatcher(java.lang.String name)
           
 java.lang.String getRealPath(java.lang.String path)
           
 javax.servlet.RequestDispatcher getRequestDispatcher(java.lang.String path)
           
 java.net.URL getResource(java.lang.String path)
           
 java.io.InputStream getResourceAsStream(java.lang.String path)
           
 java.util.Set<java.lang.String> getResourcePaths(java.lang.String arg0)
           
 java.lang.String getServerInfo()
           
 javax.servlet.Servlet getServlet(java.lang.String name)
           
 java.lang.String getServletContextName()
           
 java.util.Enumeration<java.lang.String> getServletNames()
           
 javax.servlet.ServletRegistration getServletRegistration(java.lang.String servletName)
           
 java.util.Map<java.lang.String,? extends javax.servlet.ServletRegistration> getServletRegistrations()
           
 java.util.Enumeration<javax.servlet.Servlet> getServlets()
           
 javax.servlet.SessionCookieConfig getSessionCookieConfig()
           
 void log(java.lang.Exception exception, java.lang.String msg)
           
 void log(java.lang.String msg)
           
 void log(java.lang.String message, java.lang.Throwable throwable)
           
 void removeAttribute(java.lang.String name)
          Removes an attribute from the local context.
 void setAttribute(java.lang.String name, java.lang.Object object)
          Sets an attribute in the local attribute map, leaving the wrapped context untouched.
 boolean setInitParameter(java.lang.String name, java.lang.String value)
           
 void setSessionTrackingModes(java.util.Set<javax.servlet.SessionTrackingMode> sessionTrackingModes)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PluginServletContextWrapper

public PluginServletContextWrapper(Plugin plugin,
                                   javax.servlet.ServletContext context,
                                   java.util.concurrent.ConcurrentMap<java.lang.String,java.lang.Object> attributes,
                                   java.util.Map<java.lang.String,java.lang.String> initParams)
Method Detail

getAttribute

public java.lang.Object getAttribute(java.lang.String name)

Gets the named attribute. The attribute is first looked for in the local attribute map, if it is not found there it is looked for in the wrapped contexts attribute map. If it is not there, null is returned.

A consequence of this ordering is that servlets may, in their own context, override but not overwrite attributes from the wrapped context.

Specified by:
getAttribute in interface javax.servlet.ServletContext

getAttributeNames

public java.util.Enumeration<java.lang.String> getAttributeNames()
Specified by:
getAttributeNames in interface javax.servlet.ServletContext
Returns:
an enumeration of all the attributes from the wrapped context as well as the local attributes.

removeAttribute

public void removeAttribute(java.lang.String name)
Removes an attribute from the local context. Leaves the wrapped context completely untouched.

Specified by:
removeAttribute in interface javax.servlet.ServletContext

setAttribute

public void setAttribute(java.lang.String name,
                         java.lang.Object object)

Sets an attribute in the local attribute map, leaving the wrapped context untouched.

Servlets may use this and the lookup ordering of the getAttribute() method to effectively override the value of an attribute in the wrapped servlet context with their own value and this overridden value will only be seen in the plugins own scope.

Specified by:
setAttribute in interface javax.servlet.ServletContext

getInitParameter

public java.lang.String getInitParameter(java.lang.String name)
Specified by:
getInitParameter in interface javax.servlet.ServletContext
Returns:
the init parameter from the servlet module descriptor.

getInitParameterNames

public java.util.Enumeration<java.lang.String> getInitParameterNames()
Specified by:
getInitParameterNames in interface javax.servlet.ServletContext
Returns:
an enumeration of the init parameters from the servlet module descriptor.

getResource

public java.net.URL getResource(java.lang.String path)
                         throws java.net.MalformedURLException
Specified by:
getResource in interface javax.servlet.ServletContext
Returns:
the resource from the plugin classloader if it exists, otherwise the resource is looked up from the wrapped context and returned
Throws:
java.net.MalformedURLException

getResourceAsStream

public java.io.InputStream getResourceAsStream(java.lang.String path)
Specified by:
getResourceAsStream in interface javax.servlet.ServletContext
Returns:
the resource stream from the plugin classloader if it exists, otherwise the resource stream is attempted to be retrieved from the wrapped context

getContext

public javax.servlet.ServletContext getContext(java.lang.String uripath)
Specified by:
getContext in interface javax.servlet.ServletContext
Returns:
null so that servlet plugins can't escape their box

getContextPath

public java.lang.String getContextPath()
Specified by:
getContextPath in interface javax.servlet.ServletContext

getMajorVersion

public int getMajorVersion()
Specified by:
getMajorVersion in interface javax.servlet.ServletContext

getMimeType

public java.lang.String getMimeType(java.lang.String file)
Specified by:
getMimeType in interface javax.servlet.ServletContext

getMinorVersion

public int getMinorVersion()
Specified by:
getMinorVersion in interface javax.servlet.ServletContext

getNamedDispatcher

public javax.servlet.RequestDispatcher getNamedDispatcher(java.lang.String name)
Specified by:
getNamedDispatcher in interface javax.servlet.ServletContext

getRealPath

public java.lang.String getRealPath(java.lang.String path)
Specified by:
getRealPath in interface javax.servlet.ServletContext

getRequestDispatcher

public javax.servlet.RequestDispatcher getRequestDispatcher(java.lang.String path)
Specified by:
getRequestDispatcher in interface javax.servlet.ServletContext

getResourcePaths

public java.util.Set<java.lang.String> getResourcePaths(java.lang.String arg0)
Specified by:
getResourcePaths in interface javax.servlet.ServletContext

getServerInfo

public java.lang.String getServerInfo()
Specified by:
getServerInfo in interface javax.servlet.ServletContext

getServlet

public javax.servlet.Servlet getServlet(java.lang.String name)
                                 throws javax.servlet.ServletException
Specified by:
getServlet in interface javax.servlet.ServletContext
Throws:
javax.servlet.ServletException

getServletContextName

public java.lang.String getServletContextName()
Specified by:
getServletContextName in interface javax.servlet.ServletContext

getServletNames

public java.util.Enumeration<java.lang.String> getServletNames()
Specified by:
getServletNames in interface javax.servlet.ServletContext

getServlets

public java.util.Enumeration<javax.servlet.Servlet> getServlets()
Specified by:
getServlets in interface javax.servlet.ServletContext

log

public void log(java.lang.Exception exception,
                java.lang.String msg)
Specified by:
log in interface javax.servlet.ServletContext

log

public void log(java.lang.String message,
                java.lang.Throwable throwable)
Specified by:
log in interface javax.servlet.ServletContext

log

public void log(java.lang.String msg)
Specified by:
log in interface javax.servlet.ServletContext

setInitParameter

public boolean setInitParameter(java.lang.String name,
                                java.lang.String value)
Specified by:
setInitParameter in interface javax.servlet.ServletContext

getEffectiveMajorVersion

public int getEffectiveMajorVersion()
Specified by:
getEffectiveMajorVersion in interface javax.servlet.ServletContext

getEffectiveMinorVersion

public int getEffectiveMinorVersion()
Specified by:
getEffectiveMinorVersion in interface javax.servlet.ServletContext

getSessionCookieConfig

public javax.servlet.SessionCookieConfig getSessionCookieConfig()
Specified by:
getSessionCookieConfig in interface javax.servlet.ServletContext

setSessionTrackingModes

public void setSessionTrackingModes(java.util.Set<javax.servlet.SessionTrackingMode> sessionTrackingModes)
Specified by:
setSessionTrackingModes in interface javax.servlet.ServletContext

getDefaultSessionTrackingModes

public java.util.Set<javax.servlet.SessionTrackingMode> getDefaultSessionTrackingModes()
Specified by:
getDefaultSessionTrackingModes in interface javax.servlet.ServletContext

getEffectiveSessionTrackingModes

public java.util.Set<javax.servlet.SessionTrackingMode> getEffectiveSessionTrackingModes()
Specified by:
getEffectiveSessionTrackingModes in interface javax.servlet.ServletContext

getJspConfigDescriptor

public javax.servlet.descriptor.JspConfigDescriptor getJspConfigDescriptor()
Specified by:
getJspConfigDescriptor in interface javax.servlet.ServletContext

getClassLoader

public java.lang.ClassLoader getClassLoader()
Specified by:
getClassLoader in interface javax.servlet.ServletContext

declareRoles

public void declareRoles(java.lang.String... roleNames)
Specified by:
declareRoles in interface javax.servlet.ServletContext

addServlet

public javax.servlet.ServletRegistration.Dynamic addServlet(java.lang.String servletName,
                                                            java.lang.String className)
Specified by:
addServlet in interface javax.servlet.ServletContext

addServlet

public javax.servlet.ServletRegistration.Dynamic addServlet(java.lang.String servletName,
                                                            javax.servlet.Servlet servlet)
Specified by:
addServlet in interface javax.servlet.ServletContext

addServlet

public javax.servlet.ServletRegistration.Dynamic addServlet(java.lang.String servletName,
                                                            java.lang.Class<? extends javax.servlet.Servlet> servletClass)
Specified by:
addServlet in interface javax.servlet.ServletContext

createServlet

public <T extends javax.servlet.Servlet> T createServlet(java.lang.Class<T> clazz)
Specified by:
createServlet in interface javax.servlet.ServletContext

getServletRegistration

public javax.servlet.ServletRegistration getServletRegistration(java.lang.String servletName)
Specified by:
getServletRegistration in interface javax.servlet.ServletContext

getServletRegistrations

public java.util.Map<java.lang.String,? extends javax.servlet.ServletRegistration> getServletRegistrations()
Specified by:
getServletRegistrations in interface javax.servlet.ServletContext

addFilter

public javax.servlet.FilterRegistration.Dynamic addFilter(java.lang.String filterName,
                                                          java.lang.String className)
Specified by:
addFilter in interface javax.servlet.ServletContext

addFilter

public javax.servlet.FilterRegistration.Dynamic addFilter(java.lang.String filterName,
                                                          javax.servlet.Filter filter)
Specified by:
addFilter in interface javax.servlet.ServletContext

addFilter

public javax.servlet.FilterRegistration.Dynamic addFilter(java.lang.String filterName,
                                                          java.lang.Class<? extends javax.servlet.Filter> filterClass)
Specified by:
addFilter in interface javax.servlet.ServletContext

createFilter

public <T extends javax.servlet.Filter> T createFilter(java.lang.Class<T> clazz)
Specified by:
createFilter in interface javax.servlet.ServletContext

getFilterRegistration

public javax.servlet.FilterRegistration getFilterRegistration(java.lang.String filterName)
Specified by:
getFilterRegistration in interface javax.servlet.ServletContext

getFilterRegistrations

public java.util.Map<java.lang.String,? extends javax.servlet.FilterRegistration> getFilterRegistrations()
Specified by:
getFilterRegistrations in interface javax.servlet.ServletContext

addListener

public void addListener(java.lang.String className)
Specified by:
addListener in interface javax.servlet.ServletContext

addListener

public <T extends java.util.EventListener> void addListener(T t)
Specified by:
addListener in interface javax.servlet.ServletContext

addListener

public void addListener(java.lang.Class<? extends java.util.EventListener> listenerClass)
Specified by:
addListener in interface javax.servlet.ServletContext

createListener

public <T extends java.util.EventListener> T createListener(java.lang.Class<T> clazz)
Specified by:
createListener in interface javax.servlet.ServletContext


Copyright © 2013 Atlassian. All Rights Reserved.