01: /***************************************************************
02: * This file is part of the [fleXive](R) project.
03: *
04: * Copyright (c) 1999-2007
05: * UCS - unique computing solutions gmbh (http://www.ucs.at)
06: * All rights reserved
07: *
08: * The [fleXive](R) project is free software; you can redistribute
09: * it and/or modify it under the terms of the GNU General Public
10: * License as published by the Free Software Foundation;
11: * either version 2 of the License, or (at your option) any
12: * later version.
13: *
14: * The GNU General Public License can be found at
15: * http://www.gnu.org/copyleft/gpl.html.
16: * A copy is found in the textfile GPL.txt and important notices to the
17: * license from the author are found in LICENSE.txt distributed with
18: * these libraries.
19: *
20: * This library is distributed in the hope that it will be useful,
21: * but WITHOUT ANY WARRANTY; without even the implied warranty of
22: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23: * GNU General Public License for more details.
24: *
25: * For further information about UCS - unique computing solutions gmbh,
26: * please see the company website: http://www.ucs.at
27: *
28: * For further information about [fleXive](R), please see the
29: * project website: http://www.flexive.org
30: *
31: *
32: * This copyright notice MUST APPEAR in all copies of the file!
33: ***************************************************************/package com.flexive.war.webdav;
34:
35: import javax.servlet.http.HttpServletRequest;
36: import javax.servlet.http.HttpServletResponse;
37: import java.io.IOException;
38:
39: /**
40: * Mkcol operation.
41: * <p/>
42: * MKCOL creates a new collection resource at the location specified by the Request-URI.
43: * If the resource identified by the Request-URI is non-null then the MKCOL MUST fail.
44: * During MKCOL processing, a server MUST make the Request-URI a member of its parent collection, unless the
45: * Request-URI is "/". If no such ancestor exists, the method MUST fail.<br>
46: * When the MKCOL operation creates a new collection resource, all ancestors MUST already exist, or the method MUST
47: * fail with a 409 (Conflict) status code. For example, if a request to create collection /a/b/c/d/ is made, and
48: * neither /a/b/ nor /a/b/c/ exists, the request must fail.<br>
49: * When MKCOL is invoked without a request body, the newly created collection SHOULD have no members.
50: * A MKCOL request message may contain a message body. The behavior of a MKCOL request when the body is present
51: * is limited to creating collections, members of a collection, bodies of members and properties on the collections
52: * or members. If the server receives a MKCOL request entity type it does not support or understand it
53: * MUST respond with a 415 (Unsupported Media Type) status code. The exact behavior of MKCOL for various
54: * request media types is undefined in this document, and will be specified in separate documents.
55: * <br><br>
56: * Possible return codes:
57: * 201 (Created) - The collection or structured resource was created in its entirety.<br>
58: * 403 (Forbidden) - This indicates at least one of two conditions: 1) the server does not allow the creation of
59: * collections at the given location in its namespace, or 2) the parent collection of the Request-URI exists but
60: * cannot accept members.<br>
61: * 405 (Method Not Allowed) - MKCOL can only be executed on a deleted/non-existent resource.<br>
62: * 409 (Conflict) - A collection cannot be made at the Request-URI until one or more intermediate collections have
63: * been created.<br>
64: * 415 (Unsupported Media Type)- The server does not support the request type of the body.<br>
65: * 507 (Insufficient Storage) - The resource does not have sufficient space to record the state of the resource
66: * after the execution of this method.<br>
67: * 423 (Locked) - The resource is locked
68: *
69: * @author Gregor Schober (gregor.schober@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
70: * @version $Rev: 1 $
71: */
72: class OperationMkcol extends Operation {
73:
74: public OperationMkcol(HttpServletRequest req,
75: HttpServletResponse resp, boolean readonly) {
76: super (req, resp, readonly);
77: }
78:
79: void writeResponse() throws IOException {
80: int resultCode = FxWebDavServlet.getDavContext()
81: .createCollection(request, path);
82: if (resultCode == FxWebDavStatus.SC_CREATED) {
83: response.setStatus(FxWebDavStatus.SC_CREATED);
84: } else {
85: response.sendError(resultCode,
86: "Failed to create the collection");
87: }
88: }
89: }
|