Class AbstractAvatarServlet

java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
com.atlassian.jira.web.servlet.AbstractAvatarServlet
All Implemented Interfaces:
Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig
Direct Known Subclasses:
ViewProjectAvatarServlet, ViewUserAvatarServlet

public abstract class AbstractAvatarServlet extends javax.servlet.http.HttpServlet
Abstract servlet to serve avatar images
Since:
v4.2
See Also:
  • Constructor Details

    • AbstractAvatarServlet

      public AbstractAvatarServlet()
  • Method Details

    • doGet

      protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException
      Overrides:
      doGet in class javax.servlet.http.HttpServlet
      Throws:
      javax.servlet.ServletException
      IOException
    • getOwnerId

      protected String getOwnerId(javax.servlet.http.HttpServletRequest request)
    • defaultDoGet

      protected void defaultDoGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String ownerId, Long avatarId, Avatar.Size size) throws IOException, javax.servlet.ServletException
      Template method that processes the GET request. Subclasses may override this method to change the avatar serving logic.
      Throws:
      IOException
      javax.servlet.ServletException
    • avatarOkForOwner

      protected boolean avatarOkForOwner(String ownerId, Avatar avatar)
    • handleOutputStreamingException

      protected static void handleOutputStreamingException(javax.servlet.http.HttpServletResponse response, boolean bytesWritten, Exception e) throws IOException, javax.servlet.ServletException
      Throws:
      IOException
      javax.servlet.ServletException
    • preprocessInput

      @Nonnull protected abstract AbstractAvatarServlet.PreprocessedInput preprocessInput(String ownerId, Long avatarId, Avatar.Size size, javax.servlet.http.HttpServletResponse response) throws IOException
      Ensures the input is valid and if validation passes returns a valid avatarId to serve. If validation fails, this method should send errors on the response and return a null avatar id.
      Parameters:
      ownerId - The owner of the avatar
      avatarId - The avatarId requested
      size - The size of requested avatar
      response - The response to send
      Returns:
      The object containing avatarId to serve to the user or object containing null avatarId if validation fails
      Throws:
      IOException - If there's an error updating the response object
    • getOwnerIdParamName

      protected abstract String getOwnerIdParamName()
      Slight hack to stay backwards compatible for project avatars via the 'pid' param. The project avatar servlet implementation can return pid here instead of ownerId.
      Returns:
      The parameter used to identify the owner in the request.
    • getAvatarManager

      protected final Optional<AvatarManager> getAvatarManager()
    • getFeatureManager

      protected final Optional<FeatureManager> getFeatureManager()
    • isFeatureEnabled

      protected boolean isFeatureEnabled(@Nonnull FeatureFlag featureFlag, boolean whenFeatureManagerNotPresent)
    • getAvatarToStream

      protected final AvatarToStream getAvatarToStream()