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 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.


Constructor Summary
PluginServletContextWrapper(Plugin plugin, javax.servlet.ServletContext context, ConcurrentMap<String,Object> attributes, Map<String,String> initParams)
           
 
Method Summary
 Object getAttribute(String name)
          Gets the named attribute.
 Enumeration getAttributeNames()
           
 javax.servlet.ServletContext getContext(String uripath)
           
 String getContextPath()
           
 String getInitParameter(String name)
           
 Enumeration getInitParameterNames()
           
 int getMajorVersion()
           
 String getMimeType(String file)
           
 int getMinorVersion()
           
 javax.servlet.RequestDispatcher getNamedDispatcher(String name)
           
 String getRealPath(String path)
           
 javax.servlet.RequestDispatcher getRequestDispatcher(String path)
           
 URL getResource(String path)
           
 InputStream getResourceAsStream(String path)
           
 Set getResourcePaths(String arg0)
           
 String getServerInfo()
           
 javax.servlet.Servlet getServlet(String name)
           
 String getServletContextName()
           
 Enumeration getServletNames()
           
 Enumeration getServlets()
           
 void log(Exception exception, String msg)
           
 void log(String msg)
           
 void log(String message, Throwable throwable)
           
 void removeAttribute(String name)
          Removes an attribute from the local context.
 void setAttribute(String name, Object object)
          Sets an attribute in the local attribute map, leaving the wrapped context untouched.
 
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,
                                   ConcurrentMap<String,Object> attributes,
                                   Map<String,String> initParams)
Method Detail

getAttribute

public Object getAttribute(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 Enumeration 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(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(String name,
                         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 String getInitParameter(String name)
Specified by:
getInitParameter in interface javax.servlet.ServletContext
Returns:
the init parameter from the servlet module descriptor.

getInitParameterNames

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

getResource

public URL getResource(String path)
                throws 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:
MalformedURLException

getResourceAsStream

public InputStream getResourceAsStream(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(String uripath)
Specified by:
getContext in interface javax.servlet.ServletContext
Returns:
null so that servlet plugins can't escape their box

getContextPath

public String getContextPath()

getMajorVersion

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

getMimeType

public String getMimeType(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(String name)
Specified by:
getNamedDispatcher in interface javax.servlet.ServletContext

getRealPath

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

getRequestDispatcher

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

getResourcePaths

public Set getResourcePaths(String arg0)
Specified by:
getResourcePaths in interface javax.servlet.ServletContext

getServerInfo

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

getServlet

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

getServletContextName

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

getServletNames

public Enumeration getServletNames()
Specified by:
getServletNames in interface javax.servlet.ServletContext

getServlets

public Enumeration getServlets()
Specified by:
getServlets in interface javax.servlet.ServletContext

log

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

log

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

log

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


Copyright © 2015 Atlassian. All rights reserved.