remm 01/07/23 23:43:46
Modified: src/webdav/server/org/apache/slide/webdav/method
DeleteMethod.java
Log:
- Delete now extends AbstractMultistatusResponseMethod. That avoids
a lot of code duplication.
Revision Changes Path
1.10 +11 -128
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/DeleteMethod.java
Index: DeleteMethod.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/DeleteMethod.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DeleteMethod.java 2001/07/19 11:10:59 1.9
+++ DeleteMethod.java 2001/07/24 06:43:46 1.10
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/DeleteMethod.java,v
1.9 2001/07/19 11:10:59 juergen Exp $
- * $Revision: 1.9 $
- * $Date: 2001/07/19 11:10:59 $
+ * $Header:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/DeleteMethod.java,v
1.10 2001/07/24 06:43:46 remm Exp $
+ * $Revision: 1.10 $
+ * $Date: 2001/07/24 06:43:46 $
*
* ====================================================================
*
@@ -83,7 +83,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
*/
-public class DeleteMethod extends WebdavMethod {
+public class DeleteMethod extends AbstractMultistatusResponseMethod {
// ----------------------------------------------------- Instance Variables
@@ -143,7 +143,7 @@
// If it's not a collection, we don't want to give a 207,
// because it's silly, and it confuses many clients (such as
// MS Web Folders).
- if(isCollection) {
+ if (isCollection) {
String errorMessage = generateErrorMessage(dme);
// Write it on the servlet writer
resp.setStatus(WebdavStatus.SC_MULTI_STATUS);
@@ -156,31 +156,11 @@
(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
}
} else {
- Enumeration nestedExceptionsList =
- dme.enumerateExceptions();
-
- SlideException ex =
- (SlideException) nestedExceptionsList.nextElement();
- try {
- throw ex;
- } catch(ObjectNotFoundException e) {
- resp.setStatus(WebdavStatus.SC_NOT_FOUND);
- } catch(AccessDeniedException e) {
- resp.setStatus(WebdavStatus.SC_FORBIDDEN);
- } catch(ObjectAlreadyExistsException e) {
- resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
- } catch(ServiceAccessException e) {
- resp.setStatus(WebdavStatus.SC_BAD_GATEWAY);
- } catch(LinkedObjectNotFoundException e) {
- resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
- } catch(RevisionNotFoundException e) {
- resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
- } catch(ObjectLockedException e) {
- resp.setStatus(WebdavStatus.SC_LOCKED);
- } catch(SlideException e) {
- resp.setStatus(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
- }
-
+ // Returning 207 on non-collection requests is generally
+ // considered bad. So let's not do it, since this way
+ // makes clients generally behave better.
+ resp.setStatus(
+
getErrorCode((SlideException)dme.enumerateExceptions().nextElement()));
}
//
// make sure the transaction is aborted
@@ -190,103 +170,6 @@
}
}
-
- /**
- * Generate an XML error message.
- *
- * @param macroException Nested exception
- * @return String XML message
- */
- protected String generateErrorMessage
- (DeleteMacroException macroException) {
-
- XMLPrinter errorMessage = new XMLPrinter();
-
- errorMessage.writeXMLHeader();
- errorMessage.writeElement("d", "DAV", "multistatus",
- XMLPrinter.OPENING);
-
- Enumeration nestedExceptionsList =
- macroException.enumerateExceptions();
-
- while (nestedExceptionsList.hasMoreElements()) {
-
- errorMessage.writeElement("d", "DAV", "response",
- XMLPrinter.OPENING);
-
- SlideException ex =
- (SlideException) nestedExceptionsList.nextElement();
-
- String status = new String();
-
- try {
- throw ex;
- } catch(ObjectNotFoundException e) {
- generateStatusText(errorMessage, e.getObjectUri(),
- WebdavStatus.SC_NOT_FOUND);
- } catch(AccessDeniedException e) {
- generateStatusText(errorMessage, e.getObjectUri(),
- WebdavStatus.SC_FORBIDDEN);
- } catch(ObjectAlreadyExistsException e) {
- generateStatusText(errorMessage, e.getObjectUri(),
- WebdavStatus.SC_INTERNAL_SERVER_ERROR);
- } catch(ServiceAccessException e) {
- generateStatusText(errorMessage, e.getMessage(),
- WebdavStatus.SC_BAD_GATEWAY);
- } catch(LinkedObjectNotFoundException e) {
- generateStatusText(errorMessage, e.getTargetUri(),
- WebdavStatus.SC_INTERNAL_SERVER_ERROR);
- } catch(RevisionNotFoundException e) {
- generateStatusText(errorMessage, e.getObjectUri(),
- WebdavStatus.SC_INTERNAL_SERVER_ERROR);
- } catch(ObjectLockedException e) {
- generateStatusText(errorMessage, e.getObjectUri(),
- WebdavStatus.SC_LOCKED);
- } catch(SlideException e) {
- generateStatusText(errorMessage, e.getMessage(),
- WebdavStatus.SC_INTERNAL_SERVER_ERROR);
- }
-
- errorMessage.writeElement("d", "DAV", "response",
- XMLPrinter.CLOSING);
-
- }
-
- errorMessage.writeElement("d", "DAV", "multistatus",
- XMLPrinter.CLOSING);
-
- return errorMessage.toString();
-
- }
-
- /**
- * Generate status text.
- *
- * @param printer XML Printer
- * @param href Uri of the object
- * @param statusCode HTTP status code of the error
- */
- protected void generateStatusText(XMLPrinter printer, String href,
- int statusCode) {
- printer.writeElement("d", "href", XMLPrinter.OPENING);
- printer.writeText(URLEncode(href));
- printer.writeElement("d", "href", XMLPrinter.CLOSING);
- printer.writeElement("d", "status", XMLPrinter.OPENING);
- printer.writeText("HTTP/1.1 " + statusCode + " "
- + WebdavStatus.getStatusText(statusCode));
- printer.writeElement("d", "status", XMLPrinter.CLOSING);
- }
-
-
-
- /**
- * Returns true
- */
- protected boolean methodNeedsTransactionSupport() {
- return true;
- }
-
-
-
+
}