com.ecyrd.jspwiki.attachment
Class AttachmentServlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by com.ecyrd.jspwiki.dav.WebdavServlet
              extended by com.ecyrd.jspwiki.attachment.AttachmentServlet
All Implemented Interfaces:
Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class AttachmentServlet
extends WebdavServlet

This is a simple file upload servlet customized for JSPWiki. It receives a mime/multipart POST message, as sent by an Attachment page, stores it temporarily, figures out what WikiName to use to store it, checks for previously existing versions.

This servlet does not worry about authentication; we leave that to the container, or a previous servlet that chains to us.

Since:
1.9.45.
Author:
Erik Bunn, Janne Jalkanen
See Also:
Serialized Form

Field Summary
protected static long DEFAULT_EXPIRY
          Default expiry period is 1 day
static String HDR_NAME
           
static String HDR_VERSION
           
 
Fields inherited from class com.ecyrd.jspwiki.dav.WebdavServlet
SC_FAILED_DEPENDENCY, SC_INSUFFICIENT_STORAGE, SC_LOCKED, SC_MULTISTATUS, SC_PROCESSING, SC_UNPROCESSABLE
 
Constructor Summary
AttachmentServlet()
           
 
Method Summary
 void doGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          Serves a GET with two parameters: 'wikiname' specifying the wikiname of the attachment, 'version' specifying the version indicator.
protected  void doOptions(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
           
 void doPost(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          Grabs mime/multipart data and stores it into the temporary area.
 void doPropFind(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
           
 void doPut(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
           
protected  boolean executeUpload(WikiContext context, InputStream data, String filename, String errorPage, String parentPage, long contentLength)
           
 void init(javax.servlet.ServletConfig config)
          Initializes the servlet from WikiEngine properties.
protected  String upload(javax.servlet.http.HttpServletRequest req)
          Uploads a specific mime multipart input set, intercepts exceptions.
 
Methods inherited from class com.ecyrd.jspwiki.dav.WebdavServlet
doCopy, doLock, doMkCol, doMove, doPropPatch, doUnlock, service
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doTrace, getLastModified, service
 
Methods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HDR_VERSION

public static final String HDR_VERSION
See Also:
Constant Field Values

HDR_NAME

public static final String HDR_NAME
See Also:
Constant Field Values

DEFAULT_EXPIRY

protected static final long DEFAULT_EXPIRY
Default expiry period is 1 day

See Also:
Constant Field Values
Constructor Detail

AttachmentServlet

public AttachmentServlet()
Method Detail

init

public void init(javax.servlet.ServletConfig config)
          throws javax.servlet.ServletException
Initializes the servlet from WikiEngine properties.

Specified by:
init in interface javax.servlet.Servlet
Overrides:
init in class javax.servlet.GenericServlet
Throws:
javax.servlet.ServletException

doPropFind

public void doPropFind(javax.servlet.http.HttpServletRequest req,
                       javax.servlet.http.HttpServletResponse res)
                throws IOException,
                       javax.servlet.ServletException
Overrides:
doPropFind in class WebdavServlet
Throws:
IOException
javax.servlet.ServletException

doOptions

protected void doOptions(javax.servlet.http.HttpServletRequest req,
                         javax.servlet.http.HttpServletResponse res)
Overrides:
doOptions in class javax.servlet.http.HttpServlet

doGet

public void doGet(javax.servlet.http.HttpServletRequest req,
                  javax.servlet.http.HttpServletResponse res)
           throws IOException,
                  javax.servlet.ServletException
Serves a GET with two parameters: 'wikiname' specifying the wikiname of the attachment, 'version' specifying the version indicator.

Overrides:
doGet in class javax.servlet.http.HttpServlet
Throws:
IOException
javax.servlet.ServletException

doPost

public void doPost(javax.servlet.http.HttpServletRequest req,
                   javax.servlet.http.HttpServletResponse res)
            throws IOException,
                   javax.servlet.ServletException
Grabs mime/multipart data and stores it into the temporary area. Uses other parameters to determine which name to store as.

The input to this servlet is generated by an HTML FORM with two parts. The first, named 'page', is the WikiName identifier for the parent file. The second, named 'content', is the binary content of the file.

Overrides:
doPost in class javax.servlet.http.HttpServlet
Throws:
IOException
javax.servlet.ServletException

doPut

public void doPut(javax.servlet.http.HttpServletRequest req,
                  javax.servlet.http.HttpServletResponse res)
           throws IOException,
                  javax.servlet.ServletException
Overrides:
doPut in class javax.servlet.http.HttpServlet
Throws:
IOException
javax.servlet.ServletException

upload

protected String upload(javax.servlet.http.HttpServletRequest req)
                 throws RedirectException,
                        IOException
Uploads a specific mime multipart input set, intercepts exceptions.

Returns:
The page to which we should go next.
Throws:
RedirectException
IOException

executeUpload

protected boolean executeUpload(WikiContext context,
                                InputStream data,
                                String filename,
                                String errorPage,
                                String parentPage,
                                long contentLength)
                         throws RedirectException,
                                IOException,
                                ProviderException
Parameters:
context - the wiki context
data - the input stream data
filename - the name of the file to upload
errorPage - the place to which you want to get a redirection
parentPage - the page to which the file should be attached
Returns:
true if upload results in the creation of a new page; false otherwise
Throws:
RedirectException
IOException
ProviderException